Files
mariadb-operator/pkg/docker/reference_test.go
2024-09-18 11:19:53 +02:00

191 lines
6.3 KiB
Go

package docker
import "testing"
// nolint:lll
func TestGetTag(t *testing.T) {
tests := []struct {
name string
image string
wantTag string
wantErr bool
}{
{
name: "invalid image",
image: "foo",
wantTag: "",
wantErr: true,
},
{
name: "empty tag",
image: "mariadb:",
wantTag: "",
wantErr: true,
},
{
name: "image",
image: "mariadb:10.6",
wantTag: "10.6",
wantErr: false,
},
{
name: "image with namespace",
image: "mariadb/maxscale:23.08.5",
wantTag: "23.08.5",
wantErr: false,
},
{
name: "image with namespace and host",
image: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantTag: "v0.0.1",
wantErr: false,
},
{
name: "digest",
image: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:3f48454b6a33e094af6d23ced54645ec0533cb11854d07738920852ca48e390d",
wantTag: "",
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tag, err := GetTag(tt.image)
if tt.wantTag != tag {
t.Errorf("unexpected image, expected: %v got: %v", tt.wantTag, tag)
}
if tt.wantErr && err == nil {
t.Error("expect error to have occurred, got nil")
}
if !tt.wantErr && err != nil {
t.Errorf("expect error to not have occurred, got: %v", err)
}
})
}
}
// nolint:lll
func TestSetTagOrDigest(t *testing.T) {
tests := []struct {
name string
sourceImage string
targetImage string
wantImage string
wantErr bool
}{
{
name: "invalid source",
sourceImage: "foo",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantImage: "",
wantErr: true,
},
{
name: "invalid source tag",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantImage: "",
wantErr: true,
},
{
name: "invalid source digest",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:foo",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantImage: "",
wantErr: true,
},
{
name: "invalid target",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
targetImage: "foo",
wantImage: "",
wantErr: true,
},
{
name: "invalid target tag",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:",
wantImage: "",
wantErr: true,
},
{
name: "invalid target digest",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:foo",
wantImage: "",
wantErr: true,
},
{
name: "no tag nor digest in source",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantImage: "",
wantErr: true,
},
{
name: "no tag nor digest in target",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator",
wantImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantErr: false,
},
{
name: "tag source, tag target",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.2",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.2",
wantErr: false,
},
{
name: "digest source, tag target",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:3f48454b6a33e094af6d23ced54645ec0533cb11854d07738920852ca48e390d",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.1",
wantImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:3f48454b6a33e094af6d23ced54645ec0533cb11854d07738920852ca48e390d",
wantErr: false,
},
{
name: "tag source, digest target",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.2",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:3f48454b6a33e094af6d23ced54645ec0533cb11854d07738920852ca48e390d",
wantImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.2",
wantErr: false,
},
{
name: "digest source, digest target",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:5e3d39d26829673c7b4f6f21fb1d57902c9bb64367a76dc2b74e5909027f25a3",
targetImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:3f48454b6a33e094af6d23ced54645ec0533cb11854d07738920852ca48e390d",
wantImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator@sha256:5e3d39d26829673c7b4f6f21fb1d57902c9bb64367a76dc2b74e5909027f25a3",
wantErr: false,
},
{
name: "different host",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.2",
targetImage: "registry.mycorp.io/mariadb-operator/mariadb-operator:v0.0.1",
wantImage: "registry.mycorp.io/mariadb-operator/mariadb-operator:v0.0.2",
wantErr: false,
},
{
name: "different host, namespace and image",
sourceImage: "docker-registry3.mariadb.com/mariadb-operator/mariadb-operator:v0.0.2",
targetImage: "registry.mycorp.io/mdb-op/mdb-op:v0.0.1",
wantImage: "registry.mycorp.io/mdb-op/mdb-op:v0.0.2",
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
image, err := SetTagOrDigest(tt.sourceImage, tt.targetImage)
if tt.wantImage != image {
t.Errorf("unexpected image, expected: %v got: %v", tt.wantImage, image)
}
if tt.wantErr && err == nil {
t.Error("expect error to have occurred, got nil")
}
if !tt.wantErr && err != nil {
t.Errorf("expect error to not have occurred, got: %v", err)
}
})
}
}