mirror of
https://github.com/mariadb-operator/mariadb-operator.git
synced 2025-08-19 16:24:15 +00:00
191 lines
6.3 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|