sessions - sessions_test.go
1 package sessions
2
3 import (
4 "net/http"
5 "net/http/httptest"
6 "testing"
7 "time"
8 )
9
10 func TestEncode(t *testing.T) {
11 t.Parallel()
12
13 store, err := NewCookieStore([]byte("!THIS IS MY KEY!"), Expiry(time.Second))
14 if err != nil {
15 t.Fatalf("unexpected error: %s", err)
16 }
17
18 w := httptest.NewRecorder()
19
20 const myData = "MY_DATA"
21
22 store.Set(w, []byte(myData))
23
24 r := httptest.NewRequest(http.MethodGet, "http://example.com", nil)
25
26 for _, cookie := range w.Result().Cookies() {
27 r.AddCookie(cookie)
28 }
29
30 if data := store.Get(r); string(data) != myData {
31 t.Errorf("expected to read %q, got %q", myData, data)
32 }
33
34 time.Sleep(2 * time.Second)
35
36 if data := store.Get(r); data != nil {
37 t.Errorf("expected to read nil, got %q", data)
38 }
39 }
40
41 func TestSign(t *testing.T) {
42 t.Parallel()
43
44 store, err := NewCookieStore([]byte("!THIS IS MY KEY!"), Expiry(time.Second), Sign())
45 if err != nil {
46 t.Fatalf("unexpected error: %s", err)
47 }
48
49 w := httptest.NewRecorder()
50
51 const myData = "MY_DATA"
52
53 store.Set(w, []byte(myData))
54
55 r := httptest.NewRequest(http.MethodGet, "http://example.com", nil)
56
57 for _, cookie := range w.Result().Cookies() {
58 r.AddCookie(cookie)
59 }
60
61 if data := store.Get(r); string(data) != myData {
62 t.Errorf("expected to read %q, got %q", myData, data)
63 }
64
65 time.Sleep(2 * time.Second)
66
67 if data := store.Get(r); data != nil {
68 t.Errorf("expected to read nil, got %q", data)
69 }
70 }
71