@@ -2,7 +2,7 @@ import { HttpRequest } from "@smithy/protocol-http";
2
2
import { DeserializeHandlerArguments } from "@smithy/types" ;
3
3
4
4
import { PreviouslyResolved } from "./configuration" ;
5
- import { ChecksumAlgorithm } from "./constants" ;
5
+ import { ChecksumAlgorithm , ResponseChecksumValidation } from "./constants" ;
6
6
import { flexibleChecksumsResponseMiddleware } from "./flexibleChecksumsResponseMiddleware" ;
7
7
import { getChecksumLocationName } from "./getChecksumLocationName" ;
8
8
import { FlexibleChecksumsMiddlewareConfig } from "./getFlexibleChecksumsPlugin" ;
@@ -23,7 +23,9 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
23
23
commandName : "mockCommandName" ,
24
24
} ;
25
25
26
- const mockConfig = { } as PreviouslyResolved ;
26
+ const mockConfig = {
27
+ responseChecksumValidation : ( ) => Promise . resolve ( ResponseChecksumValidation . WHEN_REQUIRED ) ,
28
+ } as PreviouslyResolved ;
27
29
const mockRequestValidationModeMember = "ChecksumEnabled" ;
28
30
const mockResponseAlgorithms = [ ChecksumAlgorithm . CRC32 , ChecksumAlgorithm . CRC32C ] ;
29
31
const mockMiddlewareConfig = {
@@ -65,6 +67,7 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
65
67
const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMiddlewareConfig ) ( mockNext , mockContext ) ;
66
68
await handler ( mockArgs ) ;
67
69
expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
70
+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
68
71
} ) ;
69
72
70
73
describe ( "response checksum" , ( ) => {
@@ -74,12 +77,16 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
74
77
const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMwConfig ) ( mockNext , mockContext ) ;
75
78
await handler ( mockArgs ) ;
76
79
expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
80
+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
77
81
} ) ;
78
82
79
83
it ( "if requestValidationModeMember is not enabled in input" , async ( ) => {
80
84
const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMiddlewareConfig ) ( mockNext , mockContext ) ;
81
- await handler ( { ...mockArgs , input : { } } ) ;
85
+
86
+ const mockArgsWithoutEnabled = { ...mockArgs , input : { } } ;
87
+ await handler ( mockArgsWithoutEnabled ) ;
82
88
expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
89
+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgsWithoutEnabled ) ;
83
90
} ) ;
84
91
85
92
it ( "if checksum is for S3 whole-object multipart GET" , async ( ) => {
@@ -92,19 +99,39 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
92
99
expect ( isChecksumWithPartNumber ) . toHaveBeenCalledTimes ( 1 ) ;
93
100
expect ( isChecksumWithPartNumber ) . toHaveBeenCalledWith ( mockChecksum ) ;
94
101
expect ( validateChecksumFromResponse ) . not . toHaveBeenCalled ( ) ;
102
+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
95
103
} ) ;
96
104
} ) ;
97
105
} ) ;
98
106
99
107
describe ( "validates checksum from response header" , ( ) => {
100
- it ( "generic case " , async ( ) => {
108
+ it ( "if requestValidationModeMember is enabled in input " , async ( ) => {
101
109
const handler = flexibleChecksumsResponseMiddleware ( mockConfig , mockMiddlewareConfig ) ( mockNext , mockContext ) ;
102
110
103
111
await handler ( mockArgs ) ;
104
112
expect ( validateChecksumFromResponse ) . toHaveBeenCalledWith ( mockResult . response , {
105
113
config : mockConfig ,
106
114
responseAlgorithms : mockResponseAlgorithms ,
107
115
} ) ;
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 ) ;
108
135
} ) ;
109
136
110
137
it ( "if checksum is for S3 GET without part number" , async ( ) => {
@@ -120,6 +147,7 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
120
147
config : mockConfig ,
121
148
responseAlgorithms : mockResponseAlgorithms ,
122
149
} ) ;
150
+ expect ( mockNext ) . toHaveBeenCalledWith ( mockArgs ) ;
123
151
} ) ;
124
152
} ) ;
125
153
} ) ;
0 commit comments