@@ -2,7 +2,7 @@ package cluster
22
33import (
44 "encoding/json"
5- "errors "
5+ "fmt "
66 "reflect"
77 "testing"
88
@@ -18,17 +18,16 @@ import (
1818)
1919
2020func Test_GetKubeAPIServerArgs (t * testing.T ) {
21- errInvalidType := errors .New ("failed to convert input into slice: invalid type: []string, expected interface{}" )
2221 tests := []struct {
2322 name string
2423 cluster * v1.Cluster
25- expected keyValueArgs
24+ expected [] string
2625 expectedErr error
2726 }{
2827 {
2928 name : "cluster without kube-apiserver-arg" ,
3029 cluster : clusterWithoutKubeAPIServerArg (),
31- expected : keyValueArgs {},
30+ expected : [] string {},
3231 expectedErr : nil ,
3332 },
3433 {
@@ -38,42 +37,49 @@ func Test_GetKubeAPIServerArgs(t *testing.T) {
3837 RKEConfig : & v1.RKEConfig {},
3938 },
4039 },
41- expected : keyValueArgs {},
40+ expected : [] string {},
4241 expectedErr : nil ,
4342 },
4443 {
4544 name : "cluster with kube-apiserver-arg" ,
4645 cluster : clusterWithKubeAPIServerArg (),
47- expected : keyValueArgs {
48- { key : "foo" , value : " bar"} ,
49- { key : "foo2" , value : " bar2"} ,
46+ expected : [] string {
47+ "foo= bar" ,
48+ "foo2= bar2" ,
5049 },
5150 expectedErr : nil ,
5251 },
5352 {
5453 name : "cluster with kube-apiserver-arg-2" ,
5554 cluster : clusterWithKubeAPIServerArg2 (),
56- expected : keyValueArgs {
57- { key : "foo" , value : " bar"} ,
58- { key : "foo2" , value : " bar2"} ,
59- { key : "foo3" , value : " bar3=baz3"} ,
55+ expected : [] string {
56+ "foo= bar" ,
57+ "foo2= bar2" ,
58+ "foo3= bar3=baz3" ,
6059 },
6160 expectedErr : nil ,
6261 },
6362 {
6463 name : "cluster with duplicate keys in kube-apiserver-arg" ,
6564 cluster : clusterWithKubeAPIServerArg3 (),
66- expected : keyValueArgs {
67- {key : "foo" , value : "bar" },
68- {key : "foo2" , value : "bar2=baz2" },
65+ expected : []string {
66+ "foo=bar" ,
67+ "foo2=bar2" ,
68+ "foo2=bar2=baz2" ,
6969 },
7070 expectedErr : nil ,
7171 },
7272 {
73- name : "cluster with invalid data in kube-apiserver-arg" ,
74- cluster : clusterWithInvalidKubeAPIServerArg (),
75- expected : keyValueArgs {},
76- expectedErr : errInvalidType ,
73+ name : "cluster with bool flag data in kube-apiserver-arg" ,
74+ cluster : clusterWithBoolFlagKubeAPIServerArg (),
75+ expected : []string {"foo" , "foo2=bar2" },
76+ expectedErr : nil ,
77+ },
78+ {
79+ name : "cluster with invalid data type in kube-apiserver-arg" ,
80+ cluster : clusterWithInvalidKubeAPIServerArgType (),
81+ expected : []string {},
82+ expectedErr : fmt .Errorf ("failed to convert input into slice: invalid type: int, expected interface{}" ),
7783 },
7884 }
7985 for _ , tt := range tests {
@@ -85,7 +91,7 @@ func Test_GetKubeAPIServerArgs(t *testing.T) {
8591 }
8692 }
8793 if ! reflect .DeepEqual (tt .expected , got ) {
88- t .Errorf ("got : %v, expected : %v" , got , tt .expected )
94+ t .Errorf ("expected : %v, got : %v" , tt .expected , got )
8995 }
9096 })
9197 }
@@ -94,15 +100,15 @@ func Test_GetKubeAPIServerArgs(t *testing.T) {
94100func Test_SetKubeAPIServerArgs (t * testing.T ) {
95101 tests := []struct {
96102 name string
97- arg keyValueArgs
103+ args [] string
98104 cluster * v1.Cluster
99105 expected * v1.Cluster
100106 }{
101107 {
102108 name : "cluster that already has kube-apiserver-arg" ,
103- arg : keyValueArgs {
104- { key : "foo" , value : " bar"} ,
105- { key : "foo2" , value : " bar2"} ,
109+ args : [] string {
110+ "foo= bar" ,
111+ "foo2= bar2" ,
106112 },
107113 cluster : & v1.Cluster {
108114 Spec : v1.ClusterSpec {
@@ -123,9 +129,9 @@ func Test_SetKubeAPIServerArgs(t *testing.T) {
123129 },
124130 {
125131 name : "cluster that does not have MachineGlobalConfig" ,
126- arg : keyValueArgs {
127- { key : "foo" , value : " bar"} ,
128- { key : "foo2" , value : " bar2"} ,
132+ args : [] string {
133+ "foo= bar" ,
134+ "foo2= bar2" ,
129135 },
130136 cluster : & v1.Cluster {
131137 Spec : v1.ClusterSpec {
@@ -136,9 +142,9 @@ func Test_SetKubeAPIServerArgs(t *testing.T) {
136142 },
137143 {
138144 name : "cluster does not have kube-apiserver-arg but other args" ,
139- arg : keyValueArgs {
140- { key : "foo" , value : " bar"} ,
141- { key : "foo2" , value : " bar2"} ,
145+ args : [] string {
146+ "foo= bar" ,
147+ "foo2= bar2" ,
142148 },
143149 cluster : & v1.Cluster {
144150 Spec : v1.ClusterSpec {
@@ -162,9 +168,9 @@ func Test_SetKubeAPIServerArgs(t *testing.T) {
162168 }
163169 for _ , tt := range tests {
164170 t .Run (tt .name , func (t * testing.T ) {
165- setKubeAPIServerArgs (tt .arg , tt .cluster )
166- got , _ := parseFromRawArgs (tt .cluster . Spec . RKEConfig . MachineGlobalConfig . Data [ "kube-apiserver-arg" ] )
167- expected , _ := parseFromRawArgs (tt .expected . Spec . RKEConfig . MachineGlobalConfig . Data [ "kube-apiserver-arg" ] )
171+ setKubeAPIServerArgs (tt .args , tt .cluster )
172+ got , _ := getKubeAPIServerArgs (tt .cluster )
173+ expected , _ := getKubeAPIServerArgs (tt .expected )
168174 if ! reflect .DeepEqual (got , expected ) {
169175 t .Errorf ("got: %v, expected: %v" , got , expected )
170176 }
@@ -485,15 +491,21 @@ func clusterWithKubeAPIServerArg3() *v1.Cluster {
485491 return cluster
486492}
487493
488- func clusterWithInvalidKubeAPIServerArg () * v1.Cluster {
494+ func clusterWithBoolFlagKubeAPIServerArg () * v1.Cluster {
489495 cluster := clusterWithoutKubeAPIServerArg ()
490496 var arg []string
491- arg = append (arg , "foo=bar " )
497+ arg = append (arg , "foo" )
492498 arg = append (arg , "foo2=bar2" )
493499 cluster .Spec .RKEConfig .MachineGlobalConfig .Data ["kube-apiserver-arg" ] = arg
494500 return cluster
495501}
496502
503+ func clusterWithInvalidKubeAPIServerArgType () * v1.Cluster {
504+ cluster := clusterWithoutKubeAPIServerArg ()
505+ cluster .Spec .RKEConfig .MachineGlobalConfig .Data ["kube-apiserver-arg" ] = 123
506+ return cluster
507+ }
508+
497509func machineSelectorFile3 () rkev1.RKEProvisioningFiles {
498510 file := machineSelectorFile1 ()
499511 file .FileSources [0 ].Secret .Items [0 ].Hash = "expected-value-for-file-3"
0 commit comments