1 // Copyright (c) 2012-2016 The Revel Framework Authors, All rights reserved.
2 // Revel Framework source code and usage is governed by a MIT style
3 // license that can be found in the LICENSE file.
10 "github.com/revel/revel"
11 "github.com/revel/revel/session"
12 "github.com/stretchr/testify/assert"
17 func TestCookieRestore(t *testing.T) {
19 session.InitSession(revel.RevelLog)
21 cse := revel.NewSessionCookieEngine()
22 originSession := session.NewSession()
23 setSharedDataTest(originSession)
24 originSession["foo"] = "foo"
25 originSession["bar"] = "bar"
26 cookie := cse.GetCookie(originSession)
27 if !cookie.Expires.IsZero() {
28 t.Error("incorrect cookie expire", cookie.Expires)
31 restoredSession := session.NewSession()
32 cse.DecodeCookie(revel.GoCookie(*cookie), restoredSession)
33 a.Equal("foo",restoredSession["foo"])
34 a.Equal("bar",restoredSession["bar"])
35 testSharedData(originSession, restoredSession, t, a)
38 func TestCookieSessionExpire(t *testing.T) {
39 session.InitSession(revel.RevelLog)
40 cse := revel.NewSessionCookieEngine()
41 cse.ExpireAfterDuration = time.Hour
42 session := session.NewSession()
43 session["user"] = "Tom"
44 var cookie *http.Cookie
45 for i := 0; i < 3; i++ {
46 cookie = cse.GetCookie(session)
47 time.Sleep(time.Second)
49 cse.DecodeCookie(revel.GoCookie(*cookie), session)
51 expectExpire := time.Now().Add(cse.ExpireAfterDuration)
52 if cookie.Expires.Unix() < expectExpire.Add(-time.Second).Unix() {
53 t.Error("expect expires", cookie.Expires, "after", expectExpire.Add(-time.Second))
55 if cookie.Expires.Unix() > expectExpire.Unix() {
56 t.Error("expect expires", cookie.Expires, "before", expectExpire)
59 // Test that the expiration time is zero for a "browser" session
60 session.SetNoExpiration()
61 cookie = cse.GetCookie(session)
62 if !cookie.Expires.IsZero() {
63 t.Error("expect cookie expires is zero")
66 // Check the default session is set
67 session.SetDefaultExpiration()
68 cookie = cse.GetCookie(session)
69 expectExpire = time.Now().Add(cse.ExpireAfterDuration)
70 if cookie.Expires.Unix() < expectExpire.Add(-time.Second).Unix() {
71 t.Error("expect expires", cookie.Expires, "after", expectExpire.Add(-time.Second))
73 if cookie.Expires.Unix() > expectExpire.Unix() {
74 t.Error("expect expires", cookie.Expires, "before", expectExpire)