@@ -220,11 +220,46 @@ func TestPutblobFromLocalFile(t *testing.T) {
220220
221221// TestPutSignaturesWithFormat tests that sigstore signatures are properly stored in OCI layout
222222func TestPutSignaturesWithFormat (t * testing.T ) {
223- ref , tmpDir := refToTempOCI (t , false )
224- ociRef , ok := ref .(ociReference )
223+ tmpDir := loadFixture (t , "single_image_layout" )
224+ ref , err := NewReference (tmpDir , "latest" )
225+ require .NoError (t , err )
226+ dest , err := ref .NewImageDestination (context .Background (), nil )
227+ require .NoError (t , err )
228+ defer dest .Close ()
229+ ociDest , ok := dest .(* ociImageDestination )
225230 require .True (t , ok )
226- putTestManifest (t , ociRef , tmpDir )
227231
232+ desc , _ , err := ociDest .ref .getManifestDescriptor ()
233+ require .NoError (t , err )
234+ require .NotNil (t , desc )
235+
236+ sigstoreSign := signature .SigstoreFromComponents (
237+ "application/vnd.dev.cosign.simplesigning.v1+json" ,
238+ []byte ("test-payload" ),
239+ map [string ]string {"dev.cosignproject.cosign/signature" : "test-signature" },
240+ )
241+
242+ err = ociDest .PutSignaturesWithFormat (context .Background (), []signature.Signature {sigstoreSign }, & desc .Digest )
243+ require .NoError (t , err )
244+
245+ err = ociDest .Commit (context .Background (), nil )
246+ require .NoError (t , err )
247+
248+ src , err := ref .NewImageSource (context .Background (), nil )
249+ require .NoError (t , err )
250+ ociSrc , ok := src .(* ociImageSource )
251+ require .True (t , ok )
252+ sign , err := ociSrc .GetSignaturesWithFormat (context .Background (), & desc .Digest )
253+ require .NoError (t , err )
254+ require .Len (t , sign , 1 )
255+ require .Equal (t , sigstoreSign , sign [0 ])
256+ }
257+
258+ // TestPutSignaturesWithFormatTwice tests PutSignaturesWithFormat twice and checks
259+ func TestPutSignaturesWithFormatTwice (t * testing.T ) {
260+ tmpDir := loadFixture (t , "single_image_layout" )
261+ ref , err := NewReference (tmpDir , "latest" )
262+ require .NoError (t , err )
228263 dest , err := ref .NewImageDestination (context .Background (), nil )
229264 require .NoError (t , err )
230265 defer dest .Close ()
@@ -240,20 +275,31 @@ func TestPutSignaturesWithFormat(t *testing.T) {
240275 []byte ("test-payload" ),
241276 map [string ]string {"dev.cosignproject.cosign/signature" : "test-signature" },
242277 )
278+ sigstoreSign2 := signature .SigstoreFromComponents (
279+ "application/vnd.dev.cosign.simplesigning.v1+json" ,
280+ []byte ("test-payload2" ),
281+ map [string ]string {"dev.cosignproject.cosign/signature" : "test-signature" },
282+ )
243283
244284 err = ociDest .PutSignaturesWithFormat (context .Background (), []signature.Signature {sigstoreSign }, & desc .Digest )
245285 require .NoError (t , err )
246286
247287 err = ociDest .Commit (context .Background (), nil )
248288 require .NoError (t , err )
249289
290+ err = ociDest .PutSignaturesWithFormat (context .Background (), []signature.Signature {sigstoreSign , sigstoreSign2 }, & desc .Digest )
291+ require .NoError (t , err )
292+
293+ err = ociDest .Commit (context .Background (), nil )
294+ require .NoError (t , err )
295+
250296 src , err := ref .NewImageSource (context .Background (), nil )
251297 require .NoError (t , err )
252298 ociSrc , ok := src .(* ociImageSource )
253299 require .True (t , ok )
254300 sign , err := ociSrc .GetSignaturesWithFormat (context .Background (), & desc .Digest )
255301 require .NoError (t , err )
256- require .Len (t , sign , 1 )
302+ require .Len (t , sign , 2 )
257303 require .Equal (t , sigstoreSign , sign [0 ])
258304}
259305
0 commit comments