Check SaveSession works when an existing session is present
(cherry picked from commit 9dc1a96d81
)
This commit is contained in:
parent
ae0258a203
commit
2e2327af6c
@ -195,7 +195,14 @@ func (store *SessionStore) storeValue(value string, expiresOn time.Time, request
|
|||||||
var ticket *TicketData
|
var ticket *TicketData
|
||||||
if requestCookie != nil {
|
if requestCookie != nil {
|
||||||
var err error
|
var err error
|
||||||
ticket, err = decodeTicket(store.CookieOptions.CookieName, requestCookie.Value)
|
val, _, ok := cookie.Validate(requestCookie, store.CookieOptions.CookieSecret, store.CookieOptions.CookieExpire)
|
||||||
|
if !ok {
|
||||||
|
ticket, err = newTicket()
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("error creating new ticket: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ticket, err = decodeTicket(store.CookieOptions.CookieName, val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
@ -137,17 +137,45 @@ var _ = Describe("NewSessionStore", func() {
|
|||||||
|
|
||||||
SessionStoreInterfaceTests := func(persistent bool) {
|
SessionStoreInterfaceTests := func(persistent bool) {
|
||||||
Context("when Save is called", func() {
|
Context("when Save is called", func() {
|
||||||
BeforeEach(func() {
|
Context("with no existing session", func() {
|
||||||
err := ss.Save(response, request, session)
|
BeforeEach(func() {
|
||||||
Expect(err).ToNot(HaveOccurred())
|
err := ss.Save(response, request, session)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("sets a `set-cookie` header in the response", func() {
|
||||||
|
Expect(response.Header().Get("set-cookie")).ToNot(BeEmpty())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Ensures the session CreatedAt is not zero", func() {
|
||||||
|
Expect(session.CreatedAt.IsZero()).To(BeFalse())
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
It("sets a `set-cookie` header in the response", func() {
|
Context("with an expired saved session", func() {
|
||||||
Expect(response.Header().Get("set-cookie")).ToNot(BeEmpty())
|
var err error
|
||||||
})
|
BeforeEach(func() {
|
||||||
|
By("saving a session")
|
||||||
|
req := httptest.NewRequest("GET", "http://example.com/", nil)
|
||||||
|
saveResp := httptest.NewRecorder()
|
||||||
|
err = ss.Save(saveResp, req, session)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
It("Ensures the session CreatedAt is not zero", func() {
|
By("and clearing the session")
|
||||||
Expect(session.CreatedAt.IsZero()).To(BeFalse())
|
for _, c := range saveResp.Result().Cookies() {
|
||||||
|
request.AddCookie(c)
|
||||||
|
}
|
||||||
|
clearResp := httptest.NewRecorder()
|
||||||
|
err = ss.Clear(clearResp, request)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
By("then saving a request with the cleared session")
|
||||||
|
err = ss.Save(response, request, session)
|
||||||
|
})
|
||||||
|
|
||||||
|
It("no error should occur", func() {
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
CheckCookieOptions()
|
CheckCookieOptions()
|
||||||
|
Loading…
Reference in New Issue
Block a user