This repository has been archived by the owner on Jan 13, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsessionmanager_test.go
168 lines (138 loc) · 5.24 KB
/
sessionmanager_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/*
Digivance MVC Application Framework - Unit Tests
Session Manager Tests
Dan Mayor (dmayor@digivance.com)
This file defines the version 0.3.0 compatibility of sessionmanager.go functions. These functions are written
to demonstrate and test the intended use cases of the functions in sessionmanager.go
*/
package mvcapp_test
import (
"testing"
"time"
"github.com/digivance/mvcapp"
)
// TestNewSessionManager ensures that mvcapp.NewSessionManager returns the expected value
func TestNewSessionManager(t *testing.T) {
manager := mvcapp.NewSessionManager()
if manager == nil {
t.Fatal("Failed to create session manager")
}
}
// TestNewSessionManagerFromConfig ensures that mvcapp.NewSessionManagerFromConfig returns
// the expected value
func TestNewSessionManagerFromConfig(t *testing.T) {
config := mvcapp.NewConfigurationManager()
manager := mvcapp.NewSessionManagerFromConfig(config)
if manager.SessionTimeout != (time.Duration(config.HTTPSessionTimeout) * time.Minute) {
t.Error("Failed to create new session manager from provided configuration object")
}
}
// TestSessionManager_GetSession ensures that SessionManager.GetSession returns the expected value
func TestSessionManager_GetSession(t *testing.T) {
session := mvcapp.NewSession()
session.Set("Test", "Val")
manager := mvcapp.NewSessionManager()
manager.SetSession(session)
testSession := manager.GetSession(session.ID)
if testSession.ID != session.ID {
t.Fatal("Failed to get browser session")
}
if testSession.Get("Test") != session.Get("Test") {
t.Error("Failed to validate that the session key value pairs pass through")
t.Log(testSession.Get("Test"))
}
}
// TestSessionManager_Contains ensures that SessionMnager.Contains returns the expected value
func TestSessionManager_Contains(t *testing.T) {
session := mvcapp.NewSession()
manager := mvcapp.NewSessionManager()
manager.SetSession(session)
if !manager.Contains(session.ID) {
t.Error("Failed to verify that session manager contains the test browser session")
}
if manager.Contains("fubar") {
t.Error("Failed to identify missing browser session")
}
}
// TestSessionManager.CreateSession ensures that SessionManager.CreateSession operates as expected
func TestSessionManager_CreateSession(t *testing.T) {
manager := mvcapp.NewSessionManager()
session := manager.CreateSession("TestID")
if !manager.Contains(session.ID) {
t.Error("Failed to create new browser session from session manager")
}
}
// TestSessionManager.SetSession ensures that SessionManager.SetSession operates as expected
func TestSessionManager_SetSession(t *testing.T) {
manager := mvcapp.NewSessionManager()
session := manager.CreateSession("TestID")
newSession := mvcapp.NewSession()
newSession.ID = session.ID
newSession.Set("Test", "Value")
manager.SetSession(newSession)
if len(newSession.Values) <= 0 {
t.Error("Failed to set newSession values")
}
}
// TestSessionManager_DropSession ensures that SessionManager.DropSession operates as expected
func TestSessionManager_DropSession(t *testing.T) {
manager := mvcapp.NewSessionManager()
manager.CreateSession("Deletable")
manager.DropSession("Deletable")
if manager.Contains("Deletable") {
t.Error("Failed to drop zero browser session")
}
manager.CreateSession("Deletable")
manager.CreateSession("First")
manager.DropSession("Deletable")
if manager.Contains("Deletable") {
t.Error("Failed to drop first browser session")
}
manager.CreateSession("Deletable")
manager.CreateSession("Second")
manager.DropSession("Deletable")
if manager.Contains("Deletable") {
t.Error("Failed to drop second browser session")
}
manager.CreateSession("Deletable")
manager.CreateSession("Third")
manager.DropSession("Deletable")
if manager.Contains("Deletable") {
t.Error("Failed to drop third browser session")
}
if !manager.Contains("First") || !manager.Contains("Second") || !manager.Contains("Third") {
t.Error("Failed to retain the proper browser sessions")
}
}
// TestSessionManager_CleanSessions ensures that SessionManager.CleanSessions operates as expected
func TestSessionManager_CleanSessions(t *testing.T) {
manager := mvcapp.NewSessionManager()
session := manager.CreateSession("Deletable")
session.ActivityDate = time.Now().Add(-30 * time.Minute)
manager.CreateSession("A")
manager.CleanSessions()
if manager.Contains("Deletable") {
t.Error("Failed to delete zero expired session")
}
session = manager.CreateSession("Deletable")
session.ActivityDate = time.Now().Add(-30 * time.Minute)
manager.CreateSession("B")
manager.CleanSessions()
if manager.Contains("Deletable") {
t.Error("Failed to delete first expired session")
}
session = manager.CreateSession("Deletable")
session.ActivityDate = time.Now().Add(-30 * time.Minute)
manager.CreateSession("C")
manager.CleanSessions()
if manager.Contains("Deletable") {
t.Error("Failed to delete second expired session")
}
session = manager.CreateSession("Deletable")
session.ActivityDate = time.Now().Add(-30 * time.Minute)
manager.CreateSession("D")
manager.CleanSessions()
if manager.Contains("Deletable") {
t.Error("Failed to delete third expired session")
}
}