Skip to content

Commit abf4eaa

Browse files
committed
refactor(tests): async-ify the test suite
1 parent 84d20f0 commit abf4eaa

File tree

3 files changed

+117
-114
lines changed

3 files changed

+117
-114
lines changed

tests/doublecsrf.test.ts

Lines changed: 51 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ describe("csrf-csrf token-rotation", () => {
6060
const SECRET1 = "secret1"
6161
const SECRET2 = "secret2"
6262

63-
const generateMocksWithMultipleSecrets = (secrets: string[] | string) => {
63+
const generateMocksWithMultipleSecrets = async (secrets: string[] | string) => {
6464
const { generateToken, validateRequest } = doubleCsrf({
6565
...doubleCsrfOptions,
6666
getSecret: () => secrets,
6767
getSessionIdentifier: () => SECRET1,
6868
})
6969

7070
return {
71-
...generateMocksWithToken({
71+
...await generateMocksWithToken({
7272
cookieName,
7373
generateToken,
7474
validateRequest,
@@ -78,62 +78,67 @@ describe("csrf-csrf token-rotation", () => {
7878
}
7979
}
8080

81-
describe("validating requests with combination of different secret/s", () => {
81+
describe("validating requests with combination of different secret/s", async () => {
8282
// Generate request --> CSRF token with secret1
8383
// 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))
8686

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))
8990
})
9091

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))
9395
})
9496

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))
97100
})
98101

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))
101105
})
102106

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))
105110
})
106111

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))
109115
})
110116

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))
115120
})
116121
})
117122

118-
describe("should generate tokens correctly, simulating token rotations", () => {
123+
describe("should generate tokens correctly, simulating token rotations", async () => {
119124
const getEmptyResponse = () => {
120125
const { mockResponse } = generateMocks()
121126
return mockResponse
122127
}
123128

124-
const { validateRequest: validateRequestWithSecret1 } = generateMocksWithMultipleSecrets(SECRET1)
129+
const { validateRequest: validateRequestWithSecret1 } = await generateMocksWithMultipleSecrets(SECRET1)
125130

126-
const { validateRequest: validateRequestWithSecret2 } = generateMocksWithMultipleSecrets(SECRET2)
131+
const { validateRequest: validateRequestWithSecret2 } = await generateMocksWithMultipleSecrets(SECRET2)
127132

128-
const { generateToken: generateTokenWithSecret1And2 } = generateMocksWithMultipleSecrets([SECRET1, SECRET2])
133+
const { generateToken: generateTokenWithSecret1And2 } = await generateMocksWithMultipleSecrets([SECRET1, SECRET2])
129134

130-
const { generateToken: generateTokenWithSecret2And1 } = generateMocksWithMultipleSecrets([SECRET2, SECRET1])
135+
const { generateToken: generateTokenWithSecret2And1 } = await generateMocksWithMultipleSecrets([SECRET2, SECRET1])
131136

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)
134139
const mockResponse = getEmptyResponse()
135140

136-
const token = generateTokenWithSecret1And2(mockRequest, mockResponse)
141+
const token = await generateTokenWithSecret1And2(mockRequest, mockResponse)
137142
attachResponseValuesToRequest({
138143
request: mockRequest,
139144
response: mockResponse,
@@ -142,15 +147,15 @@ describe("csrf-csrf token-rotation", () => {
142147
bodyResponseToken: token,
143148
})
144149

145-
assert.isTrue(validateRequestWithSecret1(mockRequest))
146-
assert.isFalse(validateRequestWithSecret2(mockRequest))
150+
assert.isTrue(await validateRequestWithSecret1(mockRequest))
151+
assert.isFalse(await validateRequestWithSecret2(mockRequest))
147152
})
148153

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)
151156
const mockResponse = getEmptyResponse()
152157

153-
const token = generateTokenWithSecret2And1(mockRequest, mockResponse)
158+
const token = await generateTokenWithSecret2And1(mockRequest, mockResponse)
154159
attachResponseValuesToRequest({
155160
request: mockRequest,
156161
response: mockResponse,
@@ -159,16 +164,16 @@ describe("csrf-csrf token-rotation", () => {
159164
bodyResponseToken: token,
160165
})
161166

162-
assert.isTrue(validateRequestWithSecret1(mockRequest))
163-
assert.isFalse(validateRequestWithSecret2(mockRequest))
167+
assert.isTrue(await validateRequestWithSecret1(mockRequest))
168+
assert.isFalse(await validateRequestWithSecret2(mockRequest))
164169
})
165170

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)
168173

169174
const mockResponse = getEmptyResponse()
170175

171-
const token = generateTokenWithSecret1And2(mockRequest, mockResponse, {
176+
const token = await generateTokenWithSecret1And2(mockRequest, mockResponse, {
172177
overwrite: true,
173178
})
174179

@@ -180,16 +185,16 @@ describe("csrf-csrf token-rotation", () => {
180185
bodyResponseToken: token,
181186
})
182187

183-
assert.isFalse(validateRequestWithSecret2(mockRequest))
184-
assert.isTrue(validateRequestWithSecret1(mockRequest))
188+
assert.isFalse(await validateRequestWithSecret2(mockRequest))
189+
assert.isTrue(await validateRequestWithSecret1(mockRequest))
185190
})
186191

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)
189194

190195
const mockResponse = getEmptyResponse()
191196

192-
const token = generateTokenWithSecret2And1(mockRequest, mockResponse, {
197+
const token = await generateTokenWithSecret2And1(mockRequest, mockResponse, {
193198
overwrite: true,
194199
})
195200

@@ -201,8 +206,8 @@ describe("csrf-csrf token-rotation", () => {
201206
bodyResponseToken: token,
202207
})
203208

204-
assert.isTrue(validateRequestWithSecret2(mockRequest))
205-
assert.isFalse(validateRequestWithSecret1(mockRequest))
209+
assert.isTrue(await validateRequestWithSecret2(mockRequest))
210+
assert.isFalse(await validateRequestWithSecret1(mockRequest))
206211
})
207212
})
208213
})

0 commit comments

Comments
 (0)