@@ -198,6 +198,50 @@ func TestSessionManager_Load(T *testing.T) {
198
198
t .Error ("returned context is unexpectedly nil" )
199
199
}
200
200
})
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
+ })
201
245
}
202
246
203
247
func TestSessionManager_Commit (T * testing.T ) {
@@ -320,6 +364,35 @@ func TestSessionManager_Commit(T *testing.T) {
320
364
t .Error ("expected error not returned" )
321
365
}
322
366
})
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
+ })
323
396
}
324
397
325
398
func TestPut (t * testing.T ) {
0 commit comments