@@ -556,6 +556,35 @@ func RunParseStorageTests(rootDir string, metaDB mTypes.MetaDB, log log.Logger)
556556 So (repos [0 ].Signatures , ShouldContainKey , missingImageDigest .String ())
557557 })
558558
559+ Convey ("Detect cosign bundle signatures by artifact type and subject" , func () {
560+ imageStore := local .NewImageStore (rootDir , false , false ,
561+ log , monitoring .NewMetricsServer (false , log ), nil , nil , nil , nil )
562+
563+ storeController := storage.StoreController {DefaultStore : imageStore }
564+
565+ signedImage := CreateRandomImage ()
566+ err := WriteImageToFileSystem (signedImage , repo , "signed" , storeController )
567+ So (err , ShouldBeNil )
568+
569+ bundleSig := CreateMockCosignBundleSignature (signedImage .DescriptorRef ())
570+ err = WriteImageToFileSystem (bundleSig , repo , "bundle-sig" , storeController )
571+ So (err , ShouldBeNil )
572+
573+ err = meta .ParseStorage (metaDB , storeController , log ) //nolint: contextcheck
574+ So (err , ShouldBeNil )
575+
576+ repos , err := metaDB .GetMultipleRepoMeta (ctx ,
577+ func (repoMeta mTypes.RepoMeta ) bool { return true })
578+ So (err , ShouldBeNil )
579+ So (repos , ShouldNotBeEmpty )
580+
581+ repoMeta := repos [0 ]
582+ subjectDigest := signedImage .DigestStr ()
583+ So (repoMeta .Signatures , ShouldContainKey , subjectDigest )
584+ So (repoMeta .Signatures [subjectDigest ], ShouldContainKey , zcommon .CosignSignature )
585+ So (len (repoMeta.Signatures [subjectDigest ][zcommon.CosignSignature ]), ShouldBeGreaterThan , 0 )
586+ })
587+
559588 Convey ("Check statistics after load" , func () {
560589 imageStore := local .NewImageStore (rootDir , false , false ,
561590 log , monitoring .NewMetricsServer (false , log ), nil , nil , nil , nil )
0 commit comments