From 68fc7580765cdb0b4b39a6a6d3ea259ed2a01980 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Sat, 21 Oct 2023 11:17:03 +0200 Subject: [PATCH] chore(commons): update Powertools UA middleware detection (#1762) * chore(commons): fix double ua detection * chore(commons): fix unit test --- .../commons/src/awsSdk/userAgentMiddleware.ts | 25 +++++++++++++------ packages/commons/tests/unit/awsSdk.test.ts | 4 ++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/packages/commons/src/awsSdk/userAgentMiddleware.ts b/packages/commons/src/awsSdk/userAgentMiddleware.ts index 5ed76d1f1e..4081bc8955 100644 --- a/packages/commons/src/awsSdk/userAgentMiddleware.ts +++ b/packages/commons/src/awsSdk/userAgentMiddleware.ts @@ -30,14 +30,25 @@ const customUserAgentMiddleware = (feature: string) => { }; }; +/** + * @internal + * Checks if the middleware stack already has the Powertools UA middleware + */ +const hasPowertools = (middlewareStack: string[]): boolean => { + let found = false; + for (const middleware of middlewareStack) { + if (middleware.includes('addPowertoolsToUserAgent')) { + found = true; + } + } + + return found; +}; + const addUserAgentMiddleware = (client: unknown, feature: string): void => { try { if (isSdkClient(client)) { - if ( - client.middlewareStack - .identify() - .includes('addPowertoolsToUserAgent: POWERTOOLS,USER_AGENT') - ) { + if (hasPowertools(client.middlewareStack.identify())) { return; } client.middlewareStack.addRelativeTo( @@ -49,8 +60,8 @@ const addUserAgentMiddleware = (client: unknown, feature: string): void => { `The client provided does not match the expected interface` ); } - } catch (e) { - console.warn('Failed to add user agent middleware', e); + } catch (error) { + console.warn('Failed to add user agent middleware', error); } }; diff --git a/packages/commons/tests/unit/awsSdk.test.ts b/packages/commons/tests/unit/awsSdk.test.ts index fd02efd9ab..4ec4a75b99 100644 --- a/packages/commons/tests/unit/awsSdk.test.ts +++ b/packages/commons/tests/unit/awsSdk.test.ts @@ -30,7 +30,9 @@ describe('Helpers: awsSdk', () => { // Prepare const client = { middlewareStack: { - identify: () => 'addPowertoolsToUserAgent: POWERTOOLS,USER_AGENT', + identify: () => [ + 'addPowertoolsToUserAgent: after getUserAgentMiddleware', + ], addRelativeTo: jest.fn(), }, send: jest.fn(),