1 package sessions
2
3 import (
4 "encoding/base64"
5 "net/http"
6 "net/http/httptest"
7 "testing"
8 )
9
10
11 func TestGH8CookieStore(t *testing.T) {
12 originalPath := "/"
13 store := NewCookieStore()
14 store.Options.Path = originalPath
15 req, err := http.NewRequest("GET", "http://www.example.com", nil)
16 if err != nil {
17 t.Fatal("failed to create request", err)
18 }
19
20 session, err := store.New(req, "hello")
21 if err != nil {
22 t.Fatal("failed to create session", err)
23 }
24
25 store.Options.Path = "/foo"
26 if session.Options.Path != originalPath {
27 t.Fatalf("bad session path: got %q, want %q", session.Options.Path, originalPath)
28 }
29 }
30
31
32 func TestGH8FilesystemStore(t *testing.T) {
33 originalPath := "/"
34 store := NewFilesystemStore("")
35 store.Options.Path = originalPath
36 req, err := http.NewRequest("GET", "http://www.example.com", nil)
37 if err != nil {
38 t.Fatal("failed to create request", err)
39 }
40
41 session, err := store.New(req, "hello")
42 if err != nil {
43 t.Fatal("failed to create session", err)
44 }
45
46 store.Options.Path = "/foo"
47 if session.Options.Path != originalPath {
48 t.Fatalf("bad session path: got %q, want %q", session.Options.Path, originalPath)
49 }
50 }
51
52
53 func TestGH2MaxLength(t *testing.T) {
54 store := NewFilesystemStore("", []byte("some key"))
55 req, err := http.NewRequest("GET", "http://www.example.com", nil)
56 if err != nil {
57 t.Fatal("failed to create request", err)
58 }
59 w := httptest.NewRecorder()
60
61 session, err := store.New(req, "my session")
62 if err != nil {
63 t.Fatal("failed to create session", err)
64 }
65
66 session.Values["big"] = make([]byte, base64.StdEncoding.DecodedLen(4096*2))
67 err = session.Save(req, w)
68 if err == nil {
69 t.Fatal("expected an error, got nil")
70 }
71
72 store.MaxLength(4096 * 3)
73 err = session.Save(req, w)
74 if err != nil {
75 t.Fatal("failed to Save:", err)
76 }
77 }
78
79
80 func TestGH8FilesystemStoreDelete(t *testing.T) {
81 store := NewFilesystemStore("", []byte("some key"))
82 req, err := http.NewRequest("GET", "http://www.example.com", nil)
83 if err != nil {
84 t.Fatal("failed to create request", err)
85 }
86 w := httptest.NewRecorder()
87
88 session, err := store.New(req, "hello")
89 if err != nil {
90 t.Fatal("failed to create session", err)
91 }
92
93 err = session.Save(req, w)
94 if err != nil {
95 t.Fatal("failed to save session", err)
96 }
97
98 session.Options.MaxAge = -1
99 err = session.Save(req, w)
100 if err != nil {
101 t.Fatal("failed to delete session", err)
102 }
103 }
104
105
106 func TestGH8FilesystemStoreDelete2(t *testing.T) {
107 store := NewFilesystemStore("", []byte("some key"))
108 req, err := http.NewRequest("GET", "http://www.example.com", nil)
109 if err != nil {
110 t.Fatal("failed to create request", err)
111 }
112 w := httptest.NewRecorder()
113
114 session, err := store.New(req, "hello")
115 if err != nil {
116 t.Fatal("failed to create session", err)
117 }
118
119 err = session.Save(req, w)
120 if err != nil {
121 t.Fatal("failed to save session", err)
122 }
123
124 session.Options.MaxAge = 0
125 err = session.Save(req, w)
126 if err != nil {
127 t.Fatal("failed to delete session", err)
128 }
129 }
130
View as plain text