Skip to content

Commit d3588e2

Browse files
committed
Fix oci dest test
1 parent b5239af commit d3588e2

File tree

6 files changed

+111
-4
lines changed

6 files changed

+111
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
insert binary content here #9671
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"created": "2019-08-20T20:19:55.211423266Z",
3+
"architecture": "amd64",
4+
"os": "linux",
5+
"config": {
6+
"Env": [
7+
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8+
],
9+
"Cmd": [
10+
"/bin/sh"
11+
]
12+
},
13+
"rootfs": {
14+
"type": "layers",
15+
"diff_ids": [
16+
"sha256:03901b4a2ea88eeaad62dbe59b072b28b6efa00491962b8741081c5df50c65e0"
17+
]
18+
},
19+
"history": [
20+
{
21+
"created": "2019-08-20T20:19:55.062606894Z",
22+
"created_by": "/bin/sh -c #(nop) ADD file:fe64057fbb83dccb960efabbf1cd8777920ef279a7fa8dbca0a8801c651bdf7c in / "
23+
},
24+
{
25+
"created": "2019-08-20T20:19:55.211423266Z",
26+
"created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\"]",
27+
"empty_layer": true
28+
}
29+
]
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"schemaVersion": 2,
3+
"mediaType": "application/vnd.oci.image.manifest.v1+json",
4+
"config": {
5+
"mediaType": "application/vnd.oci.image.config.v1+json",
6+
"digest": "sha256:a527179158cd5cebc11c152b8637b47ce96c838ba2aa0de66d14f45cedc11423",
7+
"size": 585
8+
},
9+
"layers": [
10+
{
11+
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
12+
"digest": "sha256:0c8b263642b51b5c1dc40fe402ae2e97119c6007b6e52146419985ec1f0092dc",
13+
"size": 33
14+
}
15+
]
16+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"schemaVersion": 2,
3+
"manifests": [
4+
{
5+
"mediaType": "application/vnd.oci.image.manifest.v1+json",
6+
"digest": "sha256:eaa95f3cfaac07c8a5153eb77c933269586ad0226c83405776be08547e4d2a18",
7+
"size": 476,
8+
"annotations": {
9+
"org.opencontainers.image.ref.name": "latest"
10+
}
11+
}
12+
]
13+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"imageLayoutVersion": "1.0.0"}

image/oci/layout/oci_dest_test.go

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,11 +220,46 @@ func TestPutblobFromLocalFile(t *testing.T) {
220220

221221
// TestPutSignaturesWithFormat tests that sigstore signatures are properly stored in OCI layout
222222
func 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

Comments
 (0)