...

Source file src/github.com/theupdateframework/go-tuf/local_store_test.go

Documentation: github.com/theupdateframework/go-tuf

     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  			// Add two signers to role "a".
    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  			// Add one signer to role "b".
    43  			bSigner, err := keys.GenerateEd25519Key()
    44  			assert.NoError(t, err)
    45  			err = store.SaveSigner("b", bSigner)
    46  			assert.NoError(t, err)
    47  
    48  			// Add to b again to test deduplication.
    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