internal/store/pushtokens_test.go

main
gitbay/internal/store/pushtokens_test.go history · blame · raw

49 lines · 1226 bytes

1 symbol in this file
 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}