diff options
-rw-r--r-- | store.go | 6 | ||||
-rw-r--r-- | store_test.go | 48 |
2 files changed, 52 insertions, 2 deletions
@@ -73,7 +73,8 @@ func (s *CookieStore) Get(r *http.Request, name string) (*Session, error) { // decoded session after the first call. func (s *CookieStore) New(r *http.Request, name string) (*Session, error) { session := NewSession(s, name) - session.Options = &(*s.Options) + opts := *s.Options + session.Options = &opts session.IsNew = true var err error if c, errCookie := r.Cookie(name); errCookie == nil { @@ -148,7 +149,8 @@ func (s *FilesystemStore) Get(r *http.Request, name string) (*Session, error) { // See CookieStore.New(). func (s *FilesystemStore) New(r *http.Request, name string) (*Session, error) { session := NewSession(s, name) - session.Options = &(*s.Options) + opts := *s.Options + session.Options = &opts session.IsNew = true var err error if c, errCookie := r.Cookie(name); errCookie == nil { diff --git a/store_test.go b/store_test.go new file mode 100644 index 0000000..77fea6b --- /dev/null +++ b/store_test.go @@ -0,0 +1,48 @@ +package sessions + +import ( + "net/http" + "testing" +) + +// Test for GH-8 for CookieStore +func TestGH8CookieStore(t *testing.T) { + originalPath := "/" + store := NewCookieStore() + store.Options.Path = originalPath + req, err := http.NewRequest("GET", "http://www.example.com", nil) + if err != nil { + t.Fatal("failed to create request", err) + } + + session, err := store.New(req, "hello") + if err != nil { + t.Fatal("failed to create session", err) + } + + store.Options.Path = "/foo" + if session.Options.Path != originalPath { + t.Fatalf("bad session path: got %q, want %q", session.Options.Path, originalPath) + } +} + +// Test for GH-8 for FilesystemStore +func TestGH8FilesystemStore(t *testing.T) { + originalPath := "/" + store := NewFilesystemStore("") + store.Options.Path = originalPath + req, err := http.NewRequest("GET", "http://www.example.com", nil) + if err != nil { + t.Fatal("failed to create request", err) + } + + session, err := store.New(req, "hello") + if err != nil { + t.Fatal("failed to create session", err) + } + + store.Options.Path = "/foo" + if session.Options.Path != originalPath { + t.Fatalf("bad session path: got %q, want %q", session.Options.Path, originalPath) + } +} |