11import { setFeature } from "@aws-sdk/core" ;
2- import { afterEach , describe , expect , test as it , vi } from "vitest" ;
2+ import { afterEach , beforeEach , describe , expect , test as it , vi } from "vitest" ;
33
44import { PreviouslyResolved } from "./configuration" ;
55import { DEFAULT_CHECKSUM_ALGORITHM , RequestChecksumCalculation , ResponseChecksumValidation } from "./constants" ;
66import { flexibleChecksumsInputMiddleware } from "./flexibleChecksumsInputMiddleware" ;
7+ import { hasHeaderWithPrefix } from "./hasHeaderWithPrefix" ;
78
89vi . mock ( "@aws-sdk/core" ) ;
10+ vi . mock ( "./hasHeaderWithPrefix" ) ;
911
1012describe ( flexibleChecksumsInputMiddleware . name , ( ) => {
1113 const mockNext = vi . fn ( ) ;
@@ -19,6 +21,10 @@ describe(flexibleChecksumsInputMiddleware.name, () => {
1921 responseChecksumValidation : ( ) => Promise . resolve ( ResponseChecksumValidation . WHEN_SUPPORTED ) ,
2022 } as PreviouslyResolved ;
2123
24+ beforeEach ( ( ) => {
25+ vi . mocked ( hasHeaderWithPrefix ) . mockReturnValue ( false ) ;
26+ } ) ;
27+
2228 afterEach ( ( ) => {
2329 expect ( mockNext ) . toHaveBeenCalledTimes ( 1 ) ;
2430 vi . clearAllMocks ( ) ;
@@ -36,8 +42,11 @@ describe(flexibleChecksumsInputMiddleware.name, () => {
3642 mockNext ,
3743 { }
3844 ) ;
39- await handler ( { input : { } } ) ;
40- expect ( mockNext ) . toHaveBeenCalledWith ( { input : { [ mockRequestAlgorithmMember ] : DEFAULT_CHECKSUM_ALGORITHM } } ) ;
45+ await handler ( { input : { } , request : { } } ) ;
46+ expect ( mockNext ) . toHaveBeenCalledWith ( {
47+ input : { [ mockRequestAlgorithmMember ] : DEFAULT_CHECKSUM_ALGORITHM } ,
48+ request : { } ,
49+ } ) ;
4150 } ) ;
4251
4352 it ( "requestChecksumRequired is set to true" , async ( ) => {
@@ -51,8 +60,11 @@ describe(flexibleChecksumsInputMiddleware.name, () => {
5160 requestChecksumRequired : true ,
5261 } ) ( mockNext , { } ) ;
5362
54- await handler ( { input : { } } ) ;
55- expect ( mockNext ) . toHaveBeenCalledWith ( { input : { [ mockRequestAlgorithmMember ] : DEFAULT_CHECKSUM_ALGORITHM } } ) ;
63+ await handler ( { input : { } , request : { } } ) ;
64+ expect ( mockNext ) . toHaveBeenCalledWith ( {
65+ input : { [ mockRequestAlgorithmMember ] : DEFAULT_CHECKSUM_ALGORITHM } ,
66+ request : { } ,
67+ } ) ;
5668 } ) ;
5769 } ) ;
5870 } ) ;
@@ -82,8 +94,21 @@ describe(flexibleChecksumsInputMiddleware.name, () => {
8294 mockConfigReqChecksumCalculationWhenRequired ,
8395 mockMiddlewareConfigWithRequestAlgorithmMember
8496 ) ( mockNext , { } ) ;
85- await handler ( { input : { } } ) ;
86- expect ( mockNext ) . toHaveBeenCalledWith ( { input : { } } ) ;
97+ await handler ( { input : { } , request : { } } ) ;
98+ expect ( mockNext ) . toHaveBeenCalledWith ( { input : { } , request : { } } ) ;
99+ } ) ;
100+
101+ it ( "if checksum header is set" , async ( ) => {
102+ const mockArgs = { input : { } , request : { key : "value" } } ;
103+ vi . mocked ( hasHeaderWithPrefix ) . mockReturnValue ( true ) ;
104+
105+ const handler = flexibleChecksumsInputMiddleware ( mockConfig , {
106+ ...mockMiddlewareConfigWithRequestAlgorithmMember ,
107+ requestChecksumRequired : true ,
108+ } ) ( mockNext , { } ) ;
109+
110+ await handler ( mockArgs ) ;
111+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
87112 } ) ;
88113 } ) ;
89114
@@ -97,13 +122,13 @@ describe(flexibleChecksumsInputMiddleware.name, () => {
97122 mockConfig ,
98123 mockMiddlewareConfigWithMockRequestValidationModeMember
99124 ) ( mockNext , { } ) ;
100- await handler ( { input : { } } ) ;
101- expect ( mockNext ) . toHaveBeenCalledWith ( { input : { [ mockRequestValidationModeMember ] : "ENABLED" } } ) ;
125+ await handler ( { input : { } , request : { } } ) ;
126+ expect ( mockNext ) . toHaveBeenCalledWith ( { input : { [ mockRequestValidationModeMember ] : "ENABLED" } , request : { } } ) ;
102127 } ) ;
103128 } ) ;
104129
105130 describe ( "leaves input.requestValidationModeMember" , ( ) => {
106- const mockArgs = { input : { } } ;
131+ const mockArgs = { input : { } , request : { } } ;
107132
108133 it ( "when requestValidationModeMember is not defined" , async ( ) => {
109134 const handler = flexibleChecksumsInputMiddleware ( mockConfig , mockMiddlewareConfig ) ( mockNext , { } ) ;
@@ -157,7 +182,7 @@ describe(flexibleChecksumsInputMiddleware.name, () => {
157182 } as PreviouslyResolved ;
158183
159184 const handler = flexibleChecksumsInputMiddleware ( mockConfigOverride , mockMiddlewareConfig ) ( mockNext , { } ) ;
160- await handler ( { input : { } } ) ;
185+ await handler ( { input : { } , request : { } } ) ;
161186
162187 expect ( setFeature ) . toHaveBeenCalledTimes ( 2 ) ;
163188 if ( configKey === "requestChecksumCalculation" ) {
0 commit comments