Add API Framework Revel Source Files
[iec.git] / src / foundation / api / revel / session / session_cookie_test.go
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.
4
5 package session_test
6
7 import (
8         "testing"
9
10         "github.com/revel/revel"
11         "github.com/revel/revel/session"
12         "github.com/stretchr/testify/assert"
13         "net/http"
14         "time"
15 )
16
17 func TestCookieRestore(t *testing.T) {
18         a := assert.New(t)
19         session.InitSession(revel.RevelLog)
20
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)
29         }
30
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)
36 }
37
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)
48
49                 cse.DecodeCookie(revel.GoCookie(*cookie), session)
50         }
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))
54         }
55         if cookie.Expires.Unix() > expectExpire.Unix() {
56                 t.Error("expect expires", cookie.Expires, "before", expectExpire)
57         }
58
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")
64         }
65
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))
72         }
73         if cookie.Expires.Unix() > expectExpire.Unix() {
74                 t.Error("expect expires", cookie.Expires, "before", expectExpire)
75         }
76 }