@@ -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" , ( ) => {
0 commit comments