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  }