@@ -592,26 +592,24 @@ func TestVerifyDelegate(t *testing.T) {
592592 },
593593 Roles : []DelegatedRole {
594594 {
595- Name : "test" ,
596- KeyIDs : []string {delegateeKey .ID ()},
595+ Name : "test" ,
596+ KeyIDs : []string {delegateeKey .ID ()},
597+ Threshold : 1 ,
597598 },
598599 },
599600 }
601+
600602 targets .Signed .Delegations = delegations
601- err = targets .VerifyDelegate ("test " , root )
602- assert .NoError (t , err )
603+ err = targets .VerifyDelegate ("root " , targets )
604+ assert .Errorf (t , err , "Verifying test failed, not enough signatures, got %d, want %d" , 0 , 1 )
603605 err = targets .VerifyDelegate ("test" , targets )
604- assert .NoError (t , err )
606+ assert .Errorf (t , err , "Verifying test failed, not enough signatures, got %d, want %d" , 0 , 1 )
605607
606608 err = targets .VerifyDelegate ("non-existing" , root )
607609 assert .EqualError (t , err , "value error: no delegation found for non-existing" )
608610 err = targets .VerifyDelegate ("non-existing" , targets )
609611 assert .EqualError (t , err , "value error: no delegation found for non-existing" )
610612
611- targets .Signed .Delegations .Roles [0 ].Threshold = 1
612- err = targets .VerifyDelegate ("test" , targets )
613- assert .Errorf (t , err , "Verifying test failed, not enough signatures, got %d, want %d" , 0 , 1 )
614-
615613 delegations .Keys ["incorrectkey" ] = delegations .Keys [delegateeKey .ID ()]
616614 delete (delegations .Keys , delegateeKey .ID ())
617615 err = targets .VerifyDelegate ("test" , root )
@@ -626,6 +624,40 @@ func TestVerifyDelegate(t *testing.T) {
626624 assert .EqualError (t , err , "type error: call is valid only on delegator metadata (should be either root or targets)" )
627625}
628626
627+ func TestVerifyDelegateThreshold (t * testing.T ) {
628+ root := Root (fixedExpire )
629+ err := root .VerifyDelegate ("test" , root )
630+ assert .EqualError (t , err , "value error: no delegation found for test" )
631+
632+ targets := Targets (fixedExpire )
633+ err = targets .VerifyDelegate ("test" , targets )
634+ assert .EqualError (t , err , "value error: no delegations found" )
635+
636+ key , _ , err := ed25519 .GenerateKey (nil )
637+ assert .NoError (t , err )
638+
639+ delegateeKey , _ := KeyFromPublicKey (key )
640+ delegations := & Delegations {
641+ Keys : map [string ]* Key {
642+ delegateeKey .ID (): delegateeKey ,
643+ },
644+ Roles : []DelegatedRole {
645+ {
646+ Name : "test" ,
647+ KeyIDs : []string {delegateeKey .ID ()},
648+ Threshold : 0 ,
649+ },
650+ },
651+ }
652+ targets .Signed .Delegations = delegations
653+ err = targets .VerifyDelegate ("test" , root )
654+ assert .ErrorIs (t , err , & ErrValue {})
655+ assert .EqualError (t , err , "value error: insufficient threshold (0) configured for test" )
656+ err = targets .VerifyDelegate ("test" , targets )
657+ assert .ErrorIs (t , err , & ErrValue {})
658+ assert .EqualError (t , err , "value error: insufficient threshold (0) configured for test" )
659+ }
660+
629661func TestVerifyLengthHashesTargetFiles (t * testing.T ) {
630662 targetFiles := TargetFile ()
631663 targetFiles .Hashes = map [string ]HexBytes {}
0 commit comments