Skip to content

Commit 2dbf69e

Browse files
committed
chore(middleware-flexible-checksums): remove ResponseChecksumValidation
This reverts commit ba24558. The ResponseChecksumValidation should be consumed in request middleware.
1 parent ea0bbab commit 2dbf69e

File tree

3 files changed

+8
-51
lines changed

3 files changed

+8
-51
lines changed

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@ export interface PreviouslyResolved {
3737
*/
3838
requestChecksumCalculation: Provider<string>;
3939

40-
/**
41-
* Determines when a checksum will be calculated for response payloads
42-
*/
43-
responseChecksumValidation: Provider<string>;
44-
4540
/**
4641
* A constructor for a class implementing the {@link Hash} interface that computes SHA1 hashes.
4742
* @internal

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

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { HttpRequest } from "@smithy/protocol-http";
22
import { DeserializeHandlerArguments } from "@smithy/types";
33

44
import { PreviouslyResolved } from "./configuration";
5-
import { ChecksumAlgorithm, ResponseChecksumValidation } from "./constants";
5+
import { ChecksumAlgorithm } from "./constants";
66
import { flexibleChecksumsResponseMiddleware } from "./flexibleChecksumsResponseMiddleware";
77
import { getChecksumLocationName } from "./getChecksumLocationName";
88
import { FlexibleChecksumsMiddlewareConfig } from "./getFlexibleChecksumsPlugin";
@@ -23,9 +23,7 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
2323
commandName: "mockCommandName",
2424
};
2525

26-
const mockConfig = {
27-
responseChecksumValidation: () => Promise.resolve(ResponseChecksumValidation.WHEN_REQUIRED),
28-
} as PreviouslyResolved;
26+
const mockConfig = {} as PreviouslyResolved;
2927
const mockRequestValidationModeMember = "ChecksumEnabled";
3028
const mockResponseAlgorithms = [ChecksumAlgorithm.CRC32, ChecksumAlgorithm.CRC32C];
3129
const mockMiddlewareConfig = {
@@ -67,7 +65,6 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
6765
const handler = flexibleChecksumsResponseMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, mockContext);
6866
await handler(mockArgs);
6967
expect(validateChecksumFromResponse).not.toHaveBeenCalled();
70-
expect(mockNext).toHaveBeenCalledWith(mockArgs);
7168
});
7269

7370
describe("response checksum", () => {
@@ -77,16 +74,12 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
7774
const handler = flexibleChecksumsResponseMiddleware(mockConfig, mockMwConfig)(mockNext, mockContext);
7875
await handler(mockArgs);
7976
expect(validateChecksumFromResponse).not.toHaveBeenCalled();
80-
expect(mockNext).toHaveBeenCalledWith(mockArgs);
8177
});
8278

8379
it("if requestValidationModeMember is not enabled in input", async () => {
8480
const handler = flexibleChecksumsResponseMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, mockContext);
85-
86-
const mockArgsWithoutEnabled = { ...mockArgs, input: {} };
87-
await handler(mockArgsWithoutEnabled);
81+
await handler({ ...mockArgs, input: {} });
8882
expect(validateChecksumFromResponse).not.toHaveBeenCalled();
89-
expect(mockNext).toHaveBeenCalledWith(mockArgsWithoutEnabled);
9083
});
9184

9285
it("if checksum is for S3 whole-object multipart GET", async () => {
@@ -99,39 +92,19 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
9992
expect(isChecksumWithPartNumber).toHaveBeenCalledTimes(1);
10093
expect(isChecksumWithPartNumber).toHaveBeenCalledWith(mockChecksum);
10194
expect(validateChecksumFromResponse).not.toHaveBeenCalled();
102-
expect(mockNext).toHaveBeenCalledWith(mockArgs);
10395
});
10496
});
10597
});
10698

10799
describe("validates checksum from response header", () => {
108-
it("if requestValidationModeMember is enabled in input", async () => {
100+
it("generic case", async () => {
109101
const handler = flexibleChecksumsResponseMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, mockContext);
110102

111103
await handler(mockArgs);
112104
expect(validateChecksumFromResponse).toHaveBeenCalledWith(mockResult.response, {
113105
config: mockConfig,
114106
responseAlgorithms: mockResponseAlgorithms,
115107
});
116-
expect(mockNext).toHaveBeenCalledWith(mockArgs);
117-
});
118-
119-
it(`if requestValidationModeMember is not enabled in input, but responseChecksumValidation returns ${ResponseChecksumValidation.WHEN_SUPPORTED}`, async () => {
120-
const mockConfigWithResponseChecksumValidationSupported = {
121-
...mockConfig,
122-
responseChecksumValidation: () => Promise.resolve(ResponseChecksumValidation.WHEN_SUPPORTED),
123-
};
124-
const handler = flexibleChecksumsResponseMiddleware(
125-
mockConfigWithResponseChecksumValidationSupported,
126-
mockMiddlewareConfig
127-
)(mockNext, mockContext);
128-
129-
await handler({ ...mockArgs, input: {} });
130-
expect(validateChecksumFromResponse).toHaveBeenCalledWith(mockResult.response, {
131-
config: mockConfigWithResponseChecksumValidationSupported,
132-
responseAlgorithms: mockResponseAlgorithms,
133-
});
134-
expect(mockNext).toHaveBeenCalledWith(mockArgs);
135108
});
136109

137110
it("if checksum is for S3 GET without part number", async () => {
@@ -147,7 +120,6 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
147120
config: mockConfig,
148121
responseAlgorithms: mockResponseAlgorithms,
149122
});
150-
expect(mockNext).toHaveBeenCalledWith(mockArgs);
151123
});
152124
});
153125
});

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from "@smithy/types";
1111

1212
import { PreviouslyResolved } from "./configuration";
13-
import { ChecksumAlgorithm, ResponseChecksumValidation } from "./constants";
13+
import { ChecksumAlgorithm } from "./constants";
1414
import { getChecksumAlgorithmListForResponse } from "./getChecksumAlgorithmListForResponse";
1515
import { getChecksumLocationName } from "./getChecksumLocationName";
1616
import { isChecksumWithPartNumber } from "./isChecksumWithPartNumber";
@@ -63,24 +63,14 @@ export const flexibleChecksumsResponseMiddleware =
6363
}
6464

6565
const input = args.input;
66-
const { requestValidationModeMember, responseAlgorithms } = middlewareConfig;
67-
const responseChecksumValidation = await config.responseChecksumValidation();
68-
69-
const isResponseChecksumValidationNeeded =
70-
requestValidationModeMember &&
71-
(input[requestValidationModeMember] === "ENABLED" ||
72-
responseChecksumValidation === ResponseChecksumValidation.WHEN_SUPPORTED);
73-
74-
if (isResponseChecksumValidationNeeded) {
75-
input[requestValidationModeMember] = "ENABLED";
76-
}
77-
7866
const result = await next(args);
7967

8068
const response = result.response as HttpResponse;
8169
let collectedStream: Uint8Array | undefined = undefined;
8270

83-
if (isResponseChecksumValidationNeeded) {
71+
const { requestValidationModeMember, responseAlgorithms } = middlewareConfig;
72+
// @ts-ignore Element implicitly has an 'any' type for input[requestValidationModeMember]
73+
if (requestValidationModeMember && input[requestValidationModeMember] === "ENABLED") {
8474
const { clientName, commandName } = context;
8575
const isS3WholeObjectMultipartGetResponseChecksum =
8676
clientName === "S3Client" &&

0 commit comments

Comments
 (0)