|
1
|
package bridge |
|
2
|
|
|
3
|
import ( |
|
4
|
"testing" |
|
5
|
"time" |
|
6
|
) |
|
7
|
|
|
8
|
func TestUsersFiltersAndPrunesExpiredWebUsers(t *testing.T) { |
|
9
|
b := &Bot{ |
|
10
|
nick: "bridge", |
|
11
|
webUserTTL: 5 * time.Minute, |
|
12
|
webUsers: map[string]map[string]time.Time{ |
|
13
|
"#general": { |
|
14
|
"recent-user": time.Now().Add(-2 * time.Minute), |
|
15
|
"stale-user": time.Now().Add(-10 * time.Minute), |
|
16
|
}, |
|
17
|
}, |
|
18
|
} |
|
19
|
|
|
20
|
got := b.Users("#general") |
|
21
|
if len(got) != 1 || got[0] != "recent-user" { |
|
22
|
t.Fatalf("Users() = %v, want [recent-user]", got) |
|
23
|
} |
|
24
|
|
|
25
|
if _, ok := b.webUsers["#general"]["stale-user"]; ok { |
|
26
|
t.Fatalf("stale-user was not pruned from webUsers") |
|
27
|
} |
|
28
|
} |
|
29
|
|
|
30
|
func TestSetWebUserTTLDefaultsNonPositiveValues(t *testing.T) { |
|
31
|
b := &Bot{} |
|
32
|
|
|
33
|
b.SetWebUserTTL(0) |
|
34
|
if b.webUserTTL != defaultWebUserTTL { |
|
35
|
t.Fatalf("SetWebUserTTL(0) = %v, want %v", b.webUserTTL, defaultWebUserTTL) |
|
36
|
} |
|
37
|
|
|
38
|
b.SetWebUserTTL(-1 * time.Minute) |
|
39
|
if b.webUserTTL != defaultWebUserTTL { |
|
40
|
t.Fatalf("SetWebUserTTL(-1m) = %v, want %v", b.webUserTTL, defaultWebUserTTL) |
|
41
|
} |
|
42
|
} |
|
43
|
|
|
44
|
func TestTouchUserMarksNickActive(t *testing.T) { |
|
45
|
b := &Bot{webUsers: make(map[string]map[string]time.Time)} |
|
46
|
|
|
47
|
b.TouchUser("#general", "codex-test") |
|
48
|
|
|
49
|
if b.webUsers["#general"] == nil { |
|
50
|
t.Fatal("TouchUser did not initialize channel map") |
|
51
|
} |
|
52
|
if _, ok := b.webUsers["#general"]["codex-test"]; !ok { |
|
53
|
t.Fatal("TouchUser did not record nick") |
|
54
|
} |
|
55
|
} |
|
56
|
|