97 lines
2.3 KiB
Go
97 lines
2.3 KiB
Go
package engineimage_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"galaxy/lobby/internal/domain/engineimage"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewResolverAcceptsValidTemplate(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
resolver, err := engineimage.NewResolver("galaxy/game:{engine_version}")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, resolver)
|
|
assert.Equal(t, "galaxy/game:{engine_version}", resolver.Template())
|
|
}
|
|
|
|
func TestNewResolverRejectsEmptyTemplate(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
cases := []string{"", " "}
|
|
for _, candidate := range cases {
|
|
_, err := engineimage.NewResolver(candidate)
|
|
require.Error(t, err)
|
|
}
|
|
}
|
|
|
|
func TestNewResolverRejectsTemplateWithoutPlaceholder(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
_, err := engineimage.NewResolver("galaxy/game:1.0.0")
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestResolveSubstitutesVersion(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
resolver, err := engineimage.NewResolver("registry.example.com/galaxy/game:{engine_version}")
|
|
require.NoError(t, err)
|
|
|
|
got, err := resolver.Resolve("v1.4.7")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "registry.example.com/galaxy/game:v1.4.7", got)
|
|
}
|
|
|
|
func TestResolveSubstitutesEveryPlaceholderOccurrence(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
resolver, err := engineimage.NewResolver(
|
|
"registry.example.com/{engine_version}/game:{engine_version}",
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
got, err := resolver.Resolve("v2.0.1")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "registry.example.com/v2.0.1/game:v2.0.1", got)
|
|
}
|
|
|
|
func TestResolveRejectsEmptyVersion(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
resolver, err := engineimage.NewResolver("galaxy/game:{engine_version}")
|
|
require.NoError(t, err)
|
|
|
|
cases := []string{"", " "}
|
|
for _, candidate := range cases {
|
|
_, err := resolver.Resolve(candidate)
|
|
require.Error(t, err)
|
|
}
|
|
}
|
|
|
|
func TestResolveReusesValidatedTemplate(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
resolver, err := engineimage.NewResolver("galaxy/game:{engine_version}")
|
|
require.NoError(t, err)
|
|
|
|
first, err := resolver.Resolve("v1.0.0")
|
|
require.NoError(t, err)
|
|
second, err := resolver.Resolve("v2.0.0")
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, "galaxy/game:v1.0.0", first)
|
|
assert.Equal(t, "galaxy/game:v2.0.0", second)
|
|
}
|
|
|
|
func TestNilResolverResolveReturnsError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var resolver *engineimage.Resolver
|
|
_, err := resolver.Resolve("v1.0.0")
|
|
require.Error(t, err)
|
|
}
|