88 lines
2.1 KiB
Go
88 lines
2.1 KiB
Go
package deploy
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGetImageNameAndTag(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
imageName string
|
|
expectedName string
|
|
expectedTag string
|
|
expectError bool
|
|
description string
|
|
}{
|
|
{
|
|
name: "standard image with tag",
|
|
imageName: "nginx:1.23",
|
|
expectedName: "nginx",
|
|
expectedTag: "1.23",
|
|
expectError: false,
|
|
description: "should parse standard image name with tag",
|
|
},
|
|
{
|
|
name: "image with digest",
|
|
imageName: "nginx:1.23@sha256:abc123",
|
|
expectedName: "nginx",
|
|
expectedTag: "1.23",
|
|
expectError: false,
|
|
description: "should parse image with digest, ignoring digest part",
|
|
},
|
|
{
|
|
name: "image with latest tag",
|
|
imageName: "redis:latest",
|
|
expectedName: "redis",
|
|
expectedTag: "latest",
|
|
expectError: false,
|
|
description: "should parse image with latest tag",
|
|
},
|
|
{
|
|
name: "image with numeric tag",
|
|
imageName: "postgres:14",
|
|
expectedName: "postgres",
|
|
expectedTag: "14",
|
|
expectError: false,
|
|
description: "should parse image with numeric tag",
|
|
},
|
|
{
|
|
name: "image with complex name",
|
|
imageName: "registry.example.com/myapp/api:v1.2.3",
|
|
expectedName: "registry.example.com/myapp/api",
|
|
expectedTag: "v1.2.3",
|
|
expectError: false,
|
|
description: "should parse image with registry prefix and complex name",
|
|
},
|
|
{
|
|
name: "image without tag",
|
|
imageName: "nginx",
|
|
expectError: true,
|
|
description: "should error when no tag present",
|
|
},
|
|
{
|
|
name: "empty image name",
|
|
imageName: "",
|
|
expectError: true,
|
|
description: "should error on empty image name",
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
name, tag, err := GetImageNameAndTag(tt.imageName)
|
|
|
|
if tt.expectError {
|
|
assert.Error(t, err)
|
|
assert.Empty(t, name)
|
|
assert.Empty(t, tag)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.expectedName, name)
|
|
assert.Equal(t, tt.expectedTag, tag)
|
|
}
|
|
})
|
|
}
|
|
} |