@@ -60,15 +60,15 @@ describe("csrf-csrf token-rotation", () => {
60
60
const SECRET1 = "secret1"
61
61
const SECRET2 = "secret2"
62
62
63
- const generateMocksWithMultipleSecrets = ( secrets : string [ ] | string ) => {
63
+ const generateMocksWithMultipleSecrets = async ( secrets : string [ ] | string ) => {
64
64
const { generateToken, validateRequest } = doubleCsrf ( {
65
65
...doubleCsrfOptions ,
66
66
getSecret : ( ) => secrets ,
67
67
getSessionIdentifier : ( ) => SECRET1 ,
68
68
} )
69
69
70
70
return {
71
- ...generateMocksWithToken ( {
71
+ ...await generateMocksWithToken ( {
72
72
cookieName,
73
73
generateToken,
74
74
validateRequest,
@@ -78,62 +78,67 @@ describe("csrf-csrf token-rotation", () => {
78
78
}
79
79
}
80
80
81
- describe ( "validating requests with combination of different secret/s" , ( ) => {
81
+ describe ( "validating requests with combination of different secret/s" , async ( ) => {
82
82
// Generate request --> CSRF token with secret1
83
83
// We will then match a request with token and secret1 with other combinations of secrets
84
- const { mockRequest, validateRequest } = generateMocksWithMultipleSecrets ( SECRET1 )
85
- assert . isTrue ( validateRequest ( mockRequest ) )
84
+ const { mockRequest, validateRequest } = await generateMocksWithMultipleSecrets ( SECRET1 )
85
+ assert . isTrue ( await validateRequest ( mockRequest ) )
86
86
87
- it ( "should be valid with 1 matching secret" , ( ) => {
88
- assert . isTrue ( generateMocksWithMultipleSecrets ( SECRET1 ) . validateRequest ( mockRequest ) )
87
+ it ( "should be valid with 1 matching secret" , async ( ) => {
88
+ const { validateRequest } = await generateMocksWithMultipleSecrets ( SECRET1 )
89
+ assert . isTrue ( await validateRequest ( mockRequest ) )
89
90
} )
90
91
91
- it ( "should be valid with 1/1 matching secret in array" , ( ) => {
92
- assert . isTrue ( generateMocksWithMultipleSecrets ( [ SECRET1 ] ) . validateRequest ( mockRequest ) )
92
+ it ( "should be valid with 1/1 matching secret in array" , async ( ) => {
93
+ const { validateRequest } = await generateMocksWithMultipleSecrets ( [ SECRET1 ] )
94
+ assert . isTrue ( await validateRequest ( mockRequest ) )
93
95
} )
94
96
95
- it ( "should be valid with 1/2 matching secrets in array, first secret matches" , ( ) => {
96
- assert . isTrue ( generateMocksWithMultipleSecrets ( [ SECRET1 , SECRET2 ] ) . validateRequest ( mockRequest ) )
97
+ it ( "should be valid with 1/2 matching secrets in array, first secret matches" , async ( ) => {
98
+ const { validateRequest } = await generateMocksWithMultipleSecrets ( [ SECRET1 , SECRET2 ] )
99
+ assert . isTrue ( await validateRequest ( mockRequest ) )
97
100
} )
98
101
99
- it ( "should be valid with 1/2 matching secrets in array, second secret matches" , ( ) => {
100
- assert . isTrue ( generateMocksWithMultipleSecrets ( [ SECRET2 , SECRET1 ] ) . validateRequest ( mockRequest ) )
102
+ it ( "should be valid with 1/2 matching secrets in array, second secret matches" , async ( ) => {
103
+ const { validateRequest } = await generateMocksWithMultipleSecrets ( [ SECRET2 , SECRET1 ] )
104
+ assert . isTrue ( await validateRequest ( mockRequest ) )
101
105
} )
102
106
103
- it ( "should be invalid with 0/1 matching secret in array" , ( ) => {
104
- assert . isFalse ( generateMocksWithMultipleSecrets ( [ SECRET2 ] ) . validateRequest ( mockRequest ) )
107
+ it ( "should be invalid with 0/1 matching secret in array" , async ( ) => {
108
+ const { validateRequest } = await generateMocksWithMultipleSecrets ( [ SECRET2 ] )
109
+ assert . isFalse ( await validateRequest ( mockRequest ) )
105
110
} )
106
111
107
- it ( "should be invalid with 0/2 matching secrets in array" , ( ) => {
108
- assert . isFalse ( generateMocksWithMultipleSecrets ( SECRET2 ) . validateRequest ( mockRequest ) )
112
+ it ( "should be invalid with 0/2 matching secrets in array" , async ( ) => {
113
+ const { validateRequest } = await generateMocksWithMultipleSecrets ( SECRET2 )
114
+ assert . isFalse ( await validateRequest ( mockRequest ) )
109
115
} )
110
116
111
- it ( "should be invalid with 0/3 matching secrets in array" , ( ) => {
112
- assert . isFalse (
113
- generateMocksWithMultipleSecrets ( [ "invalid0" , "invalid1" , "invalid2" ] ) . validateRequest ( mockRequest ) ,
114
- )
117
+ it ( "should be invalid with 0/3 matching secrets in array" , async ( ) => {
118
+ const { validateRequest } = await generateMocksWithMultipleSecrets ( [ "invalid0" , "invalid1" , "invalid2" ] )
119
+ assert . isFalse ( await validateRequest ( mockRequest ) )
115
120
} )
116
121
} )
117
122
118
- describe ( "should generate tokens correctly, simulating token rotations" , ( ) => {
123
+ describe ( "should generate tokens correctly, simulating token rotations" , async ( ) => {
119
124
const getEmptyResponse = ( ) => {
120
125
const { mockResponse } = generateMocks ( )
121
126
return mockResponse
122
127
}
123
128
124
- const { validateRequest : validateRequestWithSecret1 } = generateMocksWithMultipleSecrets ( SECRET1 )
129
+ const { validateRequest : validateRequestWithSecret1 } = await generateMocksWithMultipleSecrets ( SECRET1 )
125
130
126
- const { validateRequest : validateRequestWithSecret2 } = generateMocksWithMultipleSecrets ( SECRET2 )
131
+ const { validateRequest : validateRequestWithSecret2 } = await generateMocksWithMultipleSecrets ( SECRET2 )
127
132
128
- const { generateToken : generateTokenWithSecret1And2 } = generateMocksWithMultipleSecrets ( [ SECRET1 , SECRET2 ] )
133
+ const { generateToken : generateTokenWithSecret1And2 } = await generateMocksWithMultipleSecrets ( [ SECRET1 , SECRET2 ] )
129
134
130
- const { generateToken : generateTokenWithSecret2And1 } = generateMocksWithMultipleSecrets ( [ SECRET2 , SECRET1 ] )
135
+ const { generateToken : generateTokenWithSecret2And1 } = await generateMocksWithMultipleSecrets ( [ SECRET2 , SECRET1 ] )
131
136
132
- it ( "should reuse existing token on request with SECRET1, while current is [SECRET1, SECRET2]" , ( ) => {
133
- const { mockRequest } = generateMocksWithMultipleSecrets ( SECRET1 )
137
+ it ( "should reuse existing token on request with SECRET1, while current is [SECRET1, SECRET2]" , async ( ) => {
138
+ const { mockRequest } = await generateMocksWithMultipleSecrets ( SECRET1 )
134
139
const mockResponse = getEmptyResponse ( )
135
140
136
- const token = generateTokenWithSecret1And2 ( mockRequest , mockResponse )
141
+ const token = await generateTokenWithSecret1And2 ( mockRequest , mockResponse )
137
142
attachResponseValuesToRequest ( {
138
143
request : mockRequest ,
139
144
response : mockResponse ,
@@ -142,15 +147,15 @@ describe("csrf-csrf token-rotation", () => {
142
147
bodyResponseToken : token ,
143
148
} )
144
149
145
- assert . isTrue ( validateRequestWithSecret1 ( mockRequest ) )
146
- assert . isFalse ( validateRequestWithSecret2 ( mockRequest ) )
150
+ assert . isTrue ( await validateRequestWithSecret1 ( mockRequest ) )
151
+ assert . isFalse ( await validateRequestWithSecret2 ( mockRequest ) )
147
152
} )
148
153
149
- it ( "should reuse existing token on request with SECRET1, while current is [SECRET2, SECRET1]" , ( ) => {
150
- const { mockRequest } = generateMocksWithMultipleSecrets ( SECRET1 )
154
+ it ( "should reuse existing token on request with SECRET1, while current is [SECRET2, SECRET1]" , async ( ) => {
155
+ const { mockRequest } = await generateMocksWithMultipleSecrets ( SECRET1 )
151
156
const mockResponse = getEmptyResponse ( )
152
157
153
- const token = generateTokenWithSecret2And1 ( mockRequest , mockResponse )
158
+ const token = await generateTokenWithSecret2And1 ( mockRequest , mockResponse )
154
159
attachResponseValuesToRequest ( {
155
160
request : mockRequest ,
156
161
response : mockResponse ,
@@ -159,16 +164,16 @@ describe("csrf-csrf token-rotation", () => {
159
164
bodyResponseToken : token ,
160
165
} )
161
166
162
- assert . isTrue ( validateRequestWithSecret1 ( mockRequest ) )
163
- assert . isFalse ( validateRequestWithSecret2 ( mockRequest ) )
167
+ assert . isTrue ( await validateRequestWithSecret1 ( mockRequest ) )
168
+ assert . isFalse ( await validateRequestWithSecret2 ( mockRequest ) )
164
169
} )
165
170
166
- it ( "should generate new token (with secret 1) on request with SECRET2, while current is [SECRET1, SECRET2], if overwrite is true" , ( ) => {
167
- const { mockRequest } = generateMocksWithMultipleSecrets ( SECRET2 )
171
+ it ( "should generate new token (with secret 1) on request with SECRET2, while current is [SECRET1, SECRET2], if overwrite is true" , async ( ) => {
172
+ const { mockRequest } = await generateMocksWithMultipleSecrets ( SECRET2 )
168
173
169
174
const mockResponse = getEmptyResponse ( )
170
175
171
- const token = generateTokenWithSecret1And2 ( mockRequest , mockResponse , {
176
+ const token = await generateTokenWithSecret1And2 ( mockRequest , mockResponse , {
172
177
overwrite : true ,
173
178
} )
174
179
@@ -180,16 +185,16 @@ describe("csrf-csrf token-rotation", () => {
180
185
bodyResponseToken : token ,
181
186
} )
182
187
183
- assert . isFalse ( validateRequestWithSecret2 ( mockRequest ) )
184
- assert . isTrue ( validateRequestWithSecret1 ( mockRequest ) )
188
+ assert . isFalse ( await validateRequestWithSecret2 ( mockRequest ) )
189
+ assert . isTrue ( await validateRequestWithSecret1 ( mockRequest ) )
185
190
} )
186
191
187
- it ( "should generate new token (with secret 2) on request with SECRET2, while current is [SECRET2, SECRET1], if overwrite is true" , ( ) => {
188
- const { mockRequest } = generateMocksWithMultipleSecrets ( SECRET2 )
192
+ it ( "should generate new token (with secret 2) on request with SECRET2, while current is [SECRET2, SECRET1], if overwrite is true" , async ( ) => {
193
+ const { mockRequest } = await generateMocksWithMultipleSecrets ( SECRET2 )
189
194
190
195
const mockResponse = getEmptyResponse ( )
191
196
192
- const token = generateTokenWithSecret2And1 ( mockRequest , mockResponse , {
197
+ const token = await generateTokenWithSecret2And1 ( mockRequest , mockResponse , {
193
198
overwrite : true ,
194
199
} )
195
200
@@ -201,8 +206,8 @@ describe("csrf-csrf token-rotation", () => {
201
206
bodyResponseToken : token ,
202
207
} )
203
208
204
- assert . isTrue ( validateRequestWithSecret2 ( mockRequest ) )
205
- assert . isFalse ( validateRequestWithSecret1 ( mockRequest ) )
209
+ assert . isTrue ( await validateRequestWithSecret2 ( mockRequest ) )
210
+ assert . isFalse ( await validateRequestWithSecret1 ( mockRequest ) )
206
211
} )
207
212
} )
208
213
} )
0 commit comments