Check SaveSession works when an existing session is present
(cherry picked from commit 9dc1a96d817741632cb476456755a645b732db7d)
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 | ||||
| 	if requestCookie != nil { | ||||
| 		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 { | ||||
| 			return "", err | ||||
| 		} | ||||
|  |  | |||
|  | @ -137,17 +137,45 @@ var _ = Describe("NewSessionStore", func() { | |||
| 
 | ||||
| 	SessionStoreInterfaceTests := func(persistent bool) { | ||||
| 		Context("when Save is called", func() { | ||||
| 			BeforeEach(func() { | ||||
| 				err := ss.Save(response, request, session) | ||||
| 				Expect(err).ToNot(HaveOccurred()) | ||||
| 			Context("with no existing session", func() { | ||||
| 				BeforeEach(func() { | ||||
| 					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() { | ||||
| 				Expect(response.Header().Get("set-cookie")).ToNot(BeEmpty()) | ||||
| 			}) | ||||
| 			Context("with an expired saved session", func() { | ||||
| 				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() { | ||||
| 				Expect(session.CreatedAt.IsZero()).To(BeFalse()) | ||||
| 					By("and clearing the session") | ||||
| 					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() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue