v2 / vlib / x / sessions / tests / memory_store_test.v
54 lines · 42 sloc · 1.08 KB · c51d30bf5309653c6b573ec815268e69a78ea8cc
Raw
1import time
2import x.sessions
3
4const max_age = time.second
5
6pub struct User {
7 name string
8 age int
9}
10
11const default_user = User{
12 name: 'john'
13 age: 99
14}
15
16fn test_store_set() {
17 mut store := sessions.MemoryStore[User]{}
18 store.set('a', default_user)!
19
20 // check if created at time is not empty
21 assert store.data['a'].created_at != time.Time{}
22 assert store.data['a'].data == default_user
23
24 first_created := store.data['a'].created_at
25 store.set('a', User{ age: 99 })!
26
27 assert store.data['a'].created_at == first_created
28 assert store.data['a'].data.age == 99
29}
30
31fn test_store_get() {
32 mut store := sessions.MemoryStore[User]{}
33 store.set('a', default_user)!
34
35 if data := store.get('a', max_age) {
36 assert data == default_user
37 } else {
38 assert false, 'session data should not be none'
39 }
40}
41
42fn test_store_session_expired() {
43 mut store := sessions.MemoryStore[User]{}
44 store.set('a', default_user)!
45
46 time.sleep(2 * max_age)
47
48 if data := store.get('a', max_age) {
49 assert false, 'session should be expired!'
50 } else {
51 assert err.msg() == 'session is expired'
52 }
53 assert store.data.len == 0
54}
55