diff --git a/registry/storage/blob_test.go b/registry/storage/blob_test.go index a91f399ed84..541c07050c3 100644 --- a/registry/storage/blob_test.go +++ b/registry/storage/blob_test.go @@ -440,10 +440,12 @@ func TestBlobMount(t *testing.T) { } source := createSource(ctx, t, registry) + source2 := createSource(ctx, t, registry) canonicalRef, err := reference.WithDigest(source.repository.Named(), source.desc.Digest) if err != nil { t.Fatal(err) } + imageName, _ := reference.WithName("foo/bar") repository, err := registry.Repository(ctx, imageName) if err != nil { @@ -465,6 +467,20 @@ func TestBlobMount(t *testing.T) { t.Fatalf("descriptors not equal: %v != %v", ebm.Descriptor, source.desc) } + // Test the negative case + // This uses the source repo from the first repo, but the digest from the second + wrongCanonicalRef, err := reference.WithDigest(source.repository.Named(), source2.desc.Digest) + if err != nil { + t.Fatal(err) + } + bw2, err := bs.Create(ctx, WithMountFrom(wrongCanonicalRef)) + if err != nil { + t.Fatalf("Received unexpected non-error, when uploading with cross-mount from \"wrong\" repository") + } + if bw2 == nil { + t.Fatalf("Did not start upload upon failed cross mount") + } + // Test for existence. statDesc, err := bs.Stat(ctx, source.desc.Digest) if err != nil {