85 lines
3.6 KiB
Go
85 lines
3.6 KiB
Go
|
package storage
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestResolveNames(t *testing.T) {
|
||
|
cases := []struct {
|
||
|
name string
|
||
|
additionalRegistries []string
|
||
|
imageName string
|
||
|
expected []string
|
||
|
err bool
|
||
|
errContains string
|
||
|
}{
|
||
|
{
|
||
|
name: "test unqualified images get correctly qualified in order and correct tag",
|
||
|
additionalRegistries: []string{"testregistry.com", "registry.access.redhat.com", "docker.io"},
|
||
|
imageName: "openshift3/ose-deployer:sometag",
|
||
|
expected: []string{"testregistry.com/openshift3/ose-deployer:sometag", "registry.access.redhat.com/openshift3/ose-deployer:sometag", "docker.io/openshift3/ose-deployer:sometag"},
|
||
|
err: false,
|
||
|
},
|
||
|
{
|
||
|
name: "test unqualified images get correctly qualified in order and correct digest",
|
||
|
additionalRegistries: []string{"testregistry.com", "registry.access.redhat.com", "docker.io"},
|
||
|
imageName: "openshift3/ose-deployer@sha256:dc5f67a48da730d67bf4bfb8824ea8a51be26711de090d6d5a1ffff2723168a3",
|
||
|
expected: []string{"testregistry.com/openshift3/ose-deployer@sha256:dc5f67a48da730d67bf4bfb8824ea8a51be26711de090d6d5a1ffff2723168a3", "registry.access.redhat.com/openshift3/ose-deployer@sha256:dc5f67a48da730d67bf4bfb8824ea8a51be26711de090d6d5a1ffff2723168a3", "docker.io/openshift3/ose-deployer@sha256:dc5f67a48da730d67bf4bfb8824ea8a51be26711de090d6d5a1ffff2723168a3"},
|
||
|
err: false,
|
||
|
},
|
||
|
{
|
||
|
name: "test unqualified images get correctly qualified in order",
|
||
|
additionalRegistries: []string{"testregistry.com", "registry.access.redhat.com", "docker.io"},
|
||
|
imageName: "openshift3/ose-deployer:latest",
|
||
|
expected: []string{"testregistry.com/openshift3/ose-deployer:latest", "registry.access.redhat.com/openshift3/ose-deployer:latest", "docker.io/openshift3/ose-deployer:latest"},
|
||
|
err: false,
|
||
|
},
|
||
|
{
|
||
|
name: "test unqualified images get correctly qualified from official library",
|
||
|
additionalRegistries: []string{"testregistry.com", "registry.access.redhat.com", "docker.io"},
|
||
|
imageName: "nginx:latest",
|
||
|
expected: []string{"testregistry.com/nginx:latest", "registry.access.redhat.com/nginx:latest", "docker.io/library/nginx:latest"},
|
||
|
err: false,
|
||
|
},
|
||
|
{
|
||
|
name: "test qualified images returns just qualified",
|
||
|
additionalRegistries: []string{"testregistry.com", "registry.access.redhat.com", "docker.io"},
|
||
|
imageName: "mypersonalregistry.com/nginx:latest",
|
||
|
expected: []string{"mypersonalregistry.com/nginx:latest"},
|
||
|
err: false,
|
||
|
},
|
||
|
{
|
||
|
name: "test we don't have names w/o registries",
|
||
|
imageName: "openshift3/ose-deployer:latest",
|
||
|
err: true,
|
||
|
},
|
||
|
{
|
||
|
name: "test we cannot resolve names from an image ID",
|
||
|
imageName: "6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30",
|
||
|
err: true,
|
||
|
errContains: "cannot parse an image ID",
|
||
|
},
|
||
|
}
|
||
|
for _, c := range cases {
|
||
|
svc := &imageService{
|
||
|
registries: c.additionalRegistries,
|
||
|
}
|
||
|
names, err := svc.ResolveNames(c.imageName)
|
||
|
if !c.err {
|
||
|
require.NoError(t, err, c.name)
|
||
|
if !reflect.DeepEqual(names, c.expected) {
|
||
|
t.Fatalf("Exepected: %v, Got: %v: %q", c.expected, names, c.name)
|
||
|
}
|
||
|
} else {
|
||
|
require.Error(t, err, c.name)
|
||
|
if c.errContains != "" {
|
||
|
assert.Contains(t, err.Error(), c.errContains)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|