@@ -378,6 +378,106 @@ describe("Stateful Session Store", async () => {
378378 expect ( cookie ?. maxAge ) . toEqual ( 1800 )
379379 expect ( cookie ?. secure ) . toEqual ( true )
380380 } )
381+
382+ it ( "should apply the sameSite attribute to the cookie" , async ( ) => {
383+ const currentTime = Date . now ( )
384+ const createdAt = Math . floor ( currentTime / 1000 )
385+ const secret = await generateSecret ( 32 )
386+ const session : SessionData = {
387+ user : { sub : "user_123" } ,
388+ tokenSet : {
389+ accessToken : "at_123" ,
390+ refreshToken : "rt_123" ,
391+ expiresAt : 123456 ,
392+ } ,
393+ internal : {
394+ sid : "auth0-sid" ,
395+ createdAt,
396+ } ,
397+ }
398+ const store = {
399+ get : vi . fn ( ) . mockResolvedValue ( session ) ,
400+ set : vi . fn ( ) ,
401+ delete : vi . fn ( ) ,
402+ }
403+
404+ const requestCookies = new RequestCookies ( new Headers ( ) )
405+ const responseCookies = new ResponseCookies ( new Headers ( ) )
406+
407+ const sessionStore = new StatefulSessionStore ( {
408+ secret,
409+ store,
410+ rolling : true ,
411+ absoluteDuration : 3600 ,
412+ inactivityDuration : 1800 ,
413+
414+ cookieOptions : {
415+ sameSite : "strict" ,
416+ } ,
417+ } )
418+ await sessionStore . set ( requestCookies , responseCookies , session )
419+
420+ const cookie = responseCookies . get ( "__session" )
421+ const cookieValue = await decrypt ( cookie ! . value , secret )
422+
423+ expect ( cookie ) . toBeDefined ( )
424+ expect ( cookieValue ) . toHaveProperty ( "id" )
425+ expect ( cookie ?. path ) . toEqual ( "/" )
426+ expect ( cookie ?. httpOnly ) . toEqual ( true )
427+ expect ( cookie ?. sameSite ) . toEqual ( "strict" )
428+ expect ( cookie ?. maxAge ) . toEqual ( 1800 )
429+ expect ( cookie ?. secure ) . toEqual ( false )
430+ } )
431+
432+ it ( "should apply the cookie name" , async ( ) => {
433+ const currentTime = Date . now ( )
434+ const createdAt = Math . floor ( currentTime / 1000 )
435+ const secret = await generateSecret ( 32 )
436+ const session : SessionData = {
437+ user : { sub : "user_123" } ,
438+ tokenSet : {
439+ accessToken : "at_123" ,
440+ refreshToken : "rt_123" ,
441+ expiresAt : 123456 ,
442+ } ,
443+ internal : {
444+ sid : "auth0-sid" ,
445+ createdAt,
446+ } ,
447+ }
448+ const store = {
449+ get : vi . fn ( ) . mockResolvedValue ( session ) ,
450+ set : vi . fn ( ) ,
451+ delete : vi . fn ( ) ,
452+ }
453+
454+ const requestCookies = new RequestCookies ( new Headers ( ) )
455+ const responseCookies = new ResponseCookies ( new Headers ( ) )
456+
457+ const sessionStore = new StatefulSessionStore ( {
458+ secret,
459+ store,
460+ rolling : true ,
461+ absoluteDuration : 3600 ,
462+ inactivityDuration : 1800 ,
463+
464+ cookieOptions : {
465+ name : "my-session" ,
466+ } ,
467+ } )
468+ await sessionStore . set ( requestCookies , responseCookies , session )
469+
470+ const cookie = responseCookies . get ( "my-session" )
471+ const cookieValue = await decrypt ( cookie ! . value , secret )
472+
473+ expect ( cookie ) . toBeDefined ( )
474+ expect ( cookieValue ) . toHaveProperty ( "id" )
475+ expect ( cookie ?. path ) . toEqual ( "/" )
476+ expect ( cookie ?. httpOnly ) . toEqual ( true )
477+ expect ( cookie ?. sameSite ) . toEqual ( "lax" )
478+ expect ( cookie ?. maxAge ) . toEqual ( 1800 )
479+ expect ( cookie ?. secure ) . toEqual ( false )
480+ } )
381481 } )
382482 } )
383483
0 commit comments