package cluster import ( "testing" "github.com/stretchr/testify/assert" wh "edge-infra.dev/pkg/f8n/warehouse" ) func TestClusterProviders_OCIAnnotations(t *testing.T) { tcs := map[string]struct { p Providers result string }{ "more than one": {Providers{"gke", "generic"}, "generic,gke"}, "one": {Providers{"gke"}, "gke"}, } for name, tc := range tcs { t.Run(name, func(t *testing.T) { r := tc.p.OCIAnnotations()[wh.AnnotationClusterProviders] if r != tc.result { t.Errorf("expected %s, got %s", tc.result, r) } }) } } func TestClusterProviders_Set(t *testing.T) { tcs := map[string]struct { value string result string }{ "one": {"gke", "gke"}, "two": {"gke,generic", "generic,gke"}, "trailing comma": {"gke,generic,", "generic,gke"}, "leading comma": {",gke,generic", "generic,gke"}, "blank": {"", ""}, "comma": {",", ""}, } for name, tc := range tcs { t.Run(name, func(t *testing.T) { var p Providers _ = p.Set(tc.value) if p.String() != tc.result { t.Errorf("expected %s, got %s", tc.result, p.String()) } }) } t.Run("accumulates", func(t *testing.T) { var p Providers _ = p.Set("gke,generic") _ = p.Set("sds") expected := "generic,gke,sds" if p.String() != expected { t.Errorf("expected %s, got %s", expected, p.String()) } }) } func TestClusterProvider_Set(t *testing.T) { var p Provider _ = p.Set("gke") if p.String() != "gke" { t.Errorf("expected gke, got %s", p.String()) } } func TestIsValid(t *testing.T) { var p Providers err := p.IsValid("") assert.ErrorIs(t, err, ErrNoProviders) p = BuiltInProviders() err = p.IsValid("invalid") assert.ErrorContains(t, err, "invalid cluster provider") err = p.IsValid("") assert.NoError(t, err) }