1
1
package gha
2
2
3
3
import (
4
+ "fmt"
4
5
"testing"
5
6
"time"
6
7
@@ -143,10 +144,8 @@ func Test_verifyBuildConfig(t *testing.T) {
143
144
prov1 := & slsav10.ProvenanceV1 {
144
145
Predicate : intotov1.ProvenancePredicate {
145
146
BuildDefinition : intotov1.ProvenanceBuildDefinition {
146
- ExternalParameters : map [string ]interface {}{
147
- "workflow" : map [string ]string {
148
- "path" : tt .path ,
149
- },
147
+ InternalParameters : map [string ]interface {}{
148
+ "GITHUB_WORKFLOW_REF" : fmt .Sprintf ("some/repo/%s@some-ref" , tt .path ),
150
149
},
151
150
},
152
151
},
@@ -1074,7 +1073,7 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1074
1073
expectedWorkflow := WorkflowIdentity {
1075
1074
BuildTrigger : "workflow_dispatch" ,
1076
1075
BuildConfigPath : asStringPointer ("release/workflow/path" ),
1077
- SubjectWorkflowRef : "path/to/trusted-builder @subject-ref" ,
1076
+ SubjectWorkflowRef : "repo/name/release/workflow/path @subject-ref" ,
1078
1077
SubjectSha1 : asStringPointer ("subject-sha" ),
1079
1078
SourceRepository : "repo/name" ,
1080
1079
SourceRef : asStringPointer ("source-ref" ),
@@ -1089,7 +1088,7 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1089
1088
numberResolvedDependencies int
1090
1089
workflowTriggerPath string
1091
1090
environment map [string ]interface {}
1092
- workflow WorkflowIdentity
1091
+ certificateIdentity WorkflowIdentity
1093
1092
err error
1094
1093
}{
1095
1094
{
@@ -1110,18 +1109,29 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1110
1109
"GITHUB_RUN_ATTEMPT" : "run-attempt" ,
1111
1110
"GITHUB_RUN_ID" : "run-id" ,
1112
1111
"GITHUB_SHA" : "source-sha" ,
1113
- "GITHUB_WORKFLOW_REF" : "path/to/trusted-builder @subject-ref" ,
1112
+ "GITHUB_WORKFLOW_REF" : "repo/name/release/workflow/path @subject-ref" ,
1114
1113
"GITHUB_WORKFLOW_SHA" : "subject-sha" ,
1115
1114
},
1116
- workflow : expectedWorkflow ,
1115
+ certificateIdentity : expectedWorkflow ,
1116
+ },
1117
+ {
1118
+ name : "correct provenance no env" ,
1119
+ subject : []intoto.Subject {
1120
+ {
1121
+ Digest : intotocommon.DigestSet {"sha512" : "abcd" },
1122
+ },
1123
+ },
1124
+ numberResolvedDependencies : 1 ,
1125
+ workflowTriggerPath : "release/workflow/path" ,
1126
+ certificateIdentity : expectedWorkflow ,
1117
1127
},
1118
1128
{
1119
1129
name : "unknown field" ,
1120
1130
environment : map [string ]interface {}{
1121
1131
"SOMETHING" : "workflow_dispatch" ,
1122
1132
},
1123
- workflow : expectedWorkflow ,
1124
- err : serrors .ErrorMismatchCertificate ,
1133
+ certificateIdentity : expectedWorkflow ,
1134
+ err : serrors .ErrorMismatchCertificate ,
1125
1135
},
1126
1136
{
1127
1137
name : "too many resolved dependencies" ,
@@ -1132,7 +1142,7 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1132
1142
},
1133
1143
numberResolvedDependencies : 2 ,
1134
1144
workflowTriggerPath : "release/workflow/path" ,
1135
- workflow : expectedWorkflow ,
1145
+ certificateIdentity : expectedWorkflow ,
1136
1146
err : serrors .ErrorNonVerifiableClaim ,
1137
1147
},
1138
1148
{
@@ -1144,7 +1154,7 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1144
1154
},
1145
1155
numberResolvedDependencies : 1 ,
1146
1156
workflowTriggerPath : "release/workflow/path" ,
1147
- workflow : expectedWorkflow ,
1157
+ certificateIdentity : expectedWorkflow ,
1148
1158
err : serrors .ErrorNonVerifiableClaim ,
1149
1159
},
1150
1160
{
@@ -1156,8 +1166,20 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1156
1166
},
1157
1167
numberResolvedDependencies : 1 ,
1158
1168
workflowTriggerPath : "release/workflow/path2" ,
1159
- workflow : expectedWorkflow ,
1160
- err : serrors .ErrorMismatchCertificate ,
1169
+ environment : map [string ]interface {}{
1170
+ "GITHUB_EVENT_NAME" : "workflow_dispatch" ,
1171
+ "GITHUB_REF" : "source-ref" ,
1172
+ "GITHUB_REPOSITORY" : "repo/name" ,
1173
+ "GITHUB_REPOSITORY_ID" : "source-id" ,
1174
+ "GITHUB_REPOSITORY_OWNER_ID" : "source-owner-id" ,
1175
+ "GITHUB_RUN_ATTEMPT" : "run-attempt" ,
1176
+ "GITHUB_RUN_ID" : "run-id" ,
1177
+ "GITHUB_SHA" : "source-sha" ,
1178
+ "GITHUB_WORKFLOW_REF" : "repo/name/release/workflow/path2@subject-ref" ,
1179
+ "GITHUB_WORKFLOW_SHA" : "subject-sha" ,
1180
+ },
1181
+ certificateIdentity : expectedWorkflow ,
1182
+ err : serrors .ErrorMismatchCertificate ,
1161
1183
},
1162
1184
{
1163
1185
name : "invalid trigger name" ,
@@ -1171,8 +1193,8 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1171
1193
environment : map [string ]interface {}{
1172
1194
"GITHUB_EVENT_NAME" : "workflow_dispatch2" ,
1173
1195
},
1174
- workflow : expectedWorkflow ,
1175
- err : serrors .ErrorMismatchCertificate ,
1196
+ certificateIdentity : expectedWorkflow ,
1197
+ err : serrors .ErrorMismatchCertificate ,
1176
1198
},
1177
1199
}
1178
1200
for _ , tt := range tests {
@@ -1199,7 +1221,7 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1199
1221
prov02 .Predicate .Materials = make ([]intotocommon.ProvenanceMaterial , tt .numberResolvedDependencies )
1200
1222
}
1201
1223
1202
- err := verifyProvenanceMatchesCertificate (prov02 , & tt .workflow )
1224
+ err := verifyProvenanceMatchesCertificate (prov02 , & tt .certificateIdentity )
1203
1225
if ! errCmp (err , tt .err ) {
1204
1226
t .Errorf (cmp .Diff (err , tt .err ))
1205
1227
}
@@ -1211,19 +1233,15 @@ func Test_verifyProvenanceMatchesCertificate(t *testing.T) {
1211
1233
Predicate : intotov1.ProvenancePredicate {
1212
1234
BuildDefinition : intotov1.ProvenanceBuildDefinition {
1213
1235
InternalParameters : tt .environment ,
1214
- ExternalParameters : map [string ]interface {}{
1215
- // TODO(#566): verify fields for v1.0 provenance.
1216
- "workflow" : map [string ]string {
1217
- "path" : tt .workflowTriggerPath ,
1218
- },
1219
- },
1236
+ // TODO(#566): verify fields for v1.0 provenance.
1220
1237
},
1221
1238
},
1222
1239
}
1240
+
1223
1241
if tt .numberResolvedDependencies > 0 {
1224
1242
prov1 .Predicate .BuildDefinition .ResolvedDependencies = make ([]intotov1.ResourceDescriptor , tt .numberResolvedDependencies )
1225
1243
}
1226
- err = verifyProvenanceMatchesCertificate (prov1 , & tt .workflow )
1244
+ err = verifyProvenanceMatchesCertificate (prov1 , & tt .certificateIdentity )
1227
1245
if ! errCmp (err , tt .err ) {
1228
1246
t .Errorf (cmp .Diff (err , tt .err ))
1229
1247
}
0 commit comments