Skip to content

Commit

Permalink
OCI store resolve returns full descriptor
Browse files Browse the repository at this point in the history
  • Loading branch information
oanatmaria committed Mar 21, 2023
1 parent c1bf59e commit 23fc677
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 2 deletions.
7 changes: 6 additions & 1 deletion content/oci/oci.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,12 @@ func (s *Store) Resolve(ctx context.Context, reference string) (ocispec.Descript
}
return ocispec.Descriptor{}, err
}
return descriptor.Plain(desc), nil

if digest.DigestRegexpAnchored.MatchString(reference) {
return descriptor.Plain(desc), nil
}

return desc, nil
}

// Predecessors returns the nodes directly pointing to the current node.
Expand Down
76 changes: 75 additions & 1 deletion content/oci/oci_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,80 @@ func TestStore_ContentBadPush(t *testing.T) {
}
}

func TestStore_ResolveByTagReturnsFullDescriptor(t *testing.T) {
content := []byte("hello world")
ref := "hello-world:0.0.1"
desc := ocispec.Descriptor{
MediaType: "test",
Digest: digest.FromBytes(content),
Size: int64(len(content)),
Annotations: map[string]string{"name": "Hello"},
}

tempDir := t.TempDir()
s, err := New(tempDir)
if err != nil {
t.Fatal("New() error =", err)
}
ctx := context.Background()

err = s.Push(ctx, desc, strings.NewReader(string(content)))
if err != nil {
t.Errorf("Store.Push() error = %v, wantErr %v", err, false)
}

err = s.Tag(ctx, desc, ref)
if err != nil {
t.Errorf("error tagging descriptor error = %v, wantErr %v", err, false)
}

resolvedDescr, err := s.Resolve(ctx, ref)
if err != nil {
t.Errorf("error resolving descriptor error = %v, wantErr %v", err, false)
}

if !reflect.DeepEqual(resolvedDescr, desc) {
t.Errorf("Store.Resolve() = %v, want %v", resolvedDescr, desc)
}
}

func TestStore_ResolveByDigestReturnsPlainDescriptor(t *testing.T) {
content := []byte("hello world")
ref := "hello-world:0.0.1"
desc := ocispec.Descriptor{
MediaType: "test",
Digest: digest.FromBytes(content),
Size: int64(len(content)),
Annotations: map[string]string{"name": "Hello"},
}

tempDir := t.TempDir()
s, err := New(tempDir)
if err != nil {
t.Fatal("New() error =", err)
}
ctx := context.Background()

err = s.Push(ctx, desc, strings.NewReader(string(content)))
if err != nil {
t.Errorf("Store.Push() error = %v, wantErr %v", err, false)
}

err = s.Tag(ctx, desc, ref)
if err != nil {
t.Errorf("error tagging descriptor error = %v, wantErr %v", err, false)
}

resolvedDescr, err := s.Resolve(ctx, string(desc.Digest))
if err != nil {
t.Errorf("error resolving descriptor error = %v, wantErr %v", err, false)
}

if reflect.DeepEqual(resolvedDescr, desc) {
t.Errorf("Store.Resolve() = %v, want %v", resolvedDescr, desc)
}
}

func TestStore_TagNotFound(t *testing.T) {
ref := "foobar"

Expand Down Expand Up @@ -1088,7 +1162,7 @@ func TestStore_ExistingStore(t *testing.T) {
}

// test resolving index root by tag
gotDesc, err := anotherS.Resolve(ctx, tag)
gotDesc, err := anotherS.Resolve(ctx, string(indexRoot.Digest))
if err != nil {
t.Fatal("Store: Resolve() error =", err)
}
Expand Down

0 comments on commit 23fc677

Please sign in to comment.