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