github.com/itscaro/cli@v0.0.0-20190705081621-c9db0fe93829/kubernetes/check_test.go (about) 1 package kubernetes 2 3 import ( 4 "testing" 5 6 "gotest.tools/assert" 7 is "gotest.tools/assert/cmp" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 ) 10 11 func TestGetStackAPIVersion(t *testing.T) { 12 var tests = []struct { 13 description string 14 groups *metav1.APIGroupList 15 experimental bool 16 err bool 17 expectedStack StackVersion 18 }{ 19 {"no stack api", makeGroups(), false, true, ""}, 20 {"v1beta1", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta1"}}), false, false, StackAPIV1Beta1}, 21 {"v1beta2", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta2"}}), false, false, StackAPIV1Beta2}, 22 {"most recent has precedence", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta1", "v1beta2"}}), false, false, StackAPIV1Beta2}, 23 {"most recent has precedence", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta1", "v1beta2", "v1alpha3"}}), false, false, StackAPIV1Beta2}, 24 {"most recent has precedence", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta1", "v1beta2", "v1alpha3"}}), true, false, StackAPIV1Alpha3}, 25 } 26 27 for _, test := range tests { 28 version, err := getAPIVersion(test.groups, test.experimental) 29 if test.err { 30 assert.ErrorContains(t, err, "") 31 } else { 32 assert.NilError(t, err) 33 } 34 assert.Check(t, is.Equal(test.expectedStack, version)) 35 } 36 } 37 38 type groupVersion struct { 39 name string 40 versions []string 41 } 42 43 func makeGroups(versions ...groupVersion) *metav1.APIGroupList { 44 groups := make([]metav1.APIGroup, len(versions)) 45 for i := range versions { 46 groups[i].Name = versions[i].name 47 for _, v := range versions[i].versions { 48 groups[i].Versions = append(groups[i].Versions, metav1.GroupVersionForDiscovery{Version: v}) 49 } 50 } 51 return &metav1.APIGroupList{ 52 Groups: groups, 53 } 54 }