@@ -86,21 +86,21 @@ func (s *referrerIntegrationTestSuite) TestExtractAndPersists() {
8686 s .T ().Run ("it can store properly the first time" , func (t * testing.T ) {
8787 err := s .Referrer .ExtractAndPersist (ctx , envelope , s .org1 .ID )
8888 s .NoError (err )
89- prevStoredRef , err = s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , s .user .ID )
89+ prevStoredRef , err = s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , "" , s .user .ID )
9090 s .NoError (err )
9191 })
9292
9393 s .T ().Run ("and it's idempotent" , func (t * testing.T ) {
9494 err := s .Referrer .ExtractAndPersist (ctx , envelope , s .org1 .ID )
9595 s .NoError (err )
96- ref , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , s .user .ID )
96+ ref , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , "" , s .user .ID )
9797 s .NoError (err )
9898 // Check it's the same referrer than previously retrieved, including timestamps
9999 s .Equal (prevStoredRef , ref )
100100 })
101101
102102 s .T ().Run ("contains all the info" , func (t * testing.T ) {
103- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , s .user .ID )
103+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , "" , s .user .ID )
104104 s .NoError (err )
105105 // parent i.e attestation
106106 s .Equal (wantReferrerAtt .Digest , got .Digest )
@@ -119,15 +119,15 @@ func (s *referrerIntegrationTestSuite) TestExtractAndPersists() {
119119
120120 s .T ().Run ("can't be accessed by a second user in another org" , func (t * testing.T ) {
121121 // the user2 has not access to org1
122- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , s .user2 .ID )
122+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , "" , s .user2 .ID )
123123 s .True (biz .IsNotFound (err ))
124124 s .Nil (got )
125125 })
126126
127127 s .T ().Run ("but another org can be attached" , func (t * testing.T ) {
128128 err = s .Referrer .ExtractAndPersist (ctx , envelope , s .org2 .ID )
129129 s .NoError (err )
130- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , s .user .ID )
130+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , "" , s .user .ID )
131131 s .NoError (err )
132132 require .Len (t , got .OrgIDs , 2 )
133133 s .Contains (got .OrgIDs , s .org1UUID )
@@ -136,21 +136,21 @@ func (s *referrerIntegrationTestSuite) TestExtractAndPersists() {
136136 // and it's idempotent (no new orgs added)
137137 err = s .Referrer .ExtractAndPersist (ctx , envelope , s .org2 .ID )
138138 s .NoError (err )
139- got , err = s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , s .user .ID )
139+ got , err = s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , "" , s .user .ID )
140140 s .NoError (err )
141141 require .Len (t , got .OrgIDs , 2 )
142142 })
143143
144144 s .T ().Run ("and now user2 has access to it since it has access to org2" , func (t * testing.T ) {
145145 err = s .Referrer .ExtractAndPersist (ctx , envelope , s .org2 .ID )
146146 s .NoError (err )
147- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , s .user2 .ID )
147+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerAtt .Digest , "" , s .user2 .ID )
148148 s .NoError (err )
149149 require .Len (t , got .OrgIDs , 2 )
150150 })
151151
152152 s .T ().Run ("you can ask for info about materials that are subjects" , func (t * testing.T ) {
153- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerContainerImage .Digest , s .user .ID )
153+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerContainerImage .Digest , "" , s .user .ID )
154154 s .NoError (err )
155155 // parent i.e attestation
156156 s .Equal (wantReferrerContainerImage .Digest , got .Digest )
@@ -164,7 +164,7 @@ func (s *referrerIntegrationTestSuite) TestExtractAndPersists() {
164164 })
165165
166166 s .T ().Run ("it might not have references" , func (t * testing.T ) {
167- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerSarif .Digest , s .user .ID )
167+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerSarif .Digest , "" , s .user .ID )
168168 s .NoError (err )
169169 // parent i.e attestation
170170 s .Equal (wantReferrerSarif .Digest , got .Digest )
@@ -174,7 +174,7 @@ func (s *referrerIntegrationTestSuite) TestExtractAndPersists() {
174174 })
175175
176176 s .T ().Run ("or not to exist" , func (t * testing.T ) {
177- got , err := s .Referrer .GetFromRoot (ctx , "sha256:deadbeef" , s .user .ID )
177+ got , err := s .Referrer .GetFromRoot (ctx , "sha256:deadbeef" , "" , s .user .ID )
178178 s .True (biz .IsNotFound (err ))
179179 s .Nil (got )
180180 })
@@ -199,14 +199,29 @@ func (s *referrerIntegrationTestSuite) TestExtractAndPersists() {
199199 s .NoError (err )
200200
201201 // but retrieval should fail. In the future we will ask the user to provide the artifact type in these cases of ambiguity
202- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerSarif .Digest , s .user .ID )
202+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerSarif .Digest , "" , s .user .ID )
203203 s .Nil (got )
204204 s .ErrorContains (err , "present in 2 kinds" )
205205 })
206206
207+ s .T ().Run ("it should not fail on retrieval if we filter out by one kind" , func (t * testing.T ) {
208+ // but retrieval should fail. In the future we will ask the user to provide the artifact type in these cases of ambiguity
209+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerSarif .Digest , "SARIF" , s .user .ID )
210+ s .NoError (err )
211+ s .Equal (wantReferrerSarif .Digest , got .Digest )
212+ s .Equal (true , got .Downloadable )
213+ s .Equal ("SARIF" , got .Kind )
214+
215+ got , err = s .Referrer .GetFromRoot (ctx , wantReferrerSarif .Digest , "ARTIFACT" , s .user .ID )
216+ s .NoError (err )
217+ s .Equal (wantReferrerSarif .Digest , got .Digest )
218+ s .Equal (true , got .Downloadable )
219+ s .Equal ("ARTIFACT" , got .Kind )
220+ })
221+
207222 s .T ().Run ("now there should a container image pointing to two attestations" , func (t * testing.T ) {
208223 // but retrieval should fail. In the future we will ask the user to provide the artifact type in these cases of ambiguity
209- got , err := s .Referrer .GetFromRoot (ctx , wantReferrerContainerImage .Digest , s .user .ID )
224+ got , err := s .Referrer .GetFromRoot (ctx , wantReferrerContainerImage .Digest , "" , s .user .ID )
210225 s .NoError (err )
211226 // it should be referenced by two attestations since it's subject of both
212227 require .Len (t , got .References , 2 )
0 commit comments