@@ -2,7 +2,7 @@ import { HttpRequest } from "@smithy/protocol-http";
22import { DeserializeHandlerArguments } from "@smithy/types" ;
33
44import { PreviouslyResolved } from "./configuration" ;
5- import { ChecksumAlgorithm } from "./constants" ;
5+ import { ChecksumAlgorithm , ResponseChecksumValidation } from "./constants" ;
66import { flexibleChecksumsResponseMiddleware } from "./flexibleChecksumsResponseMiddleware" ;
77import { getChecksumLocationName } from "./getChecksumLocationName" ;
88import { FlexibleChecksumsMiddlewareConfig } from "./getFlexibleChecksumsPlugin" ;
@@ -23,7 +23,9 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
2323 commandName : "mockCommandName" ,
2424 } ;
2525
26- const mockConfig = { } as PreviouslyResolved ;
26+ const mockConfig = {
27+ responseChecksumValidation : ( ) => Promise . resolve ( ResponseChecksumValidation . WHEN_REQUIRED ) ,
28+ } as PreviouslyResolved ;
2729 const mockRequestValidationModeMember = "ChecksumEnabled" ;
2830 const mockResponseAlgorithms = [ ChecksumAlgorithm . CRC32 , ChecksumAlgorithm . CRC32C ] ;
2931 const mockMiddlewareConfig = {
@@ -65,6 +67,7 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
6567 const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMiddlewareConfig ) ( mockNext , mockContext ) ;
6668 await handler ( mockArgs ) ;
6769 expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
70+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
6871 } ) ;
6972
7073 describe ( "response checksum" , ( ) => {
@@ -74,12 +77,16 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
7477 const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMwConfig ) ( mockNext , mockContext ) ;
7578 await handler ( mockArgs ) ;
7679 expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
80+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
7781 } ) ;
7882
7983 it ( "if requestValidationModeMember is not enabled in input" , async ( ) => {
8084 const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMiddlewareConfig ) ( mockNext , mockContext ) ;
81- await handler ( { ...mockArgs , input : { } } ) ;
85+
86+ const mockArgsWithoutEnabled = { ...mockArgs , input : { } } ;
87+ await handler ( mockArgsWithoutEnabled ) ;
8288 expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
89+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgsWithoutEnabled ) ;
8390 } ) ;
8491
8592 it ( "if checksum is for S3 whole-object multipart GET" , async ( ) => {
@@ -92,19 +99,39 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
9299 expect ( isChecksumWithPartNumber ) . toHaveBeenCalledTimes ( 1 ) ;
93100 expect ( isChecksumWithPartNumber ) . toHaveBeenCalledWith ( mockChecksum ) ;
94101 expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
102+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
95103 } ) ;
96104 } ) ;
97105 } ) ;
98106
99107 describe ( "validates checksum from response header" , ( ) => {
100- it ( "generic case " , async ( ) => {
108+ it ( "if requestValidationModeMember is enabled in input " , async ( ) => {
101109 const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMiddlewareConfig ) ( mockNext , mockContext ) ;
102110
103111 await handler ( mockArgs ) ;
104112 expect ( validateChecksumFromResponse ) . toHaveBeenCalledWith ( mockResult . response , {
105113 config : mockConfig ,
106114 responseAlgorithms : mockResponseAlgorithms ,
107115 } ) ;
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 ) ;
108135 } ) ;
109136
110137 it ( "if checksum is for S3 GET without part number" , async ( ) => {
@@ -120,6 +147,7 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
120147 config : mockConfig ,
121148 responseAlgorithms : mockResponseAlgorithms ,
122149 } ) ;
150+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
123151 } ) ;
124152 } ) ;
125153} ) ;
0 commit comments