github.com/AliyunContainerService/cli@v0.0.0-20181009023821-814ced4b30d0/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 err bool 16 expectedStack StackVersion 17 }{ 18 {"no stack api", makeGroups(), true, ""}, 19 {"v1beta1", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta1"}}), false, StackAPIV1Beta1}, 20 {"v1beta2", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta2"}}), false, StackAPIV1Beta2}, 21 {"most recent has precedence", makeGroups(groupVersion{"compose.docker.com", []string{"v1beta1", "v1beta2"}}), false, StackAPIV1Beta2}, 22 } 23 24 for _, test := range tests { 25 version, err := getAPIVersion(test.groups) 26 if test.err { 27 assert.ErrorContains(t, err, "") 28 } else { 29 assert.NilError(t, err) 30 } 31 assert.Check(t, is.Equal(test.expectedStack, version)) 32 } 33 } 34 35 type groupVersion struct { 36 name string 37 versions []string 38 } 39 40 func makeGroups(versions ...groupVersion) *metav1.APIGroupList { 41 groups := make([]metav1.APIGroup, len(versions)) 42 for i := range versions { 43 groups[i].Name = versions[i].name 44 for _, v := range versions[i].versions { 45 groups[i].Versions = append(groups[i].Versions, metav1.GroupVersionForDiscovery{Version: v}) 46 } 47 } 48 return &metav1.APIGroupList{ 49 Groups: groups, 50 } 51 }