orchard/internal/imageconstant/imageconstant_test.go

79 lines
1.8 KiB
Go

package imageconstant_test
import (
"testing"
"github.com/cirruslabs/orchard/internal/imageconstant"
v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
"github.com/stretchr/testify/require"
)
func TestDefaultImage(t *testing.T) {
tests := []struct {
name string
os v1.OS
architecture v1.Architecture
expected string
}{
{
name: "macOS ARM64",
os: v1.OSDarwin,
architecture: v1.ArchitectureARM64,
expected: imageconstant.DefaultMacosImage,
},
{
name: "Linux AMD64",
os: v1.OSLinux,
architecture: v1.ArchitectureAMD64,
expected: imageconstant.DefaultLinuxAMD64Image,
},
{
name: "Linux ARM64",
os: v1.OSLinux,
architecture: v1.ArchitectureARM64,
expected: imageconstant.DefaultLinuxARM64Image,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
actual, err := imageconstant.DefaultImage(test.os, test.architecture)
require.NoError(t, err)
require.Equal(t, test.expected, actual)
})
}
}
func TestDefaultImageRejectsUnsupportedPlatforms(t *testing.T) {
tests := []struct {
name string
os v1.OS
architecture v1.Architecture
}{
{
name: "unsupported OS",
os: v1.OS("windows"),
architecture: v1.ArchitectureAMD64,
},
{
name: "unsupported Linux architecture",
os: v1.OSLinux,
architecture: v1.Architecture("riscv64"),
},
{
name: "unsupported macOS architecture",
os: v1.OSDarwin,
architecture: v1.ArchitectureAMD64,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
_, err := imageconstant.DefaultImage(test.os, test.architecture)
require.Error(t, err)
})
}
}