internal/store/pushtokens_test.go
49 lines · 1226 bytes
1package store
2
3import (
4 "errors"
5 "testing"
6 "time"
7)
8
9func TestPushTokens(t *testing.T) {
10 s := open(t)
11 if err := s.MigrateUp(); err != nil {
12 t.Fatal(err)
13 }
14 uid, err := s.CreateUser("alice", false)
15 if err != nil {
16 t.Fatal(err)
17 }
18 repoID, err := s.CreateRepo("user", uid, "app", "public")
19 if err != nil {
20 t.Fatal(err)
21 }
22 token, err := s.CreatePushToken(repoID, uid, "full")
23 if err != nil {
24 t.Fatal(err)
25 }
26 got, err := s.PushTokenByHash(HashToken(token))
27 if err != nil || got != (PushToken{RepoID: repoID, UserID: uid, Scope: "full"}) {
28 t.Fatalf("lookup = %+v, %v", got, err)
29 }
30 if err := s.DeletePushToken(token); err != nil {
31 t.Fatal(err)
32 }
33 if _, err := s.PushTokenByHash(HashToken(token)); !errors.Is(err, ErrNotFound) {
34 t.Fatalf("after delete: %v", err)
35 }
36
37 // A token whose receive-pack never cleaned up is swept after a day.
38 stale, err := s.CreatePushToken(repoID, uid, "full")
39 if err != nil {
40 t.Fatal(err)
41 }
42 swept, err := s.Sweep(Retention{}, time.Now().Add(25*time.Hour))
43 if err != nil || swept["push_tokens"] != 1 {
44 t.Fatalf("sweep = %v, %v", swept, err)
45 }
46 if _, err := s.PushTokenByHash(HashToken(stale)); !errors.Is(err, ErrNotFound) {
47 t.Fatalf("after sweep: %v", err)
48 }
49}