@@ -320,6 +320,81 @@ func TestSessionManager_Commit(T *testing.T) {
320320 t .Error ("expected error not returned" )
321321 }
322322 })
323+
324+ T .Run ("with token hashing" , func (t * testing.T ) {
325+ s := New ()
326+ s .HashTokenInStore = true
327+ s .IdleTimeout = time .Hour * 24
328+
329+ expectedToken := "example"
330+ expectedExpiry := time .Now ().Add (time .Hour )
331+
332+ ctx := context .WithValue (context .Background (), s .contextKey , & sessionData {
333+ deadline : expectedExpiry ,
334+ token : expectedToken ,
335+ values : map [string ]interface {}{
336+ "blah" : "blah" ,
337+ },
338+ mu : sync.Mutex {},
339+ })
340+
341+ actualToken , actualExpiry , err := s .Commit (ctx )
342+ if expectedToken != actualToken {
343+ t .Errorf ("expected token to equal %q, but received %q" , expectedToken , actualToken )
344+ }
345+ if expectedExpiry != actualExpiry {
346+ t .Errorf ("expected expiry to equal %v, but received %v" , expectedExpiry , actualExpiry )
347+ }
348+ if err != nil {
349+ t .Errorf ("unexpected error returned: %v" , err )
350+ }
351+ })
352+ }
353+
354+ func TestTokenHashing (T * testing.T ) {
355+ T .Run ("with token hashing" , func (t * testing.T ) {
356+ s := New ()
357+ s .HashTokenInStore = true
358+ s .IdleTimeout = time .Hour * 24
359+
360+ expectedToken := "example"
361+ expectedExpiry := time .Now ().Add (time .Hour )
362+
363+ initialCtx := context .WithValue (context .Background (), s .contextKey , & sessionData {
364+ deadline : expectedExpiry ,
365+ token : expectedToken ,
366+ values : map [string ]interface {}{
367+ "blah" : "blah" ,
368+ },
369+ mu : sync.Mutex {},
370+ })
371+
372+ actualToken , actualExpiry , err := s .Commit (initialCtx )
373+ if expectedToken != actualToken {
374+ t .Errorf ("expected token to equal %q, but received %q" , expectedToken , actualToken )
375+ }
376+ if expectedExpiry != actualExpiry {
377+ t .Errorf ("expected expiry to equal %v, but received %v" , expectedExpiry , actualExpiry )
378+ }
379+ if err != nil {
380+ t .Errorf ("unexpected error returned: %v" , err )
381+ }
382+
383+ retrievedCtx , err := s .Load (context .Background (), expectedToken )
384+ if err != nil {
385+ t .Errorf ("unexpected error returned: %v" , err )
386+ }
387+ retrievedSessionData , ok := retrievedCtx .Value (s .contextKey ).(* sessionData )
388+ if ! ok {
389+ t .Errorf ("unexpected data in retrieved context" )
390+ } else if retrievedSessionData .token != expectedToken {
391+ t .Errorf ("expected token in context's session data data to equal %v, but received %v" , expectedToken , retrievedSessionData .token )
392+ }
393+
394+ if err := s .Destroy (retrievedCtx ); err != nil {
395+ t .Errorf ("unexpected error returned: %v" , err )
396+ }
397+ })
323398}
324399
325400func TestPut (t * testing.T ) {
0 commit comments