@@ -198,6 +198,50 @@ func TestSessionManager_Load(T *testing.T) {
198198 t .Error ("returned context is unexpectedly nil" )
199199 }
200200 })
201+
202+ T .Run ("with token hashing" , func (t * testing.T ) {
203+ s := New ()
204+ s .HashTokenInStore = true
205+ s .IdleTimeout = time .Hour * 24
206+
207+ expectedToken := "example"
208+ expectedExpiry := time .Now ().Add (time .Hour )
209+
210+ initialCtx := context .WithValue (context .Background (), s .contextKey , & sessionData {
211+ deadline : expectedExpiry ,
212+ token : expectedToken ,
213+ values : map [string ]interface {}{
214+ "blah" : "blah" ,
215+ },
216+ mu : sync.Mutex {},
217+ })
218+
219+ actualToken , actualExpiry , err := s .Commit (initialCtx )
220+ if expectedToken != actualToken {
221+ t .Errorf ("expected token to equal %q, but received %q" , expectedToken , actualToken )
222+ }
223+ if expectedExpiry != actualExpiry {
224+ t .Errorf ("expected expiry to equal %v, but received %v" , expectedExpiry , actualExpiry )
225+ }
226+ if err != nil {
227+ t .Errorf ("unexpected error returned: %v" , err )
228+ }
229+
230+ retrievedCtx , err := s .Load (context .Background (), expectedToken )
231+ if err != nil {
232+ t .Errorf ("unexpected error returned: %v" , err )
233+ }
234+ retrievedSessionData , ok := retrievedCtx .Value (s .contextKey ).(* sessionData )
235+ if ! ok {
236+ t .Errorf ("unexpected data in retrieved context" )
237+ } else if retrievedSessionData .token != expectedToken {
238+ t .Errorf ("expected token in context's session data data to equal %v, but received %v" , expectedToken , retrievedSessionData .token )
239+ }
240+
241+ if err := s .Destroy (retrievedCtx ); err != nil {
242+ t .Errorf ("unexpected error returned: %v" , err )
243+ }
244+ })
201245}
202246
203247func TestSessionManager_Commit (T * testing.T ) {
@@ -320,6 +364,35 @@ func TestSessionManager_Commit(T *testing.T) {
320364 t .Error ("expected error not returned" )
321365 }
322366 })
367+
368+ T .Run ("with token hashing" , func (t * testing.T ) {
369+ s := New ()
370+ s .HashTokenInStore = true
371+ s .IdleTimeout = time .Hour * 24
372+
373+ expectedToken := "example"
374+ expectedExpiry := time .Now ().Add (time .Hour )
375+
376+ ctx := context .WithValue (context .Background (), s .contextKey , & sessionData {
377+ deadline : expectedExpiry ,
378+ token : expectedToken ,
379+ values : map [string ]interface {}{
380+ "blah" : "blah" ,
381+ },
382+ mu : sync.Mutex {},
383+ })
384+
385+ actualToken , actualExpiry , err := s .Commit (ctx )
386+ if expectedToken != actualToken {
387+ t .Errorf ("expected token to equal %q, but received %q" , expectedToken , actualToken )
388+ }
389+ if expectedExpiry != actualExpiry {
390+ t .Errorf ("expected expiry to equal %v, but received %v" , expectedExpiry , actualExpiry )
391+ }
392+ if err != nil {
393+ t .Errorf ("unexpected error returned: %v" , err )
394+ }
395+ })
323396}
324397
325398func TestPut (t * testing.T ) {
0 commit comments