package signer_test import ( "encoding/json" "sort" "testing" "github.com/theupdateframework/go-tuf/data" "github.com/theupdateframework/go-tuf/internal/signer" "github.com/theupdateframework/go-tuf/pkg/keys" ) type mockSigner struct { value json.RawMessage } func (s *mockSigner) MarshalPrivateKey() (*data.PrivateKey, error) { panic("not implemented") } func (s *mockSigner) UnmarshalPrivateKey(key *data.PrivateKey) error { panic("not implemented") } func (s *mockSigner) PublicData() *data.PublicKey { return &data.PublicKey{ Type: "mock", Scheme: "mock", Algorithms: []data.HashAlgorithm{"mock"}, Value: s.value, } } func (s *mockSigner) SignMessage(message []byte) ([]byte, error) { panic("not implemented") } func TestSignerSortByIDs(t *testing.T) { s1 := &mockSigner{ value: json.RawMessage(`{"mock": 1}`), } s2 := &mockSigner{ value: json.RawMessage(`{"mock": 2}`), } s3 := &mockSigner{ value: json.RawMessage(`{"mock": 3}`), } s4 := &mockSigner{ value: json.RawMessage(`{"mock": 4}`), } s5 := &mockSigner{ value: json.RawMessage(`{"mock": 5}`), } s := []keys.Signer{ s1, s2, s3, s4, s5, } sort.Sort(signer.ByIDs(s)) signerIDs := []string{} for i, signer := range s { ids := signer.PublicData().IDs() if len(ids) != 1 { t.Errorf("Signer %v IDs %v should have length 1", i, ids) } signerIDs = append(signerIDs, ids[0]) } if !sort.StringsAreSorted(signerIDs) { t.Errorf("Signers incorrectly sorted: %+v", signerIDs) } }