blob: cb328981377f1ce6f627de06a698c3705b10d462 [file] [log] [blame]
package verify
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/theupdateframework/go-tuf/data"
)
func TestDelegationsVerifier(t *testing.T) {
var verifierTests = []struct {
testName string
delegations *data.Delegations
initErr error
unmarshalErr error
}{
{
testName: "empty state",
delegations: &data.Delegations{},
unmarshalErr: ErrNoSignatures,
},
{
testName: "top level role",
delegations: &data.Delegations{Roles: []data.DelegatedRole{
{Name: "root"},
}},
initErr: ErrInvalidDelegatedRole,
},
{
testName: "invalid role",
delegations: &data.Delegations{Roles: []data.DelegatedRole{
{Threshold: 0},
}},
initErr: ErrInvalidThreshold,
},
{
testName: "invalid keys",
delegations: &data.Delegations{Keys: map[string]*data.PublicKey{
"a": &data.PublicKey{Type: data.KeySchemeEd25519},
}},
initErr: ErrWrongID{},
},
}
for _, tt := range verifierTests {
t.Run(tt.testName, func(t *testing.T) {
verifier, err := NewDelegationsVerifier(tt.delegations)
assert.NotNil(t, verifier)
assert.Equal(t, tt.initErr, err)
if err == nil {
var targets data.Targets
err = verifier.Unmarshal([]byte(`{"a":"b"}`), targets, "tree", 0)
assert.Equal(t, tt.unmarshalErr, err)
}
})
}
}