Skip to content

Commit 1e937d1

Browse files
committed
chore: do not skip checksums for x-amz-checksum-algorithm header
1 parent af65c67 commit 1e937d1

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

packages/middleware-flexible-checksums/src/flexibleChecksumsMiddleware.spec.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,39 @@ describe(flexibleChecksumsMiddleware.name, () => {
174174
expect(stringHasher).toHaveBeenCalledWith(mockChecksumAlgorithmFunction, mockRequest.body);
175175
expect(mockBase64Encoder).toHaveBeenCalledWith(mockRawChecksum);
176176
});
177+
178+
it.each(["x-amz-checksum-algorithm", "X-AMZ-CHECKSUM-ALGORITHM"])(
179+
"even if '%s' header is present",
180+
async (headerName) => {
181+
const mockRawChecksum = Buffer.from(mockChecksum);
182+
const mockBase64Encoder = vi.fn().mockReturnValue(mockChecksum);
183+
vi.mocked(stringHasher).mockResolvedValue(mockRawChecksum);
184+
vi.mocked(hasHeader).mockReturnValue(false);
185+
186+
const handler = flexibleChecksumsMiddleware(
187+
{ ...mockConfig, base64Encoder: mockBase64Encoder },
188+
mockMiddlewareConfig
189+
)(mockNext, {});
190+
const mockHeadersWithAlgoHeader = { ...mockHeaders, [headerName]: "mockHeaderValue" };
191+
const mockArgsWithAlgoHeader = {
192+
...mockArgs,
193+
request: { ...mockRequest, headers: mockHeadersWithAlgoHeader },
194+
};
195+
await handler(mockArgsWithAlgoHeader);
196+
197+
expect(hasHeader).toHaveBeenCalledTimes(1);
198+
expect(mockNext).toHaveBeenCalledWith({
199+
...mockArgs,
200+
request: {
201+
...mockRequest,
202+
headers: { ...mockHeadersWithAlgoHeader, [mockChecksumLocationName]: mockChecksum },
203+
},
204+
});
205+
expect(hasHeader).toHaveBeenCalledWith(mockChecksumLocationName, mockHeadersWithAlgoHeader);
206+
expect(stringHasher).toHaveBeenCalledWith(mockChecksumAlgorithmFunction, mockRequest.body);
207+
expect(mockBase64Encoder).toHaveBeenCalledWith(mockRawChecksum);
208+
}
209+
);
177210
});
178211

179212
describe("set feature", () => {

packages/middleware-flexible-checksums/src/flexibleChecksumsMiddleware.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ export const flexibleChecksumsMiddleware =
5757
return next(args);
5858
}
5959

60-
for (const header of Object.keys(args.request.headers)) {
61-
if (header.toLowerCase().startsWith("x-amz-checksum-")) {
60+
for (const originalHeader of Object.keys(args.request.headers)) {
61+
const header = originalHeader.toLowerCase();
62+
if (header.startsWith("x-amz-checksum-") && header !== "x-amz-checksum-algorithm") {
6263
return next(args);
6364
}
6465
}

0 commit comments

Comments
 (0)