diff --git a/packages/credential-provider-http/src/fromHttp/fromHttp.spec.ts b/packages/credential-provider-http/src/fromHttp/fromHttp.spec.ts index f88c6e0ffd2c6..903bb9c12d968 100644 --- a/packages/credential-provider-http/src/fromHttp/fromHttp.spec.ts +++ b/packages/credential-provider-http/src/fromHttp/fromHttp.spec.ts @@ -25,7 +25,7 @@ const mockHandle = jest.fn().mockResolvedValue({ response: new HttpResponse({ statusCode: 200, headers: { - "Content-Type": "application/json", + "content-type": "application/json", }, body: Readable.from([""]), }), diff --git a/packages/credential-provider-http/src/fromHttp/requestHelpers.spec.ts b/packages/credential-provider-http/src/fromHttp/requestHelpers.spec.ts index ddb1d4b069d17..df2f52cc07191 100644 --- a/packages/credential-provider-http/src/fromHttp/requestHelpers.spec.ts +++ b/packages/credential-provider-http/src/fromHttp/requestHelpers.spec.ts @@ -17,7 +17,7 @@ describe(getCredentials.name, () => { const response = new HttpResponse({ statusCode: 200, headers: { - "Content-Type": "application/json", + "content-type": "application/json", }, body: Readable.from(JSON.stringify(data)), }); @@ -34,7 +34,7 @@ describe(getCredentials.name, () => { const response = new HttpResponse({ statusCode: 400, headers: { - "Content-Type": "application/json", + "content-type": "application/json", }, body: Readable.from( JSON.stringify({ @@ -57,7 +57,7 @@ describe(getCredentials.name, () => { const response = new HttpResponse({ statusCode: 500, headers: { - "Content-Type": "json", + "content-type": "json", }, body: Readable.from(JSON.stringify({})), }); diff --git a/packages/middleware-eventstream/src/eventStreamHeaderMiddleware.ts b/packages/middleware-eventstream/src/eventStreamHeaderMiddleware.ts index 6e52508d839da..1ffe2a36ee541 100644 --- a/packages/middleware-eventstream/src/eventStreamHeaderMiddleware.ts +++ b/packages/middleware-eventstream/src/eventStreamHeaderMiddleware.ts @@ -5,7 +5,7 @@ export const eventStreamHeaderMiddleware: BuildMiddleware = (next) => if (!HttpRequest.isInstance(request)) return next(args); request.headers = { ...request.headers, - "Content-Type": "application/vnd.amazon.eventstream", + "content-type": "application/vnd.amazon.eventstream", "x-amz-content-sha256": "STREAMING-AWS4-HMAC-SHA256-EVENTS", }; return next({ diff --git a/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts b/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts index 8bafcb49fe091..2216bdda63bc9 100644 --- a/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts +++ b/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts @@ -20,7 +20,7 @@ describe("middleware-eventstream", () => { requireRequestsFrom(client).toMatch({ headers: { - "Content-Type": "application/vnd.amazon.eventstream", + "content-type": "application/vnd.amazon.eventstream", "x-amz-content-sha256": "STREAMING-AWS4-HMAC-SHA256-EVENTS", }, }); @@ -51,7 +51,7 @@ describe("middleware-eventstream", () => { requireRequestsFrom(client).toMatch({ headers: { - "Content-Type": "application/vnd.amazon.eventstream", + "content-type": "application/vnd.amazon.eventstream", "x-amz-content-sha256": "STREAMING-AWS4-HMAC-SHA256-EVENTS", }, }); @@ -83,7 +83,7 @@ describe("middleware-eventstream", () => { requireRequestsFrom(client).toMatch({ headers: { - "Content-Type": "application/vnd.amazon.eventstream", + "content-type": "application/vnd.amazon.eventstream", "x-amz-content-sha256": "STREAMING-AWS4-HMAC-SHA256-EVENTS", }, }); diff --git a/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts b/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts index af595d18996f1..1e01f09cffd9d 100644 --- a/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts +++ b/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts @@ -12,7 +12,7 @@ describe("middleware-sdk-transcribe-streaming", () => { requireRequestsFrom(client).toMatch({ headers: { - "Content-Type": /undefined/, + "content-type": /undefined/, host: "transcribestreaming.us-west-2.amazonaws.com:8443", }, query: { diff --git a/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts b/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts index 0472fc1f1efee..fe4658023d324 100644 --- a/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts +++ b/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts @@ -38,7 +38,7 @@ describe(websocketEndpointMiddleware.name, () => { mw(next as any, {} as any)({ request, input: {} }); }); - it("should remove content-type and sha256 hash header", (done) => { + it("should remove content-type and sha256 hash header without transferring them to query parameters", (done) => { const request = new HttpRequest({ headers: { "content-type": "application/vnd.amazon.eventstream", @@ -50,21 +50,22 @@ describe(websocketEndpointMiddleware.name, () => { const next = (args: BuildHandlerArguments) => { expect(HttpRequest.isInstance(args.request)).toBeTruthy(); const processed = args.request as HttpRequest; - expect(processed.headers["content-type"]).toBeUndefined(); - expect(processed.headers["Content-Type"]).toBeUndefined(); - expect(processed.headers["x-amz-content-sha256"]).toBeUndefined(); - expect(processed.headers["X-Amz-Content-Sha256"]).toBeUndefined(); + const queryKeys = Object.keys(processed.query).map((key) => key.toLowerCase()); + expect(queryKeys).not.toContain("content-type"); + expect(queryKeys).not.toContain("x-amz-content-sha256"); done(); }; const mw = websocketEndpointMiddleware(config, handlerOption); mw(next as any, {} as any)({ request, input: {} }); }); - it("should contains host header after adjustment", (done) => { + it("should contain only a host header after adjustment", (done) => { const request = new HttpRequest({}); const next = (args: BuildHandlerArguments) => { expect(HttpRequest.isInstance(args.request)).toBeTruthy(); const processed = args.request as HttpRequest; + const headerKeys = Object.keys(processed.headers).map((key) => key.toLowerCase()); + expect(headerKeys).toEqual(["host"]); expect(processed.headers["host"]).toBeDefined(); done(); }; diff --git a/packages/middleware-websocket/src/middleware-websocket-endpoint.ts b/packages/middleware-websocket/src/middleware-websocket-endpoint.ts index ed36f4a1ef321..af5b168d173fc 100644 --- a/packages/middleware-websocket/src/middleware-websocket-endpoint.ts +++ b/packages/middleware-websocket/src/middleware-websocket-endpoint.ts @@ -37,7 +37,7 @@ export const websocketEndpointMiddleware = // 'Content-Type' and 'x-amz-content-sha256' headers are normally set for // event stream, but WebSocket doesn't require it. // See: 'eventStreamHeaderMiddleware' in @aws-sdk/middleware-eventstream - delete headers["Content-Type"]; + delete headers["content-type"]; delete headers["x-amz-content-sha256"]; for (const name of Object.keys(headers)) { diff --git a/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts b/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts index 2c4b888ca4c5f..7155b92c4979d 100644 --- a/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts +++ b/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts @@ -21,7 +21,7 @@ describe("middleware-websocket", () => { path: "/start-face-liveness-session-websocket", headers: { host: "streaming-rekognition.us-west-2.amazonaws.com", - "Content-Type": /^undefined$/, + "content-type": /^undefined$/, "x-amz-content-sha256": /^undefined$/, "user-agent": /^aws-sdk-js/, }, diff --git a/packages/s3-request-presigner/src/presigner.spec.ts b/packages/s3-request-presigner/src/presigner.spec.ts index 016d873f211e4..73220f9015f65 100644 --- a/packages/s3-request-presigner/src/presigner.spec.ts +++ b/packages/s3-request-presigner/src/presigner.spec.ts @@ -71,7 +71,7 @@ describe("s3 presigner", () => { ...minimalRequest, headers: { ...minimalRequest.headers, - "Content-Type": "application/octet-stream", + "content-type": "application/octet-stream", }, }; const signed = await signer.presign(requestWithContentTypeHeader, presigningOptions);