internal/store/keyexpiry_test.go

v1.41.0
gitbay/internal/store/keyexpiry_test.go history · blame · raw

48 lines · 1459 bytes

 1package store
 2
 3import (
 4	"testing"
 5	"time"
 6)
 7
 8func TestKeyExpiry(t *testing.T) {
 9	s, uid, _ := revokeFixture(t)
10	past, future := time.Now().Add(-time.Minute), time.Now().Add(time.Hour)
11	for fp, exp := range map[string]*time.Time{"SHA256:old": &past, "SHA256:new": &future, "SHA256:ever": nil} {
12		if err := s.AddSSHKeyFrom(uid, fp, "ssh-ed25519", []byte(fp), "full", "", KeyOrigin{ExpiresAt: exp}); err != nil {
13			t.Fatal(err)
14		}
15	}
16	now := time.Now()
17	ids := map[string]int64{}
18	for _, fp := range []string{"SHA256:old", "SHA256:new", "SHA256:ever"} {
19		k, err := s.SSHKeyByFingerprint(fp)
20		if err != nil {
21			t.Fatal(err)
22		}
23		ids[fp] = k.ID
24		byID, err := s.SSHKeyByID(k.ID)
25		if err != nil || (byID.ExpiresAt == nil) != (k.ExpiresAt == nil) {
26			t.Fatalf("%s by id: %+v %v", fp, byID, err)
27		}
28		if got, want := k.Expired(now), fp == "SHA256:old"; got != want {
29			t.Errorf("%s Expired = %v, want %v", fp, got, want)
30		}
31	}
32	live, err := s.LiveSSHKeys([]int64{ids["SHA256:old"], ids["SHA256:new"], ids["SHA256:ever"]})
33	if err != nil {
34		t.Fatal(err)
35	}
36	if live[ids["SHA256:old"]] || !live[ids["SHA256:new"]] || !live[ids["SHA256:ever"]] {
37		t.Fatalf("live = %v", live)
38	}
39	keys, err := s.ListSSHKeys(uid)
40	if err != nil || len(keys) != 3 {
41		t.Fatalf("list: %+v %v", keys, err)
42	}
43	for _, k := range keys {
44		if k.Fingerprint == "SHA256:ever" && k.ExpiresAt != nil {
45			t.Fatalf("list: %s should have nil ExpiresAt: %+v", k.Fingerprint, k)
46		}
47	}
48}