Skip to content

Commit

Permalink
test(middleware-user-agent): add case for appId
Browse files Browse the repository at this point in the history
  • Loading branch information
siddsriv committed Sep 30, 2024
1 parent b47f801 commit a067a37
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 102 deletions.
20 changes: 20 additions & 0 deletions packages/middleware-user-agent/src/user-agent-middleware.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ describe("userAgentMiddleware", () => {
],
customUserAgent: [["custom_ua/abc"]],
runtime,
userAgentAppId: async () => undefined,
});
const handler = middleware(mockNextHandler, { userAgent: [["cfg/retry-mode", "standard"]] });
await handler({ input: {}, request: new HttpRequest({ headers: {} }) });
Expand All @@ -50,6 +51,23 @@ describe("userAgentMiddleware", () => {
);
});

it("should include appId in user agent when provided", async () => {
const middleware = userAgentMiddleware({
defaultUserAgentProvider: async () => [
["default_agent", "1.0.0"],
["aws-sdk-js", "1.0.0"],
],
customUserAgent: [["custom_ua/abc"]],
runtime: "node",
userAgentAppId: async () => "test-app-id",
});
const handler = middleware(mockNextHandler, { userAgent: [["cfg/retry-mode", "standard"]] });
await handler({ input: {}, request: new HttpRequest({ headers: {} }) });
expect(mockNextHandler.mock.calls.length).toEqual(1);
const sdkUserAgent = mockNextHandler.mock.calls[0][0].request.headers[USER_AGENT];
expect(sdkUserAgent).toEqual(expect.stringContaining("app/test-app-id"));
});

describe("should sanitize the SDK user agent string", () => {
const cases: { ua: UserAgentPair; expected: string }[] = [
{ ua: ["/name", "1.0.0"], expected: "name/1.0.0" },
Expand All @@ -72,6 +90,7 @@ describe("userAgentMiddleware", () => {
const middleware = userAgentMiddleware({
defaultUserAgentProvider: async () => [ua],
runtime,
userAgentAppId: async () => undefined,
});
const handler = middleware(mockNextHandler, {});
await handler({ input: {}, request: new HttpRequest({ headers: {} }) });
Expand All @@ -84,6 +103,7 @@ describe("userAgentMiddleware", () => {
const middleware = userAgentMiddleware({
defaultUserAgentProvider: async () => [ua],
runtime,
userAgentAppId: async () => undefined,
});

// internal variant
Expand Down
6 changes: 5 additions & 1 deletion packages/middleware-user-agent/src/user-agent-middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,12 @@ export const userAgentMiddleware =
if (!HttpRequest.isInstance(request)) return next(args);
const { headers } = request;
const userAgent = context?.userAgent?.map(escapeUserAgent) || [];
const defaultUserAgent = (await options.defaultUserAgentProvider(options)).map(escapeUserAgent);
let defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);
const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || [];
const appId = await options.userAgentAppId();
if (appId) {
defaultUserAgent.push(escapeUserAgent([`app/${appId}`]));
}
const prefix = getUserAgentPrefix();

// Set value to AWS-specific user agent header
Expand Down
101 changes: 0 additions & 101 deletions packages/util-user-agent-node/src/index.spec.ts

This file was deleted.

0 comments on commit a067a37

Please sign in to comment.