@@ -382,6 +382,101 @@ func Test_verifySourceURI(t *testing.T) {
382
382
}
383
383
}
384
384
385
+ func Test_isValidDelegatorBuilderID (t * testing.T ) {
386
+ t .Parallel ()
387
+ tests := []struct {
388
+ name string
389
+ prov * intoto.ProvenanceStatement
390
+ err error
391
+ }{
392
+ {
393
+ name : "no @" ,
394
+ prov : & intoto.ProvenanceStatement {
395
+ Predicate : slsa02.ProvenancePredicate {
396
+ Builder : slsacommon.ProvenanceBuilder {
397
+ ID : "some/builderID" ,
398
+ },
399
+ },
400
+ },
401
+ err : serrors .ErrorInvalidBuilderID ,
402
+ },
403
+ {
404
+ name : "invalid ref" ,
405
+ prov : & intoto.ProvenanceStatement {
406
+ Predicate : slsa02.ProvenancePredicate {
407
+ Builder : slsacommon.ProvenanceBuilder {
408
+
409
+ },
410
+ },
411
+ },
412
+ err : serrors .ErrorInvalidRef ,
413
+ },
414
+ {
415
+ name : "invalid ref not tag" ,
416
+ prov : & intoto.ProvenanceStatement {
417
+ Predicate : slsa02.ProvenancePredicate {
418
+ Builder : slsacommon.ProvenanceBuilder {
419
+ ID : "some/builderID@refs/head/v1.2.3" ,
420
+ },
421
+ },
422
+ },
423
+ err : serrors .ErrorInvalidRef ,
424
+ },
425
+ {
426
+ name : "invalid ref not full semver" ,
427
+ prov : & intoto.ProvenanceStatement {
428
+ Predicate : slsa02.ProvenancePredicate {
429
+ Builder : slsacommon.ProvenanceBuilder {
430
+ ID : "some/builderID@refs/heads/v1.2" ,
431
+ },
432
+ },
433
+ },
434
+ err : serrors .ErrorInvalidRef ,
435
+ },
436
+ {
437
+ name : "valid builder" ,
438
+ prov : & intoto.ProvenanceStatement {
439
+ Predicate : slsa02.ProvenancePredicate {
440
+ Builder : slsacommon.ProvenanceBuilder {
441
+ ID : "some/builderID@refs/tags/v1.2.3" ,
442
+ },
443
+ },
444
+ },
445
+ },
446
+ }
447
+ for _ , tt := range tests {
448
+ tt := tt // Re-initializing variable so it is not changed while executing the closure below
449
+ t .Run (tt .name , func (t * testing.T ) {
450
+ t .Parallel ()
451
+
452
+ prov := & v02.ProvenanceV02 {
453
+ ProvenanceStatement : tt .prov ,
454
+ }
455
+
456
+ err := isValidDelegatorBuilderID (prov )
457
+ if ! errCmp (err , tt .err ) {
458
+ t .Errorf (cmp .Diff (err , tt .err ))
459
+ }
460
+
461
+ // Update to v1 SLSA provenance.
462
+ prov1 := & v1.ProvenanceV1 {
463
+ Predicate : slsa1.ProvenancePredicate {
464
+ RunDetails : slsa1.ProvenanceRunDetails {
465
+ Builder : slsa1.Builder {
466
+ ID : tt .prov .Predicate .Builder .ID ,
467
+ },
468
+ },
469
+ },
470
+ }
471
+
472
+ err = isValidDelegatorBuilderID (prov1 )
473
+ if ! errCmp (err , tt .err ) {
474
+ t .Errorf (cmp .Diff (err , tt .err ))
475
+ }
476
+ })
477
+ }
478
+ }
479
+
385
480
func Test_verifyBuilderIDExactMatch (t * testing.T ) {
386
481
t .Parallel ()
387
482
tests := []struct {
0 commit comments