Skip to content

Commit 6d8eb0b

Browse files
authored
chore(middleware-flexible-checksums): call stringHasher from flexibleChecksumsMiddleware (#3363)
* chore: call stringHasher from flexibleChecksumsMiddleware * test: call stringHasher from flexibleChecksumsMiddleware * test: move mockBase64Encoder to where needed
1 parent 99235b4 commit 6d8eb0b

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

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

+15-9
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ import { BuildHandlerArguments } from "@aws-sdk/types";
44
import { PreviouslyResolved } from "./configuration";
55
import { ChecksumAlgorithm } from "./constants";
66
import { flexibleChecksumsMiddleware } from "./flexibleChecksumsMiddleware";
7-
import { getChecksum } from "./getChecksum";
87
import { getChecksumAlgorithmForRequest } from "./getChecksumAlgorithmForRequest";
98
import { getChecksumLocationName } from "./getChecksumLocationName";
109
import { hasHeader } from "./hasHeader";
1110
import { isStreaming } from "./isStreaming";
1211
import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction";
12+
import { stringHasher } from "./stringHasher";
1313
import { validateChecksumFromResponse } from "./validateChecksumFromResponse";
1414

1515
jest.mock("@aws-sdk/protocol-http");
16-
jest.mock("./getChecksum");
1716
jest.mock("./getChecksumAlgorithmForRequest");
1817
jest.mock("./getChecksumLocationName");
1918
jest.mock("./hasHeader");
2019
jest.mock("./isStreaming");
21-
jest.mock("./validateChecksumFromResponse");
2220
jest.mock("./selectChecksumAlgorithmFunction");
21+
jest.mock("./stringHasher");
22+
jest.mock("./validateChecksumFromResponse");
2323

2424
describe(flexibleChecksumsMiddleware.name, () => {
2525
const mockNext = jest.fn();
@@ -42,10 +42,9 @@ describe(flexibleChecksumsMiddleware.name, () => {
4242
mockNext.mockResolvedValueOnce(mockResult);
4343
const { isInstance } = HttpRequest;
4444
(isInstance as unknown as jest.Mock).mockReturnValue(true);
45-
(getChecksum as jest.Mock).mockReturnValue(mockChecksum);
4645
(getChecksumAlgorithmForRequest as jest.Mock).mockReturnValue(ChecksumAlgorithm.MD5);
4746
(getChecksumLocationName as jest.Mock).mockReturnValue(mockChecksumLocationName);
48-
(hasHeader as jest.Mock).mockReturnValue(false);
47+
(hasHeader as jest.Mock).mockReturnValue(true);
4948
(isStreaming as jest.Mock).mockReturnValue(false);
5049
(selectChecksumAlgorithmFunction as jest.Mock).mockReturnValue(mockChecksumAlgorithmFunction);
5150
});
@@ -67,7 +66,6 @@ describe(flexibleChecksumsMiddleware.name, () => {
6766
describe("request checksum", () => {
6867
afterEach(() => {
6968
expect(getChecksumAlgorithmForRequest).toHaveBeenCalledTimes(1);
70-
expect(getChecksum).not.toHaveBeenCalled();
7169
});
7270

7371
it("if checksumAlgorithm is not defined", async () => {
@@ -86,7 +84,6 @@ describe(flexibleChecksumsMiddleware.name, () => {
8684
...mockArgs,
8785
request: { ...mockRequest, headers: mockHeadersWithChecksumHeader },
8886
};
89-
(hasHeader as jest.Mock).mockReturnValue(true);
9087
await handler(mockArgsWithChecksumHeader);
9188
expect(getChecksumLocationName).toHaveBeenCalledWith(ChecksumAlgorithm.MD5);
9289
expect(selectChecksumAlgorithmFunction).toHaveBeenCalledWith(ChecksumAlgorithm.MD5, mockConfig);
@@ -168,7 +165,15 @@ describe(flexibleChecksumsMiddleware.name, () => {
168165
});
169166

170167
it("for non-streaming body", async () => {
171-
const handler = flexibleChecksumsMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, {});
168+
const mockRawChecksum = Buffer.from(mockChecksum);
169+
const mockBase64Encoder = jest.fn().mockReturnValue(mockChecksum);
170+
(stringHasher as jest.Mock).mockResolvedValue(mockRawChecksum);
171+
(hasHeader as jest.Mock).mockReturnValue(false);
172+
173+
const handler = flexibleChecksumsMiddleware(
174+
{ ...mockConfig, base64Encoder: mockBase64Encoder },
175+
mockMiddlewareConfig
176+
)(mockNext, {});
172177
await handler(mockArgs);
173178
expect(hasHeader).toHaveBeenCalledTimes(1);
174179
expect(mockNext).toHaveBeenCalledWith({
@@ -179,7 +184,8 @@ describe(flexibleChecksumsMiddleware.name, () => {
179184
},
180185
});
181186
expect(hasHeader).toHaveBeenCalledWith(mockChecksumLocationName, mockHeaders);
182-
expect(getChecksum).toHaveBeenCalledTimes(1);
187+
expect(stringHasher).toHaveBeenCalledWith(mockChecksumAlgorithmFunction, mockRequest.body);
188+
expect(mockBase64Encoder).toHaveBeenCalledWith(mockRawChecksum);
183189
});
184190
});
185191

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import {
88
} from "@aws-sdk/types";
99

1010
import { PreviouslyResolved } from "./configuration";
11-
import { getChecksum } from "./getChecksum";
1211
import { getChecksumAlgorithmForRequest } from "./getChecksumAlgorithmForRequest";
1312
import { getChecksumLocationName } from "./getChecksumLocationName";
1413
import { FlexibleChecksumsMiddlewareConfig } from "./getFlexibleChecksumsPlugin";
1514
import { hasHeader } from "./hasHeader";
1615
import { isStreaming } from "./isStreaming";
1716
import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction";
17+
import { stringHasher } from "./stringHasher";
1818
import { validateChecksumFromResponse } from "./validateChecksumFromResponse";
1919

2020
export const flexibleChecksumsMiddleware =
@@ -59,10 +59,10 @@ export const flexibleChecksumsMiddleware =
5959
};
6060
delete updatedHeaders["content-length"];
6161
} else if (!hasHeader(checksumLocationName, headers)) {
62-
const checksum = await getChecksum(requestBody, { streamHasher, checksumAlgorithmFn, base64Encoder });
62+
const rawChecksum = await stringHasher(checksumAlgorithmFn, requestBody);
6363
updatedHeaders = {
6464
...headers,
65-
[checksumLocationName]: checksum,
65+
[checksumLocationName]: base64Encoder(rawChecksum),
6666
};
6767
}
6868
}

0 commit comments

Comments
 (0)