1 package tuf
2
3 import (
4 "os"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8 "github.com/theupdateframework/go-tuf/pkg/keys"
9 )
10
11 func TestLocalStoreSigners(t *testing.T) {
12 tmpdir, err := os.MkdirTemp("", "")
13 if err != nil {
14 t.Fatal(err)
15 }
16 defer func() {
17 os.RemoveAll(tmpdir)
18 }()
19
20 stores := map[string]LocalStore{
21 "MemoryStore": MemoryStore(nil, nil),
22 "FileSystemStore": FileSystemStore(tmpdir, nil),
23 }
24
25 for name, store := range stores {
26 t.Run(name, func(t *testing.T) {
27 signers, err := store.GetSigners("abc")
28 assert.NoError(t, err)
29 assert.Equal(t, len(signers), 0)
30
31
32 aSigner1, err := keys.GenerateEd25519Key()
33 assert.NoError(t, err)
34 err = store.SaveSigner("a", aSigner1)
35 assert.NoError(t, err)
36
37 aSigner2, err := keys.GenerateEd25519Key()
38 assert.NoError(t, err)
39 err = store.SaveSigner("a", aSigner2)
40 assert.NoError(t, err)
41
42
43 bSigner, err := keys.GenerateEd25519Key()
44 assert.NoError(t, err)
45 err = store.SaveSigner("b", bSigner)
46 assert.NoError(t, err)
47
48
49 err = store.SaveSigner("b", bSigner)
50 assert.NoError(t, err)
51
52 signers, err = store.GetSigners("a")
53 assert.NoError(t, err)
54 assert.ElementsMatch(t, []keys.Signer{aSigner1, aSigner2}, signers)
55
56 signers, err = store.GetSigners("b")
57 assert.NoError(t, err)
58 assert.ElementsMatch(t, []keys.Signer{bSigner}, signers)
59
60 a1KeyIDs := aSigner1.PublicData().IDs()
61 a2KeyIDs := aSigner2.PublicData().IDs()
62 bKeyIDs := bSigner.PublicData().IDs()
63
64 assert.Equal(t, []keys.Signer{aSigner1}, store.SignersForKeyIDs(a1KeyIDs))
65 assert.Equal(t, []keys.Signer{aSigner2}, store.SignersForKeyIDs(a2KeyIDs))
66 assert.ElementsMatch(t, []keys.Signer{aSigner1, aSigner2}, store.SignersForKeyIDs(append(a1KeyIDs, a2KeyIDs...)))
67 assert.Equal(t, []keys.Signer{bSigner}, store.SignersForKeyIDs(bKeyIDs))
68 })
69 }
70 }
71
View as plain text