@@ -22,7 +22,9 @@ describe("Stateless Session Store", async () => {
22
22
createdAt : Math . floor ( Date . now ( ) / 1000 )
23
23
}
24
24
} ;
25
- const encryptedCookieValue = await encrypt ( session , secret ) ;
25
+ const maxAge = 60 * 60 ; // 1 hour in seconds
26
+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
27
+ const encryptedCookieValue = await encrypt ( session , secret , expiration ) ;
26
28
27
29
const headers = new Headers ( ) ;
28
30
headers . append ( "cookie" , `__session=${ encryptedCookieValue } ` ) ;
@@ -32,7 +34,7 @@ describe("Stateless Session Store", async () => {
32
34
secret
33
35
} ) ;
34
36
35
- expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( session ) ;
37
+ expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( expect . objectContaining ( session ) ) ;
36
38
} ) ;
37
39
38
40
it ( "should return null if no session cookie exists" , async ( ) => {
@@ -65,9 +67,12 @@ describe("Stateless Session Store", async () => {
65
67
uat : Math . floor ( Date . now ( ) / 1000 ) ,
66
68
exp : Math . floor ( Date . now ( ) / 1000 )
67
69
} ;
70
+ const maxAge = 60 * 60 ; // 1 hour in seconds
71
+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
68
72
const encryptedCookieValue = await encrypt (
69
73
legacySession ,
70
74
secret ,
75
+ expiration ,
71
76
legacyHeader
72
77
) ;
73
78
@@ -106,9 +111,12 @@ describe("Stateless Session Store", async () => {
106
111
uat : Math . floor ( Date . now ( ) / 1000 ) ,
107
112
exp : Math . floor ( Date . now ( ) / 1000 )
108
113
} ;
114
+ const maxAge = 60 * 60 ; // 1 hour in seconds
115
+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
109
116
const encryptedCookieValue = await encrypt (
110
117
legacySession ,
111
118
secret ,
119
+ expiration ,
112
120
legacyHeader
113
121
) ;
114
122
@@ -153,9 +161,12 @@ describe("Stateless Session Store", async () => {
153
161
uat : Math . floor ( Date . now ( ) / 1000 ) ,
154
162
exp : Math . floor ( Date . now ( ) / 1000 )
155
163
} ;
164
+ const maxAge = 60 * 60 ; // 1 hour in seconds
165
+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
156
166
const encryptedCookieValue = await encrypt (
157
167
legacySession ,
158
168
secret ,
169
+ expiration ,
159
170
legacyHeader
160
171
) ;
161
172
@@ -206,7 +217,9 @@ describe("Stateless Session Store", async () => {
206
217
}
207
218
]
208
219
} ;
209
- const encryptedCookieValue = await encrypt ( session , secret ) ;
220
+ const maxAge = 60 * 60 ; // 1 hour in seconds
221
+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
222
+ const encryptedCookieValue = await encrypt ( session , secret , expiration ) ;
210
223
211
224
const headers = new Headers ( ) ;
212
225
headers . append ( "cookie" , `__session=${ encryptedCookieValue } ` ) ;
@@ -216,7 +229,7 @@ describe("Stateless Session Store", async () => {
216
229
secret
217
230
} ) ;
218
231
219
- expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( session ) ;
232
+ expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( expect . objectContaining ( session ) ) ;
220
233
} ) ;
221
234
} ) ;
222
235
@@ -264,7 +277,7 @@ describe("Stateless Session Store", async () => {
264
277
const cookie = responseCookies . get ( "__session" ) ;
265
278
266
279
expect ( cookie ) . toBeDefined ( ) ;
267
- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
280
+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
268
281
expect ( cookie ?. path ) . toEqual ( "/" ) ;
269
282
expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
270
283
expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
@@ -306,12 +319,10 @@ describe("Stateless Session Store", async () => {
306
319
const cookie = responseCookies . get ( "__session" ) ;
307
320
308
321
expect ( cookie ) . toBeDefined ( ) ;
309
- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
310
- expect ( cookie ?. path ) . toEqual ( "/" ) ;
311
- expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
312
- expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
313
- expect ( cookie ?. maxAge ) . toEqual ( 0 ) ; // cookie should expire immediately
314
- expect ( cookie ?. secure ) . toEqual ( false ) ;
322
+
323
+ await expect (
324
+ decrypt ( cookie ! . value , secret )
325
+ ) . rejects . toThrow ( `"exp" claim timestamp check failed` ) ;
315
326
} ) ;
316
327
317
328
it ( "should delete the legacy cookie if it exists" , async ( ) => {
@@ -413,7 +424,7 @@ describe("Stateless Session Store", async () => {
413
424
const cookie = responseCookies . get ( "__session" ) ;
414
425
415
426
expect ( cookie ) . toBeDefined ( ) ;
416
- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
427
+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
417
428
expect ( cookie ?. path ) . toEqual ( "/" ) ;
418
429
expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
419
430
expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
@@ -453,7 +464,7 @@ describe("Stateless Session Store", async () => {
453
464
const cookie = responseCookies . get ( "__session" ) ;
454
465
455
466
expect ( cookie ) . toBeDefined ( ) ;
456
- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
467
+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
457
468
expect ( cookie ?. path ) . toEqual ( "/" ) ;
458
469
expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
459
470
expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
@@ -492,7 +503,7 @@ describe("Stateless Session Store", async () => {
492
503
const cookie = responseCookies . get ( "__session" ) ;
493
504
494
505
expect ( cookie ) . toBeDefined ( ) ;
495
- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
506
+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
496
507
expect ( cookie ?. path ) . toEqual ( "/" ) ;
497
508
expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
498
509
expect ( cookie ?. sameSite ) . toEqual ( "strict" ) ;
@@ -528,7 +539,7 @@ describe("Stateless Session Store", async () => {
528
539
const cookie = responseCookies . get ( "__session" ) ;
529
540
530
541
expect ( cookie ) . toBeDefined ( ) ;
531
- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
542
+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
532
543
expect ( cookie ?. path ) . toEqual ( "/custom-path" ) ;
533
544
} ) ;
534
545
@@ -563,7 +574,7 @@ describe("Stateless Session Store", async () => {
563
574
const cookie = responseCookies . get ( "custom-session" ) ;
564
575
565
576
expect ( cookie ) . toBeDefined ( ) ;
566
- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
577
+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
567
578
expect ( cookie ?. path ) . toEqual ( "/" ) ;
568
579
expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
569
580
expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
0 commit comments