@@ -22,7 +22,9 @@ describe("Stateless Session Store", async () => {
2222 createdAt : Math . floor ( Date . now ( ) / 1000 )
2323 }
2424 } ;
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 ) ;
2628
2729 const headers = new Headers ( ) ;
2830 headers . append ( "cookie" , `__session=${ encryptedCookieValue } ` ) ;
@@ -32,7 +34,7 @@ describe("Stateless Session Store", async () => {
3234 secret
3335 } ) ;
3436
35- expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( session ) ;
37+ expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( expect . objectContaining ( session ) ) ;
3638 } ) ;
3739
3840 it ( "should return null if no session cookie exists" , async ( ) => {
@@ -65,9 +67,12 @@ describe("Stateless Session Store", async () => {
6567 uat : Math . floor ( Date . now ( ) / 1000 ) ,
6668 exp : Math . floor ( Date . now ( ) / 1000 )
6769 } ;
70+ const maxAge = 60 * 60 ; // 1 hour in seconds
71+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
6872 const encryptedCookieValue = await encrypt (
6973 legacySession ,
7074 secret ,
75+ expiration ,
7176 legacyHeader
7277 ) ;
7378
@@ -106,9 +111,12 @@ describe("Stateless Session Store", async () => {
106111 uat : Math . floor ( Date . now ( ) / 1000 ) ,
107112 exp : Math . floor ( Date . now ( ) / 1000 )
108113 } ;
114+ const maxAge = 60 * 60 ; // 1 hour in seconds
115+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
109116 const encryptedCookieValue = await encrypt (
110117 legacySession ,
111118 secret ,
119+ expiration ,
112120 legacyHeader
113121 ) ;
114122
@@ -153,9 +161,12 @@ describe("Stateless Session Store", async () => {
153161 uat : Math . floor ( Date . now ( ) / 1000 ) ,
154162 exp : Math . floor ( Date . now ( ) / 1000 )
155163 } ;
164+ const maxAge = 60 * 60 ; // 1 hour in seconds
165+ const expiration = Math . floor ( Date . now ( ) / 1000 + maxAge ) ;
156166 const encryptedCookieValue = await encrypt (
157167 legacySession ,
158168 secret ,
169+ expiration ,
159170 legacyHeader
160171 ) ;
161172
@@ -206,7 +217,9 @@ describe("Stateless Session Store", async () => {
206217 }
207218 ]
208219 } ;
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 ) ;
210223
211224 const headers = new Headers ( ) ;
212225 headers . append ( "cookie" , `__session=${ encryptedCookieValue } ` ) ;
@@ -216,7 +229,7 @@ describe("Stateless Session Store", async () => {
216229 secret
217230 } ) ;
218231
219- expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( session ) ;
232+ expect ( await sessionStore . get ( requestCookies ) ) . toEqual ( expect . objectContaining ( session ) ) ;
220233 } ) ;
221234 } ) ;
222235
@@ -264,7 +277,7 @@ describe("Stateless Session Store", async () => {
264277 const cookie = responseCookies . get ( "__session" ) ;
265278
266279 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 ) ) ;
268281 expect ( cookie ?. path ) . toEqual ( "/" ) ;
269282 expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
270283 expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
@@ -306,12 +319,10 @@ describe("Stateless Session Store", async () => {
306319 const cookie = responseCookies . get ( "__session" ) ;
307320
308321 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` ) ;
315326 } ) ;
316327
317328 it ( "should delete the legacy cookie if it exists" , async ( ) => {
@@ -409,7 +420,7 @@ describe("Stateless Session Store", async () => {
409420 const cookie = responseCookies . get ( "__session" ) ;
410421
411422 expect ( cookie ) . toBeDefined ( ) ;
412- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
423+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
413424 expect ( cookie ?. path ) . toEqual ( "/" ) ;
414425 expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
415426 expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
@@ -449,7 +460,7 @@ describe("Stateless Session Store", async () => {
449460 const cookie = responseCookies . get ( "__session" ) ;
450461
451462 expect ( cookie ) . toBeDefined ( ) ;
452- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
463+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
453464 expect ( cookie ?. path ) . toEqual ( "/" ) ;
454465 expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
455466 expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
@@ -488,7 +499,7 @@ describe("Stateless Session Store", async () => {
488499 const cookie = responseCookies . get ( "__session" ) ;
489500
490501 expect ( cookie ) . toBeDefined ( ) ;
491- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
502+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
492503 expect ( cookie ?. path ) . toEqual ( "/" ) ;
493504 expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
494505 expect ( cookie ?. sameSite ) . toEqual ( "strict" ) ;
@@ -524,7 +535,7 @@ describe("Stateless Session Store", async () => {
524535 const cookie = responseCookies . get ( "__session" ) ;
525536
526537 expect ( cookie ) . toBeDefined ( ) ;
527- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
538+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
528539 expect ( cookie ?. path ) . toEqual ( "/custom-path" ) ;
529540 } ) ;
530541
@@ -559,7 +570,7 @@ describe("Stateless Session Store", async () => {
559570 const cookie = responseCookies . get ( "custom-session" ) ;
560571
561572 expect ( cookie ) . toBeDefined ( ) ;
562- expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( session ) ;
573+ expect ( ( await decrypt ( cookie ! . value , secret ) ) . payload ) . toEqual ( expect . objectContaining ( session ) ) ;
563574 expect ( cookie ?. path ) . toEqual ( "/" ) ;
564575 expect ( cookie ?. httpOnly ) . toEqual ( true ) ;
565576 expect ( cookie ?. sameSite ) . toEqual ( "lax" ) ;
0 commit comments