1 package cluster
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7
8 wh "edge-infra.dev/pkg/f8n/warehouse"
9 )
10
11 func TestClusterProviders_OCIAnnotations(t *testing.T) {
12 tcs := map[string]struct {
13 p Providers
14 result string
15 }{
16 "more than one": {Providers{"gke", "generic"}, "generic,gke"},
17 "one": {Providers{"gke"}, "gke"},
18 }
19
20 for name, tc := range tcs {
21 t.Run(name, func(t *testing.T) {
22 r := tc.p.OCIAnnotations()[wh.AnnotationClusterProviders]
23 if r != tc.result {
24 t.Errorf("expected %s, got %s", tc.result, r)
25 }
26 })
27 }
28 }
29
30 func TestClusterProviders_Set(t *testing.T) {
31 tcs := map[string]struct {
32 value string
33 result string
34 }{
35 "one": {"gke", "gke"},
36 "two": {"gke,generic", "generic,gke"},
37 "trailing comma": {"gke,generic,", "generic,gke"},
38 "leading comma": {",gke,generic", "generic,gke"},
39 "blank": {"", ""},
40 "comma": {",", ""},
41 }
42
43 for name, tc := range tcs {
44 t.Run(name, func(t *testing.T) {
45 var p Providers
46 _ = p.Set(tc.value)
47
48 if p.String() != tc.result {
49 t.Errorf("expected %s, got %s", tc.result, p.String())
50 }
51 })
52 }
53
54 t.Run("accumulates", func(t *testing.T) {
55 var p Providers
56 _ = p.Set("gke,generic")
57 _ = p.Set("sds")
58
59 expected := "generic,gke,sds"
60
61 if p.String() != expected {
62 t.Errorf("expected %s, got %s", expected, p.String())
63 }
64 })
65 }
66
67 func TestClusterProvider_Set(t *testing.T) {
68 var p Provider
69 _ = p.Set("gke")
70 if p.String() != "gke" {
71 t.Errorf("expected gke, got %s", p.String())
72 }
73 }
74
75 func TestIsValid(t *testing.T) {
76 var p Providers
77 err := p.IsValid("")
78 assert.ErrorIs(t, err, ErrNoProviders)
79
80 p = BuiltInProviders()
81 err = p.IsValid("invalid")
82 assert.ErrorContains(t, err, "invalid cluster provider")
83
84 err = p.IsValid("")
85 assert.NoError(t, err)
86 }
87
View as plain text