@@ -79,18 +79,33 @@ func (s *referrerTestSuite) TestInitialization() {
7979}
8080
8181func (s * referrerTestSuite ) TestExtractReferrers () {
82+ var fullAttReferrer = & Referrer {
83+ Digest : "sha256:1a077137aef7ca208b80c339769d0d7eecacc2850368e56e834cda1750ce413a" ,
84+ Kind : "ATTESTATION" ,
85+ }
86+
87+ var withDuplicatedRefferer = & Referrer {
88+ Digest : "sha256:47e94045e8ffb5ea9a4939a03a21c5ad26f4ea7d463ac6ec46dac15349f45b3f" ,
89+ Kind : "ATTESTATION" ,
90+ }
91+
92+ var withGitSubject = & Referrer {
93+ Digest : "sha256:de36d470d792499b1489fc0e6623300fc8822b8f0d2981bb5ec563f8dde723c7" ,
94+ Kind : "ATTESTATION" ,
95+ }
96+
8297 testCases := []struct {
8398 name string
8499 inputPath string
85100 expectErr bool
86101 want []* Referrer
87102 }{
88103 {
89- name : "basic " ,
104+ name : "all materials linked bidirectionally to the attestation " ,
90105 inputPath : "testdata/attestations/full.json" ,
91106 want : []* Referrer {
92107 {
93- Digest : "sha256:1a077137aef7ca208b80c339769d0d7eecacc2850368e56e834cda1750ce413a" ,
108+ Digest : fullAttReferrer . Digest ,
94109 Kind : "ATTESTATION" ,
95110 Downloadable : true ,
96111 Metadata : map [string ]string {
@@ -117,11 +132,14 @@ func (s *referrerTestSuite) TestExtractReferrers() {
117132 {
118133 Digest : "sha256:264f55a6ff9cec2f4742a9faacc033b29f65c04dd4480e71e23579d484288d61" ,
119134 Kind : "CONTAINER_IMAGE" ,
135+ // There is a link back to the attestation
136+ References : []* Referrer {fullAttReferrer },
120137 },
121138 {
122139 Digest : "sha256:16159bb881eb4ab7eb5d8afc5350b0feeed1e31c0a268e355e74f9ccbe885e0c" ,
123140 Kind : "SBOM_CYCLONEDX_JSON" ,
124141 Downloadable : true ,
142+ References : []* Referrer {fullAttReferrer },
125143 },
126144 },
127145 },
@@ -167,7 +185,7 @@ func (s *referrerTestSuite) TestExtractReferrers() {
167185 inputPath : "testdata/attestations/with-duplicated-sha.json" ,
168186 want : []* Referrer {
169187 {
170- Digest : "sha256:47e94045e8ffb5ea9a4939a03a21c5ad26f4ea7d463ac6ec46dac15349f45b3f" ,
188+ Digest : withDuplicatedRefferer . Digest ,
171189 Kind : "ATTESTATION" ,
172190 Downloadable : true ,
173191 Metadata : map [string ]string {
@@ -196,32 +214,37 @@ func (s *referrerTestSuite) TestExtractReferrers() {
196214 },
197215 },
198216 {
199- Digest : "sha256:264f55a6ff9cec2f4742a9faacc033b29f65c04dd4480e71e23579d484288d61" ,
200- Kind : "CONTAINER_IMAGE" ,
217+ Digest : "sha256:264f55a6ff9cec2f4742a9faacc033b29f65c04dd4480e71e23579d484288d61" ,
218+ Kind : "CONTAINER_IMAGE" ,
219+ References : []* Referrer {withDuplicatedRefferer },
201220 },
202221 {
203222 Digest : "sha256:16159bb881eb4ab7eb5d8afc5350b0feeed1e31c0a268e355e74f9ccbe885e0c" ,
204223 Kind : "SBOM_CYCLONEDX_JSON" ,
205224 Downloadable : true ,
225+ References : []* Referrer {withDuplicatedRefferer },
206226 },
207227 {
208228 Digest : "sha256:264f55a6ff9cec2f4742a9faacc033b29f65c04dd4480e71e23579d484288d61" ,
209229 Kind : "SBOM_CYCLONEDX_JSON" ,
210230 Downloadable : true ,
231+ References : []* Referrer {withDuplicatedRefferer },
211232 },
212233 },
213234 },
214235 {
215236 name : "with git subject" ,
216237 inputPath : "testdata/attestations/with-git-subject.json" ,
217238 want : []* Referrer {
239+ // NOTE: the result is sorted by kind
218240 {
219241 Digest : "sha256:385c4188b9c080499413f2e0fa0b3951ed107b5f0cb35c2f2b1f07a7be9a7512" ,
220242 Kind : "ARTIFACT" ,
221243 Downloadable : true ,
244+ References : []* Referrer {withGitSubject },
222245 },
223246 {
224- Digest : "sha256:de36d470d792499b1489fc0e6623300fc8822b8f0d2981bb5ec563f8dde723c7" ,
247+ Digest : withGitSubject . Digest ,
225248 Kind : "ATTESTATION" ,
226249 Downloadable : true ,
227250 Metadata : map [string ]string {
@@ -260,10 +283,9 @@ func (s *referrerTestSuite) TestExtractReferrers() {
260283 {
261284 Digest : "sha256:fbd9335f55d83d8aaf9ab1a539b0f2a87b444e8c54f34c9a1ca9d7df15605db4" ,
262285 Kind : "CONTAINER_IMAGE" ,
263- // the container image is a subject in the attestation
264286 References : []* Referrer {
265287 {
266- Digest : "sha256:de36d470d792499b1489fc0e6623300fc8822b8f0d2981bb5ec563f8dde723c7" ,
288+ Digest : withGitSubject . Digest ,
267289 Kind : "ATTESTATION" ,
268290 },
269291 },
@@ -274,7 +296,7 @@ func (s *referrerTestSuite) TestExtractReferrers() {
274296 // the git commit a subject in the attestation
275297 References : []* Referrer {
276298 {
277- Digest : "sha256:de36d470d792499b1489fc0e6623300fc8822b8f0d2981bb5ec563f8dde723c7" ,
299+ Digest : withGitSubject . Digest ,
278300 Kind : "ATTESTATION" ,
279301 },
280302 },
@@ -283,23 +305,26 @@ func (s *referrerTestSuite) TestExtractReferrers() {
283305 Digest : "sha256:b4bd86d5855f94bcac0a92d3100ae7b85d050bd2e5fb9037a200e5f5f0b073a2" ,
284306 Kind : "OPENVEX" ,
285307 Downloadable : true ,
308+ References : []* Referrer {withGitSubject },
286309 },
287310 {
288311 Digest : "sha256:c4a63494f9289dd9fd44f841efb4f5b52765c2de6332f2d86e5f6c0340b40a95" ,
289312 Kind : "SARIF" ,
290313 Downloadable : true ,
314+ References : []* Referrer {withGitSubject },
291315 },
292316 {
293317 Digest : "sha256:16159bb881eb4ab7eb5d8afc5350b0feeed1e31c0a268e355e74f9ccbe885e0c" ,
294318 Kind : "SBOM_CYCLONEDX_JSON" ,
295319 Downloadable : true ,
320+ References : []* Referrer {withGitSubject },
296321 },
297322 },
298323 },
299324 }
300325
301326 for _ , tc := range testCases {
302- s .T (). Run (tc .name , func (t * testing. T ) {
327+ s .Run (tc .name , func () {
303328 // Load attestation
304329 attJSON , err := os .ReadFile (tc .inputPath )
305330 require .NoError (s .T (), err )
@@ -313,7 +338,7 @@ func (s *referrerTestSuite) TestExtractReferrers() {
313338 }
314339
315340 require .NoError (s .T (), err )
316- assert .Equal (s . T (), tc .want , got )
341+ s .Equal (tc .want , got )
317342 })
318343 }
319344}
0 commit comments