-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
Copy pathparse_yaml_test.go
319 lines (313 loc) · 23.1 KB
/
parse_yaml_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
package kubeconfig
import (
"errors"
"testing"
)
// ClientKey and token??
// https://github.com/jakkaj/ravenswood/blob/e31763d7dd8cf59af0c7bacb370e1edcbb31272f/deployments/Scripts/builds/yourbuild/aks_kubeconfig.yaml#L19
func Test_ParseYamlConfig(t *testing.T) {
tests := []testCase{
// True Positives
{
name: "ClientKeyData auth",
input: `apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURxekNDQXBPZ0F3SUJBZ0lVTWVuVHNleWtMcGQreWdPZGhzZkZCa3R0UTlNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2JERUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFVcHBibWN4RURBT0JnTlZCQWNUQjBKbAphVXBwYm1jeEV6QVJCZ05WQkFvVENrdDFZbVZ5Ym1WMFpYTXhEekFOQmdOVkJBc1RCbE41YzNSbGJURVRNQkVHCkExVUVBeE1LYTNWaVpYSnVaWFJsY3pBZUZ3MHhPREF4TVRBd09UTTBNREJhRncweU16QXhNRGt3T1RNME1EQmEKTUd3eEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRFZRUUlFd2RDWldsS2FXNW5NUkF3RGdZRFZRUUhFd2RDWldsSwphVzVuTVJNd0VRWURWUVFLRXdwTGRXSmxjbTVsZEdWek1ROHdEUVlEVlFRTEV3WlRlWE4wWlcweEV6QVJCZ05WCkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREkKM09HOE91d0h2ZVIvY3RSZE1naUJRMGc2cXozYmFnNTlDRG1yMURaU2R3bm9TTzZVR0QyanpjQllWVFJOTFFwWQpuc2FBY1pLa3FONmJDdHRiVGdCVkd4ZGltNGQzdXdveS9kcnpTeU9zclVnWUVsZGQwV0p2Nk5xZVUrUGVOd01pCmg1WGxTcFlYbTF1eTBDejFSdFlLbUZxZUFoMTN2c1hwMGptcEQ0NCtQMStIN0dvaWlXSTNMakVCOFNlcVM2LzIKUzVvNXlWdC92VzlUTlRzZ1FRL2o1Q2tNYnRkMGdDVzdGdk14ckpabXZFNi9Ocm9vU3o0WDZVb3M1TkxZVFYwdwpyVDhJbDZ2N3l4d2xHcEZ3dE0wSy9yMGRQN1U0eGRjUVFjQzlkOFRqaE5SMWczNEVaeXBNZ2FybFBVWDYzK1AxCjhWMXExanBScXdGZG9uS1lNSWExQWdNQkFBR2pSVEJETUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUIKQWY4RUNEQUdBUUgvQWdFQ01CMEdBMVVkRGdRV0JCUklROENvNnl4NEh1RXZ3anZlR0NQZXBDUGVpekFOQmdrcQpoa2lHOXcwQkFRc0ZBQU9DQVFFQXZxaGFvUjUzdEZSMmlDdllaWFc0Zmc5Zlh2Y25mUEFxY3pwTEtIbVNjUDdZCjdZWWxJOVF2Vkg1YXVZanU0WjRjVWVsMFErcytUZXp6dGFkRDYvMHJ2K1pVRlB5a0NxQld4NDh1NjRmZ2JlNnIKN25USnJjRXY3Sm54eENSN04vem5YQ25rYStDOE5vMEE2UzJCU1ZHS29rSkZzNmNmMy85OEZLazQyU0ZqM2NsNwpLMytobUtJU0hQMGxWQ2ZwNWVhTHVTcEYzakwvYUdmVk4wb1dLaWJFYWN2QWFhUE5DR29zMkRFV0NsNjNMY2wxCnhoTktsWjlBdDgvN2M0ejRSemJwUDJVaE9FYkRGQlYyRXhhLy9ya0NEdnhDUWtudmtva004TnN0Q1loc2MyWVkKNjNIang0K3hNZjZJNUhlUVBUS2Y3dy9LZVZwbFdLdkVBQVV4MFhYUTVRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://console-kubernetes.example.com:443
name: console-kubernetes-example-com:443
- cluster:
certificate-authority: ./ca.crt
server: https://192.168.99.100:8443
name: minikube
contexts:
- context:
cluster: console-kubernetes-example-com:443
user: "system:serviceaccount:default:example/console-kubernetes-example-com:443"
name: default
- context:
cluster: minikube
user: minikube
name: minikube
current-context: default
kind: Config
preferences: {}
users:
- name: "system:serviceaccount:default:example/console-kubernetes-example-com:443"
user:
as-user-extra: {}
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ3RENDQXRTZ0F3SUJBZ0lVREZGNzY0cVRUeGJsbWpEWEdqZGp0M0RYWnFvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2JERUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFVcHBibWN4RURBT0JnTlZCQWNUQjBKbAphVXBwYm1jeEV6QVJCZ05WQkFvVENrdDFZbVZ5Ym1WMFpYTXhEekFOQmdOVkJBc1RCbE41YzNSbGJURVRNQkVHCkExVUVBeE1LYTNWaVpYSnVaWFJsY3pBZUZ3MHhPREF4TVRBd09UVXhNREJhRncweU9EQXhNRGd3T1RVeE1EQmEKTUhNeEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRFZRUUlFd2RDWldsS2FXNW5NUkF3RGdZRFZRUUhFd2RDWldsSwphVzVuTVJNd0VRWURWUVFLRXdwcmRXSmxjbTVsZEdWek1ROHdEUVlEVlFRTEV3WlRlWE4wWlcweEdqQVlCZ05WCkJBTVRFWE41YzNSbGJUcHJkV0psTFhCeWIzaDVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUIKQ2dLQ0FRRUFwMXpVd1Q3VzNucnlIZEJoS0lvMkYxTXpwWGxYMndXbUZQTlViMUMvQytqMTZxT0pjZlpZLzRxbApqdHl1TjBrWjZWUmN3U3hXZk5rZm04ejd3emJvNW1jd1lEUUgzR0JWdG43aXY5dFhjSG16OHJkVGhKOGdHWERzClVsQVRCc1Y5YWExa21jbHhZbjBCMEh5T1oycnNEdC80TW8vYm1hUWIzT2JyR1pqbUNyVnVnY0xjeGFpSk9ycWEKRDZRT1I4S1FxQ2ZNbThRbzRmeDdjVFY0NlZ0aHVTbklUc001RmRmdUxkU1JQbWxCcE5aeElHU2kwZ0JhK0xOUgpacmlRYnBRSHY5b1NhOTRaVlY4RnVudVdrZUEzOThvWDloZTlwR1dVL0hDeEZNRHlONnRybTlNSlNTeEtQSExaCkF4dllsOHFGL2JRS2FLK3hreFdNSmloN2xUOFprd0lEQVFBQm8zOHdmVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXcKSFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQndNQ01Bd0dBMVVkRXdFQi93UUNNQUF3SFFZRApWUjBPQkJZRUZBUG9sQUVPVElBWllzbHdrTzFXTTBYNjgvWE5NQjhHQTFVZEl3UVlNQmFBRkVoRHdLanJMSGdlCjRTL0NPOTRZSTk2a0k5NkxNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUI4cUlCdFF0UWdMT3MyVW5LRHNIMlMKUCtYaW5STlFLSGRFdllhd2w3L0FwZ0RkcHVFV09KZmFENnVZQ3NvSFNaMDQwQzg5ckJWOVJ2MXlzT0lsbXVCRApVOTFrZU5hTkkwQlM5dm95VWZlbzJ0VVF6bk85NGpmVWphY1pCSkdIY0g2TTVtZ2ZKTG9JR3NYR0grazc3QkduCnZWQmVMUENUMGtPa3pla0JhZlEwYzA2WElTdGFtKzhpcFJaUDZaZ3E0eXZOc3JPSm9QcTBxSlcvd0FtMjdQM1IKNWdpMUVWM09iL1M3N3IvSGZjTW81RTdiRUR3eWhSVHZtVDFSWmJkNURMeXZwODRvNS9KMXRzVExvL25pZ0VnbgpTdmhSNWVleDIwNXBwZWlWYXEyUCtXTlFweFg3VXlMS3VaSFhqVFNXNzQvc05tcU5Na08wcHdEYTZoQU1XR2ZRCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcDF6VXdUN1czbnJ5SGRCaEtJbzJGMU16cFhsWDJ3V21GUE5VYjFDL0MrajE2cU9KCmNmWlkvNHFsanR5dU4wa1o2VlJjd1N4V2ZOa2ZtOHo3d3pibzVtY3dZRFFIM0dCVnRuN2l2OXRYY0htejhyZFQKaEo4Z0dYRHNVbEFUQnNWOWFhMWttY2x4WW4wQjBIeU9aMnJzRHQvNE1vL2JtYVFiM09ickdaam1DclZ1Z2NMYwp4YWlKT3JxYUQ2UU9SOEtRcUNmTW04UW80Zng3Y1RWNDZWdGh1U25JVHNNNUZkZnVMZFNSUG1sQnBOWnhJR1NpCjBnQmErTE5SWnJpUWJwUUh2OW9TYTk0WlZWOEZ1bnVXa2VBMzk4b1g5aGU5cEdXVS9IQ3hGTUR5TjZ0cm05TUoKU1N4S1BITFpBeHZZbDhxRi9iUUthSyt4a3hXTUppaDdsVDhaa3dJREFRQUJBb0lCQUZOVWhsNDlvcENkMktWOQpscEt2MW1UZ3VXdGZzcDNML3ppWk8yWTlaeEpRQ1BtdU9ZWXpxWFo3R3htNXlVaWZyalllR2h6WXJhdDJGQ1huCjkwYm90U2ZiSXh3VGJBS1BPTDRvQ1ZDTHJzckMzaFV3c0hYdElQZHA0VkRPcTlxSVJIeDBxQTFtWG4weVRzLzIKNUpTYmlUT1MwcXFpTkM0WXB3TGpPeFhBcW5HVHZDQmd6OEhWMFJwSEgvaGtBVXJkTWlnNTJLeXNQTGtMSlBzUwozLzlpMGpGTnloU0RQVHFZajg3dVkwOS9ROEtLaHRiUm1tUXgzU1hZTUF6SVQyVllxc0hldXBaZzlRSjlRbkhzCngyQXVpdVVFNURTN25IN2pndFhGQlNzMy9qWml2TWtnQzI0SHk5Yi9OdlU4S0lZQlh0WEwvT1pEUXMyNnJ2VloKZUxMT1NKa0NnWUVBdzVZU1lnZDZjcmRKM1gyQnE3V2dveGMwQWpvbXc5aEVnamVzL2lUbEZpb1NFRXlNbGFFbwo5UFJwUzY5MU53YUxBZzRvcmNCdnZLQm9vRTVldERxaXFNQTc3OUF4ZEVlckVJSXJxQlJDUGRXZ29zVTVKdkNsClkxV2QyMTJabmhEc3ptTU4wbjFTS2h0aldjb0o1SU5WN2Q5Q3pya1R1MW1ETTBMdSsweUswMzhDZ1lFQTJ3NzgKWWJZWVNVMmNxeGhtSTdrZ3NESnNtK1RTQUkyYlpwZ29DMmpBZjlMSU5DSjJoRmUyWWxqeW4vSHMwbUI4dFF4dwozMGluRWJCVVA0amRrTS93Tll3dG0wQ1dFQnRrRWRpVkJkYXZlTFNDaGhHdmsrM0lTdDlCaGsrd1E5cUxKODFlCm1kdTZxcmZPdS84M3pSSmdsUVRLSVhFRXBpUGdKc21KSlc3cE0rMENnWUFtUUNaT042b3gzemk1OFg2M3B5akkKWEpSV1R5c2ZxQjhWM0crZnNIV0JGUzg5TXN0WHhCSHZmaEZOdFAzV2loZ0xpZHRZeDhiU2ZBaWFPVmw2SS9HRgowVHFubHU3bEQ5TWJ3bWxwVUxUM3hOekttSW1wM094cmRlWU9iY3JLU0FNWUJmVkJFak5NZXRpK1NhNFBtOFBsClpvRjVUbWJXZ0JZUm8yaDdpeWVuWHdLQmdRQ3FHY2JzOFFPRzJGZVJuRTZqNnJ0eFZwWnpyNGxLbUt0VlRVMjcKSGtwc2QzYXkxUmdHeUQxOXZPZ2FQemZRWE5BNW5rRi9nT0VLb1V1cVVsTUtnZzFhNTFENnYzcEhZNTJmSmZrQwpJYVQ4Szk4MjBFRHdzN0hXUWVxVnF3ZUtpUWVKanJXbzc3RFJwQTFLZW5JUU1mY0JnRWlkRXkreSt5U3h1Y2xmCllmS0FPUUtCZ1FDU05EK1g5SjVOaVBGOTRyWG1CaE9KTVNkelB6eUV2Y1NwTjJ6ZkY5WFEzcUtJVWlaQUdtdmUKelVSUzNlTUt6TmJhaUt5cXZvMEE0c3hlb2czcldPNEN1a0pmRW01NWViNXl3VlRSOXZYeWt3YmdMR08xOHU3TwpYOEJKNzB5QmJYUHN6c2NpWDR5ak9hbWF4eGFDVkxCU2ZDWkhiaGZNVDVnR0FJZTNTV2duQVE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
- name: minikube
user:
as-user-extra: {}
client-certificate: ./client.crt
client-key: ./client.key
`,
want: []cluster{
{
Server: "https://console-kubernetes.example.com:443",
User: "system:serviceaccount:default:example/console-kubernetes-example-com:443",
Auth: clusterAuth{
Type: clientKeyAuth,
ClientKey: "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcDF6VXdUN1czbnJ5SGRCaEtJbzJGMU16cFhsWDJ3V21GUE5VYjFDL0MrajE2cU9KCmNmWlkvNHFsanR5dU4wa1o2VlJjd1N4V2ZOa2ZtOHo3d3pibzVtY3dZRFFIM0dCVnRuN2l2OXRYY0htejhyZFQKaEo4Z0dYRHNVbEFUQnNWOWFhMWttY2x4WW4wQjBIeU9aMnJzRHQvNE1vL2JtYVFiM09ickdaam1DclZ1Z2NMYwp4YWlKT3JxYUQ2UU9SOEtRcUNmTW04UW80Zng3Y1RWNDZWdGh1U25JVHNNNUZkZnVMZFNSUG1sQnBOWnhJR1NpCjBnQmErTE5SWnJpUWJwUUh2OW9TYTk0WlZWOEZ1bnVXa2VBMzk4b1g5aGU5cEdXVS9IQ3hGTUR5TjZ0cm05TUoKU1N4S1BITFpBeHZZbDhxRi9iUUthSyt4a3hXTUppaDdsVDhaa3dJREFRQUJBb0lCQUZOVWhsNDlvcENkMktWOQpscEt2MW1UZ3VXdGZzcDNML3ppWk8yWTlaeEpRQ1BtdU9ZWXpxWFo3R3htNXlVaWZyalllR2h6WXJhdDJGQ1huCjkwYm90U2ZiSXh3VGJBS1BPTDRvQ1ZDTHJzckMzaFV3c0hYdElQZHA0VkRPcTlxSVJIeDBxQTFtWG4weVRzLzIKNUpTYmlUT1MwcXFpTkM0WXB3TGpPeFhBcW5HVHZDQmd6OEhWMFJwSEgvaGtBVXJkTWlnNTJLeXNQTGtMSlBzUwozLzlpMGpGTnloU0RQVHFZajg3dVkwOS9ROEtLaHRiUm1tUXgzU1hZTUF6SVQyVllxc0hldXBaZzlRSjlRbkhzCngyQXVpdVVFNURTN25IN2pndFhGQlNzMy9qWml2TWtnQzI0SHk5Yi9OdlU4S0lZQlh0WEwvT1pEUXMyNnJ2VloKZUxMT1NKa0NnWUVBdzVZU1lnZDZjcmRKM1gyQnE3V2dveGMwQWpvbXc5aEVnamVzL2lUbEZpb1NFRXlNbGFFbwo5UFJwUzY5MU53YUxBZzRvcmNCdnZLQm9vRTVldERxaXFNQTc3OUF4ZEVlckVJSXJxQlJDUGRXZ29zVTVKdkNsClkxV2QyMTJabmhEc3ptTU4wbjFTS2h0aldjb0o1SU5WN2Q5Q3pya1R1MW1ETTBMdSsweUswMzhDZ1lFQTJ3NzgKWWJZWVNVMmNxeGhtSTdrZ3NESnNtK1RTQUkyYlpwZ29DMmpBZjlMSU5DSjJoRmUyWWxqeW4vSHMwbUI4dFF4dwozMGluRWJCVVA0amRrTS93Tll3dG0wQ1dFQnRrRWRpVkJkYXZlTFNDaGhHdmsrM0lTdDlCaGsrd1E5cUxKODFlCm1kdTZxcmZPdS84M3pSSmdsUVRLSVhFRXBpUGdKc21KSlc3cE0rMENnWUFtUUNaT042b3gzemk1OFg2M3B5akkKWEpSV1R5c2ZxQjhWM0crZnNIV0JGUzg5TXN0WHhCSHZmaEZOdFAzV2loZ0xpZHRZeDhiU2ZBaWFPVmw2SS9HRgowVHFubHU3bEQ5TWJ3bWxwVUxUM3hOekttSW1wM094cmRlWU9iY3JLU0FNWUJmVkJFak5NZXRpK1NhNFBtOFBsClpvRjVUbWJXZ0JZUm8yaDdpeWVuWHdLQmdRQ3FHY2JzOFFPRzJGZVJuRTZqNnJ0eFZwWnpyNGxLbUt0VlRVMjcKSGtwc2QzYXkxUmdHeUQxOXZPZ2FQemZRWE5BNW5rRi9nT0VLb1V1cVVsTUtnZzFhNTFENnYzcEhZNTJmSmZrQwpJYVQ4Szk4MjBFRHdzN0hXUWVxVnF3ZUtpUWVKanJXbzc3RFJwQTFLZW5JUU1mY0JnRWlkRXkreSt5U3h1Y2xmCllmS0FPUUtCZ1FDU05EK1g5SjVOaVBGOTRyWG1CaE9KTVNkelB6eUV2Y1NwTjJ6ZkY5WFEzcUtJVWlaQUdtdmUKelVSUzNlTUt6TmJhaUt5cXZvMEE0c3hlb2czcldPNEN1a0pmRW01NWViNXl3VlRSOXZYeWt3YmdMR08xOHU3TwpYOEJKNzB5QmJYUHN6c2NpWDR5ak9hbWF4eGFDVkxCU2ZDWkhiaGZNVDVnR0FJZTNTV2duQVE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=",
},
},
},
},
{
name: "Password auth",
input: `apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWakNCL3FBREFnRUNBZ0VBTUFvR0NDcUdTTTQ5QkFNQ01DTXhJVEFmQmdOVkJBTU1HR3N6Y3kxelpYSjIKWlhJdFkyRkFNVFU1T0RJNE5qZ3pNekFlRncweU1EQTRNalF4TmpNek5UTmFGdzB6TURBNE1qSXhOak16TlROYQpNQ014SVRBZkJnTlZCQU1NR0dzemN5MXpaWEoyWlhJdFkyRkFNVFU1T0RJNE5qZ3pNekJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkp3ZTF2UXR0T1F6c2xaVTNUQkhSWlQzS293UWdHdnY1TnYvZko5NTRpSkkKbG5nbHVyZktWQk9nbDM2bFp2UGJGdzVKTTFpSWYzaEVmVTZxU3crNThSR2pJekFoTUE0R0ExVWREd0VCL3dRRQpBd0lDcERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUVSMG81dm82K1pXCkVkaE1GYXpVWk9CTnhkVk14N0dRTTY1MCsyWFBzZTBJQWlBVkJBWmZUdE94SkN0Q2lZQnp6alhzM29MWWhyZzYKcFVhQ0o3Nyt0VFpycUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.1:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
users:
- name: default
user:
password: f976df38c1bc4ed617413adef8844217
username: admin`,
want: []cluster{
{
Server: "https://127.0.0.1:6443",
User: "default",
Auth: clusterAuth{
Type: passwordAuth,
Username: "admin",
Password: "f976df38c1bc4ed617413adef8844217",
},
},
},
},
{
name: "Token auth",
input: `apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://192.168.0.27:8080/r/projects/1a5/kubernetes:6443
name: Default
- cluster:
certificate-authority: ./ca.crt
server: https://192.168.99.100:8443
name: minikube
contexts:
- context:
cluster: Default
user: Default
name: Default
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: Default
user:
token: QmFzaWMgT0VZMk5qQTBOa0pDTlRjNU1UTTFSRUpDT1RFNlEzVlNWWEZIVEhGMU4yUnpTRXhLU0dGbGRWcGplRlJsY0dKVVpISmphRk5FVGtGV1VVdGFkQT09
- name: minikube
user:
as-user-extra: {}
client-certificate: ./client.crt
client-key: ./client.key`,
want: []cluster{
{
Server: "https://192.168.0.27:8080/r/projects/1a5/kubernetes:6443",
User: "Default",
Auth: clusterAuth{
Type: tokenAuth,
Token: "QmFzaWMgT0VZMk5qQTBOa0pDTlRjNU1UTTFSRUpDT1RFNlEzVlNWWEZIVEhGMU4yUnpTRXhLU0dGbGRWcGplRlJsY0dKVVpISmphRk5FVGtGV1VVdGFkQT09",
},
},
},
},
// Errors
{
name: "No auth",
input: `apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWakNCL3FBREFnRUNBZ0VBTUFvR0NDcUdTTTQ5QkFNQ01DTXhJVEFmQmdOVkJBTU1HR3N6Y3kxelpYSjIKWlhJdFkyRkFNVFU1T0RJNE5qZ3pNekFlRncweU1EQTRNalF4TmpNek5UTmFGdzB6TURBNE1qSXhOak16TlROYQpNQ014SVRBZkJnTlZCQU1NR0dzemN5MXpaWEoyWlhJdFkyRkFNVFU1T0RJNE5qZ3pNekJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkp3ZTF2UXR0T1F6c2xaVTNUQkhSWlQzS293UWdHdnY1TnYvZko5NTRpSkkKbG5nbHVyZktWQk9nbDM2bFp2UGJGdzVKTTFpSWYzaEVmVTZxU3crNThSR2pJekFoTUE0R0ExVWREd0VCL3dRRQpBd0lDcERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUVSMG81dm82K1pXCkVkaE1GYXpVWk9CTnhkVk14N0dRTTY1MCsyWFBzZTBJQWlBVkJBWmZUdE94SkN0Q2lZQnp6alhzM29MWWhyZzYKcFVhQ0o3Nyt0VFpycUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.1:6443
name: default
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWakNCL3FBREFnRUNBZ0VBTUFvR0NDcUdTTTQ5QkFNQ01DTXhJVEFmQmdOVkJBTU1HR3N6Y3kxelpYSjIKWlhJdFkyRkFNVFU1T0RJNE5qZ3pNekFlRncweU1EQTRNalF4TmpNek5UTmFGdzB6TURBNE1qSXhOak16TlROYQpNQ014SVRBZkJnTlZCQU1NR0dzemN5MXpaWEoyWlhJdFkyRkFNVFU1T0RJNE5qZ3pNekJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkp3ZTF2UXR0T1F6c2xaVTNUQkhSWlQzS293UWdHdnY1TnYvZko5NTRpSkkKbG5nbHVyZktWQk9nbDM2bFp2UGJGdzVKTTFpSWYzaEVmVTZxU3crNThSR2pJekFoTUE0R0ExVWREd0VCL3dRRQpBd0lDcERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUVSMG81dm82K1pXCkVkaE1GYXpVWk9CTnhkVk14N0dRTTY1MCsyWFBzZTBJQWlBVkJBWmZUdE94SkN0Q2lZQnp6alhzM29MWWhyZzYKcFVhQ0o3Nyt0VFpycUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.2:6443
name: default2
contexts:
- context:
cluster: default
user: default
name: default
- context:
cluster: default2
user: default2
name: default2
current-context: default
users:
- name: default
user:
password: f976df38c1bc4ed617413adef8844217
username: admin`,
want: []cluster{
{
Server: "https://127.0.0.1:6443",
User: "default",
Auth: clusterAuth{
Type: passwordAuth,
Username: "admin",
Password: "f976df38c1bc4ed617413adef8844217",
},
},
},
wantErrs: []error{errors.New("user 'default2@default2' has no associated auth info")},
},
{
name: "Empty config",
input: `clusters:
contexts:
current-context:
kind: Config
preferences: {}
users: `,
wantErrs: []error{noClusterEntriesError},
},
// False positives
// {
// name: "typical",
// input: `apiVersion: v1
//clusters:
//- cluster:
// certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2akNDQWRLZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1EY3hOREV6TVRjek0xb1hEVE15TURjeE1URXpNakl6TTFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZ1CjB3STdVdDd0R3VoR0l1Y1VOM1VWOUJJRzVtalBHVjBGYnZFaTZHL1pTQlJ2YXpkdWNBcjAreG9xQm9qbFppUUsKaFF3RkppVHJxVHdZODRjMmgvSXM5ZVJjMit6V1g5cDZwOVlmdnJzYlBhZjB0elp2cU9RRGRSeGVZUUg0dC9HUQpOSUxOSmJqSU9NSXFNbjhjWVNhbXZYZmovUWJuQWx2QlI3VC9uVzh3VjdyeVJSQjZ2a3RxRkEzaVY0STQveWpHClI5RW4vLzQ1Y0xVU1dIL1hGb1U2a21iaEJQYkJSTHY2WjJHRkZuS29SVTVuc01iaE0vZk9RV3F1emZPUDgxUHoKTzkwczVtQ0w2bnkwOU14VzlOdGV3ZE55UkprTElWSTl5aDJwRjBuNW9vTHNrTC91ODRBdTh2VTc5K0szaDZZWgptT2t2NzBpK0FUY0lBa1BialdNQ0F3RUFBYU5GTUVNd0RnWURWUjBQQVFIL0JBUURBZ0trTUJJR0ExVWRFd0VCCi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGUG9zSG5CeTlIaXhsWi93UmJIVnJKS3IvTEFITUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQWZiaVZERFhNWkZnYlhxcVd4QUdmRmVKVkhDL3JKMmZQWjJqVmt0TVZNQS92TAozTGFKc3dTaVJxeTIzNFZTVXRRSE0zZDl4ZUo4MzFqK0locUtndkNVVWpwNGRlL1Q5U284R0dITlB0RWh2ZWF3Cm1jWFBDcHJmZnpweSt5QmpTTTEvRGY0bnlFTmRwZkpWOFlCUU8xNmtaQ2d0d1lTOU1STEZidU5nYUFmZ2VZMmoKbG0ycHFoOHJPWmphUkZLQlZoZHJ5cGJic204V2xqRVlrZVBQOFB2N281QXo4Nm9iYkRqSFhiekY1RHVjOEllSQpidFNCbDl4eUwzbFZzblFSUHlLeG5jc2M5MElHb3NNRWJGRDZYZnkwcWRKVitsL2lwYkU0UmhnSllJM3VUMGdTClN0d0IxNXF5N09OR0NmZy9tem94MlJQSHRhdThmNXltVFlqN3dPNEIKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
// server: https://172.16.16.2:6443
// name: clstr-mgmt01`,
// want: []string{"https://172.16.16.2:6443", "clstr-mgmt01"},
// },
// {
// name: "extra data between 'cluster' and 'server'",
// input: `apiVersion: v1
//clusters:
//- cluster:
// certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCakNDQWU2Z0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwdGFXNXAKYTNWaVpVTkJNQjRYRFRJeE1Ea3hOakU0TkRNME0xb1hEVE14TURreE5URTRORE0wTTFvd0ZURVRNQkVHQTFVRQpBeE1LYldsdWFXdDFZbVZEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTG1SCk1DSHJheEQ0WmFRYnFWMmM1dXdBR2s1bDFkM3djQkl2b0FIY2tUaVMzY1BKWFJBR3poZmJ0ZmJWYjFIZmh1QncKQyt5dFA2Q2hub0ZWeXI4ZGEwNXNGeTFzS1J0ZFFqdnZMWW0rbHZ2RDMrNUJmemszUCtFMzg1ZVcxTE5VQkRwcgp3azljS2VwR3B5ZUZRNms2RzhERjY3QkJOelFKU1QxcXVVVVFGWGZITE1HRnY1c2F3NlVjaDFXa2IrQUpRN3l5CjBEcTNVNnFWekZwZzJwMTlWbVM5dHpBOTBoTWZlYi8vNEUyUm8wT0tlRktSUVZnSnZIcFZMeU9oZ0xGL2ZxcCsKd1FNU0JQYTIwN3JwaW8xd29aQjNBNWJxbzdBbkpWOWNRSWc5aDVXZzBMS1ZQTUhyUDVnQ1dqd3BPeGRPVXZ0bgpnSDlRVDQ4UDJsKzJDbGo5Q29jQ0F3RUFBYU5oTUY4d0RnWURWUjBQQVFIL0JBUURBZ0trTUIwR0ExVWRKUVFXCk1CUUdDQ3NHQVFVRkJ3TUNCZ2dyQmdFRkJRY0RBVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVcKQkJRcy9pT3pVK0xpMDV2UXFUVWR6TnhCYXovakR6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqSzF6bmoyWgpNbWxOa3NlVml3QnJDdVhJaGdzSDliUXVRMlhjVm1uUStLb0VGMzh1Nk9SU2F5djR6ek5nOVZPT1pmWlk0VlhYCkRMTjZHaTJieDRJK0pXZy9JS25NSzVaL3BpVXBienFtTHlaNWlBdlNiV0lwM0lvakpQOWkrNk8vakpFTHZGN3MKUG1rczBLNzhYRlBpYit2di9UMjVvUGNpTDIyYncvM0RtN1lMMDM4MXlqamkyK3U4cUNHbjZQS0lFekFBM01acApQeCtYU1BRaTgwcEtYUUVlY2R6MVoxSWZzenZJUkt3aHVjeURpUXc3OC9DNTlVQmlmb0NZeWJ2cXpkQytRdlUyCld1a0NzanozY0FwOVRpZEtDYVBhMnloakZRc3REeFVnYWI4RmhYYTJjVVBFanZhdDB1cnZ4bVluT1ZhM0pNbFQKNTNkSFJiMGxUb3NTWmc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
// extensions:
// - extension:
// last-update: Fri, 17 Sep 2021 15:21:30 MDT
// provider: minikube.sigs.k8s.io
// version: v1.23.1
// name: cluster_info
// server: https://192.168.1.129:51999
// name: minikube`,
// want: []string{"https://192.168.1.129:51999", "minikube"},
// },
// {
// name: "multiple clusters",
// input: `apiVersion: v1
//clusters:
//- cluster:
// certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2akNDQWRLZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1EY3hOREV6TVRjek0xb1hEVE15TURjeE1URXpNakl6TTFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZ1CjB3STdVdDd0R3VoR0l1Y1VOM1VWOUJJRzVtalBHVjBGYnZFaTZHL1pTQlJ2YXpkdWNBcjAreG9xQm9qbFppUUsKaFF3RkppVHJxVHdZODRjMmgvSXM5ZVJjMit6V1g5cDZwOVlmdnJzYlBhZjB0elp2cU9RRGRSeGVZUUg0dC9HUQpOSUxOSmJqSU9NSXFNbjhjWVNhbXZYZmovUWJuQWx2QlI3VC9uVzh3VjdyeVJSQjZ2a3RxRkEzaVY0STQveWpHClI5RW4vLzQ1Y0xVU1dIL1hGb1U2a21iaEJQYkJSTHY2WjJHRkZuS29SVTVuc01iaE0vZk9RV3F1emZPUDgxUHoKTzkwczVtQ0w2bnkwOU14VzlOdGV3ZE55UkprTElWSTl5aDJwRjBuNW9vTHNrTC91ODRBdTh2VTc5K0szaDZZWgptT2t2NzBpK0FUY0lBa1BialdNQ0F3RUFBYU5GTUVNd0RnWURWUjBQQVFIL0JBUURBZ0trTUJJR0ExVWRFd0VCCi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGUG9zSG5CeTlIaXhsWi93UmJIVnJKS3IvTEFITUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQWZiaVZERFhNWkZnYlhxcVd4QUdmRmVKVkhDL3JKMmZQWjJqVmt0TVZNQS92TAozTGFKc3dTaVJxeTIzNFZTVXRRSE0zZDl4ZUo4MzFqK0locUtndkNVVWpwNGRlL1Q5U284R0dITlB0RWh2ZWF3Cm1jWFBDcHJmZnpweSt5QmpTTTEvRGY0bnlFTmRwZkpWOFlCUU8xNmtaQ2d0d1lTOU1STEZidU5nYUFmZ2VZMmoKbG0ycHFoOHJPWmphUkZLQlZoZHJ5cGJic204V2xqRVlrZVBQOFB2N281QXo4Nm9iYkRqSFhiekY1RHVjOEllSQpidFNCbDl4eUwzbFZzblFSUHlLeG5jc2M5MElHb3NNRWJGRDZYZnkwcWRKVitsL2lwYkU0UmhnSllJM3VUMGdTClN0d0IxNXF5N09OR0NmZy9tem94MlJQSHRhdThmNXltVFlqN3dPNEIKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
// server: https://172.16.16.2:6443
// name: clstr-mgmt01
//- cluster:
// certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURxekNDQXBPZ0F3SUJBZ0lVTWVuVHNleWtMcGQreWdPZGhzZkZCa3R0UTlNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2JERUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFVcHBibWN4RURBT0JnTlZCQWNUQjBKbAphVXBwYm1jeEV6QVJCZ05WQkFvVENrdDFZbVZ5Ym1WMFpYTXhEekFOQmdOVkJBc1RCbE41YzNSbGJURVRNQkVHCkExVUVBeE1LYTNWaVpYSnVaWFJsY3pBZUZ3MHhPREF4TVRBd09UTTBNREJhRncweU16QXhNRGt3T1RNME1EQmEKTUd3eEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRFZRUUlFd2RDWldsS2FXNW5NUkF3RGdZRFZRUUhFd2RDWldsSwphVzVuTVJNd0VRWURWUVFLRXdwTGRXSmxjbTVsZEdWek1ROHdEUVlEVlFRTEV3WlRlWE4wWlcweEV6QVJCZ05WCkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREkKM09HOE91d0h2ZVIvY3RSZE1naUJRMGc2cXozYmFnNTlDRG1yMURaU2R3bm9TTzZVR0QyanpjQllWVFJOTFFwWQpuc2FBY1pLa3FONmJDdHRiVGdCVkd4ZGltNGQzdXdveS9kcnpTeU9zclVnWUVsZGQwV0p2Nk5xZVUrUGVOd01pCmg1WGxTcFlYbTF1eTBDejFSdFlLbUZxZUFoMTN2c1hwMGptcEQ0NCtQMStIN0dvaWlXSTNMakVCOFNlcVM2LzIKUzVvNXlWdC92VzlUTlRzZ1FRL2o1Q2tNYnRkMGdDVzdGdk14ckpabXZFNi9Ocm9vU3o0WDZVb3M1TkxZVFYwdwpyVDhJbDZ2N3l4d2xHcEZ3dE0wSy9yMGRQN1U0eGRjUVFjQzlkOFRqaE5SMWczNEVaeXBNZ2FybFBVWDYzK1AxCjhWMXExanBScXdGZG9uS1lNSWExQWdNQkFBR2pSVEJETUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUIKQWY4RUNEQUdBUUgvQWdFQ01CMEdBMVVkRGdRV0JCUklROENvNnl4NEh1RXZ3anZlR0NQZXBDUGVpekFOQmdrcQpoa2lHOXcwQkFRc0ZBQU9DQVFFQXZxaGFvUjUzdEZSMmlDdllaWFc0Zmc5Zlh2Y25mUEFxY3pwTEtIbVNjUDdZCjdZWWxJOVF2Vkg1YXVZanU0WjRjVWVsMFErcytUZXp6dGFkRDYvMHJ2K1pVRlB5a0NxQld4NDh1NjRmZ2JlNnIKN25USnJjRXY3Sm54eENSN04vem5YQ25rYStDOE5vMEE2UzJCU1ZHS29rSkZzNmNmMy85OEZLazQyU0ZqM2NsNwpLMytobUtJU0hQMGxWQ2ZwNWVhTHVTcEYzakwvYUdmVk4wb1dLaWJFYWN2QWFhUE5DR29zMkRFV0NsNjNMY2wxCnhoTktsWjlBdDgvN2M0ejRSemJwUDJVaE9FYkRGQlYyRXhhLy9ya0NEdnhDUWtudmtva004TnN0Q1loc2MyWVkKNjNIang0K3hNZjZJNUhlUVBUS2Y3dy9LZVZwbFdLdkVBQVV4MFhYUTVRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
// server: https://172.17.8.101:6443
// name: kubernetes
//`,
// want: []string{"https://172.16.16.2:6443", "clstr-mgmt01", "https://172.17.8.101:6443", "kubernetes"},
// },
// {
// name: "JSON config",
// input: `{
// "apiVersion": "v1",
// "clusters": [
// {
// "cluster": {
// "server": "https://k8s-master.tools.wmflabs.org:6443"
// },
// "name": "default"
// }
// ],`,
// skip: true,
// },
}
runTest(t, parseYaml, tests)
}
func Test_Yaml_DifferentOrder(t *testing.T) {
tests := []testCase{
{
name: "clusters>users>contexts",
input: `apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
server: https://127.0.0.1:443
name: a
users:
- name: a
user:
token: s3cret
current-context: a
contexts:
- context:
cluster: a
user: a
name: a
`,
want: []cluster{
{
Server: "https://127.0.0.1:443",
User: "a",
Auth: clusterAuth{
Type: tokenAuth,
Token: "s3cret",
},
},
},
},
{
name: "users>contexts>clusters",
input: `apiVersion: v1
kind: Config
users:
- name: a
user:
token: s3cret
contexts:
- context:
cluster: a
user: a
name: a
current-context: a
preferences: {}
clusters:
- cluster:
server: https://127.0.0.1:443
name: a
`,
want: []cluster{
{
Server: "https://127.0.0.1:443",
User: "a",
Auth: clusterAuth{
Type: tokenAuth,
Token: "s3cret",
},
},
},
},
}
runTest(t, parseYaml, tests)
}