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