package templatebuilder_test import ( "testing" "github.com/stretchr/testify/require" "github.com/coder/coder/v2/coderd/templatebuilder" ) func TestBaseTemplateOS(t *testing.T) { t.Parallel() t.Run("Docker", func(t *testing.T) { t.Parallel() require.Equal(t, templatebuilder.BaseOSLinux, templatebuilder.BaseTemplateOS("docker")) }) t.Run("Kubernetes", func(t *testing.T) { t.Parallel() require.Equal(t, templatebuilder.BaseOSLinux, templatebuilder.BaseTemplateOS("kubernetes")) }) t.Run("AWSLinux", func(t *testing.T) { t.Parallel() require.Equal(t, templatebuilder.BaseOSLinux, templatebuilder.BaseTemplateOS("aws-linux")) }) t.Run("UnknownReturnsEmpty", func(t *testing.T) { t.Parallel() require.Equal(t, templatebuilder.BaseOS(""), templatebuilder.BaseTemplateOS("unknown-template")) }) } func TestBaseTemplateIDs(t *testing.T) { t.Parallel() ids := templatebuilder.BaseTemplateIDs() require.Len(t, ids, 3) require.Contains(t, ids, "docker") require.Contains(t, ids, "kubernetes") require.Contains(t, ids, "aws-linux") } func TestDefaultBaseRenderContext(t *testing.T) { t.Parallel() t.Run("Docker", func(t *testing.T) { t.Parallel() rc := templatebuilder.DefaultBaseRenderContext("docker") require.Equal(t, "codercom/enterprise-base:ubuntu", rc.ContainerImage) require.Nil(t, rc.ImageOptions) }) t.Run("Kubernetes", func(t *testing.T) { t.Parallel() rc := templatebuilder.DefaultBaseRenderContext("kubernetes") require.Equal(t, "codercom/enterprise-base:ubuntu", rc.ContainerImage) require.Nil(t, rc.ImageOptions) }) t.Run("AWSLinux", func(t *testing.T) { t.Parallel() rc := templatebuilder.DefaultBaseRenderContext("aws-linux") require.Empty(t, rc.ContainerImage) require.Nil(t, rc.ImageOptions) }) t.Run("Unknown", func(t *testing.T) { t.Parallel() rc := templatebuilder.DefaultBaseRenderContext("unknown") require.Empty(t, rc.ContainerImage) }) t.Run("AllBaseTemplatesHaveDefaults", func(t *testing.T) { t.Parallel() // Verify that every known base template produces a render // context via DefaultBaseRenderContext (not just the zero value // from an unknown ID). This catches forgotten entries. for _, id := range templatebuilder.BaseTemplateIDs() { rc := templatebuilder.DefaultBaseRenderContext(id) _ = rc // existence is the assertion; the value varies per template } }) } func TestBaseTemplateFS(t *testing.T) { t.Parallel() t.Run("KnownTemplate", func(t *testing.T) { t.Parallel() fsys, err := templatebuilder.BaseTemplateFS("docker") require.NoError(t, err) require.NotNil(t, fsys) }) t.Run("UnknownTemplate", func(t *testing.T) { t.Parallel() _, err := templatebuilder.BaseTemplateFS("nonexistent") require.Error(t, err) require.Contains(t, err.Error(), "unknown base template") }) }