Skip to content

Commit

Permalink
replaceRegistry unit tests
Browse files Browse the repository at this point in the history
Signed-off-by: Brooks Newberry <[email protected]>
  • Loading branch information
brooksn committed Feb 19, 2025
1 parent aa3ca67 commit fa1264e
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 6 deletions.
16 changes: 10 additions & 6 deletions registry/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,21 @@ func NewClient(registry string, debug bool) *Client {
return &Client{registry}
}

func replaceRegistry(registry string, ref name.Reference) (name.Tag, error) {
newRef, err := name.NewRepository(registry + "/" + ref.Context().RepositoryStr())
if err != nil {
return name.Tag{}, err
}

return name.NewTag(newRef.String() + ":" + ref.Identifier())
}

func (c *Client) Image(ctx context.Context, ref name.Reference) (Image, error) {
info := Image{
Platforms: make(map[Platform]bool),
}

newRef, err := name.NewRepository(c.registry + "/" + ref.Context().RepositoryStr())
if err != nil {
return info, err
}

tagRef, err := name.NewTag(newRef.String() + ":" + ref.Identifier())
tagRef, err := replaceRegistry(c.registry, ref)
if err != nil {
return info, err
}
Expand Down
51 changes: 51 additions & 0 deletions registry/registry_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package registry

import (
"testing"

"github.com/google/go-containerregistry/pkg/name"
)

func TestReplaceRegistry(t *testing.T) {
tests := []struct {
name string
registry string
inputRef string
expected string
expectErr bool
}{
{
name: "replace docker.io registry",
registry: "custom.registry.io",
inputRef: "docker.io/library/nginx:latest",
expected: "custom.registry.io/library/nginx:latest",
expectErr: false,
},
{
name: "handle docker library images",
registry: "custom.registry.io",
inputRef: "hello-world",
expected: "custom.registry.io/library/hello-world:latest",
expectErr: false,
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ref, err := name.ParseReference(tt.inputRef)
if err != nil {
t.Fatalf("failed to parse input reference: %v", err)
}

result, err := replaceRegistry(tt.registry, ref)
if (err != nil) != tt.expectErr {
t.Errorf("replaceRegistry() error = %v, expectErr %v", err, tt.expectErr)
return
}

if !tt.expectErr && result.Name() != tt.expected {
t.Errorf("replaceRegistry() = %v, want %v", result.Name(), tt.expected)
}
})
}
}

0 comments on commit fa1264e

Please sign in to comment.