Skip to content

Commit d7c329a

Browse files
committed
chore: add feature flags for RequestChecksumCalculation and ResponseChecksumValidation
1 parent cc3e793 commit d7c329a

File tree

4 files changed

+47
-1
lines changed

4 files changed

+47
-1
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
import { setFeature } from "@aws-sdk/core";
12
import { afterEach, describe, expect, test as it, vi } from "vitest";
23

34
import { PreviouslyResolved } from "./configuration";
45
import { ResponseChecksumValidation } from "./constants";
56
import { flexibleChecksumsInputMiddleware } from "./flexibleChecksumsInputMiddleware";
67

8+
vi.mock("@aws-sdk/core");
9+
710
describe(flexibleChecksumsInputMiddleware.name, () => {
811
const mockNext = vi.fn();
912
const mockMiddlewareConfig = {
@@ -49,4 +52,18 @@ describe(flexibleChecksumsInputMiddleware.name, () => {
4952
expect(mockNext).toHaveBeenCalledWith(mockArgs);
5053
});
5154
});
55+
56+
describe("set feature", () => {
57+
it.each([
58+
["FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED", "c", ResponseChecksumValidation.WHEN_REQUIRED],
59+
["FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED", "b", ResponseChecksumValidation.WHEN_SUPPORTED],
60+
])("logs %s and %s when ResponseChecksumValidation=%s", async (feature, value, responseChecksumValidation) => {
61+
const mockConfig = {
62+
responseChecksumValidation: () => Promise.resolve(responseChecksumValidation),
63+
} as PreviouslyResolved;
64+
const handler = flexibleChecksumsInputMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, {});
65+
await handler({ input: {} });
66+
expect(setFeature).toHaveBeenCalledWith(expect.anything(), feature, value);
67+
});
68+
});
5269
});

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { setFeature } from "@aws-sdk/core";
12
import {
23
HandlerExecutionContext,
34
MetadataBearer,
@@ -49,6 +50,12 @@ export const flexibleChecksumsInputMiddleware =
4950
const { requestValidationModeMember } = middlewareConfig;
5051
const responseChecksumValidation = await config.responseChecksumValidation();
5152

53+
if (responseChecksumValidation === ResponseChecksumValidation.WHEN_REQUIRED) {
54+
setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED", "c");
55+
} else {
56+
setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED", "b");
57+
}
58+
5259
if (requestValidationModeMember && responseChecksumValidation === ResponseChecksumValidation.WHEN_SUPPORTED) {
5360
input[requestValidationModeMember] = "ENABLED";
5461
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { setFeature } from "@aws-sdk/core";
12
import { HttpRequest } from "@smithy/protocol-http";
23
import { BuildHandlerArguments } from "@smithy/types";
34
import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
@@ -12,6 +13,7 @@ import { isStreaming } from "./isStreaming";
1213
import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction";
1314
import { stringHasher } from "./stringHasher";
1415

16+
vi.mock("@aws-sdk/core");
1517
vi.mock("@smithy/protocol-http");
1618
vi.mock("./getChecksumAlgorithmForRequest");
1719
vi.mock("./getChecksumLocationName");
@@ -171,4 +173,18 @@ describe(flexibleChecksumsMiddleware.name, () => {
171173
expect(mockBase64Encoder).toHaveBeenCalledWith(mockRawChecksum);
172174
});
173175
});
176+
177+
describe("set feature", () => {
178+
it.each([
179+
["FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED", "a", RequestChecksumCalculation.WHEN_REQUIRED],
180+
["FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED", "Z", RequestChecksumCalculation.WHEN_SUPPORTED],
181+
])("logs %s and %s when RequestChecksumCalculation=%s", async (feature, value, requestChecksumCalculation) => {
182+
const mockConfig = {
183+
requestChecksumCalculation: () => Promise.resolve(requestChecksumCalculation),
184+
} as PreviouslyResolved;
185+
const handler = flexibleChecksumsMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, {});
186+
await handler(mockArgs);
187+
expect(setFeature).toHaveBeenCalledWith(expect.anything(), feature, value);
188+
});
189+
});
174190
});

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
} from "@smithy/types";
1212

1313
import { PreviouslyResolved } from "./configuration";
14-
import { ChecksumAlgorithm } from "./constants";
14+
import { ChecksumAlgorithm, RequestChecksumCalculation } from "./constants";
1515
import { getChecksumAlgorithmForRequest } from "./getChecksumAlgorithmForRequest";
1616
import { getChecksumLocationName } from "./getChecksumLocationName";
1717
import { hasHeader } from "./hasHeader";
@@ -63,6 +63,12 @@ export const flexibleChecksumsMiddleware =
6363
const requestChecksumCalculation = await config.requestChecksumCalculation();
6464
const { input, requestChecksumRequired, requestAlgorithmMember } = middlewareConfig;
6565

66+
if (requestChecksumCalculation === RequestChecksumCalculation.WHEN_REQUIRED) {
67+
setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED", "a");
68+
} else {
69+
setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED", "Z");
70+
}
71+
6672
const checksumAlgorithm = getChecksumAlgorithmForRequest(
6773
input,
6874
{

0 commit comments

Comments
 (0)