Skip to content

Commit 55b83c9

Browse files
authored
Merge pull request kubernetes#128062 from aramase/aramase/i/cred_provider_config_typos
credential provider config: detect typos
2 parents 510a7e7 + 1882a4a commit 55b83c9

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

pkg/credentialprovider/plugin/config_test.go

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func Test_readCredentialProviderConfigFile(t *testing.T) {
3333
name string
3434
configData string
3535
config *kubeletconfig.CredentialProviderConfig
36-
expectErr bool
36+
expectErr string
3737
}{
3838
{
3939
name: "config with 1 plugin and 1 image matcher",
@@ -293,7 +293,7 @@ providers:
293293
- name: FOO
294294
value: BAR`,
295295
config: nil,
296-
expectErr: true,
296+
expectErr: `no kind "WrongKind" is registered for version "kubelet.config.k8s.io/v1alpha1"`,
297297
},
298298
{
299299
name: "config with wrong apiversion",
@@ -312,7 +312,27 @@ providers:
312312
- name: FOO
313313
value: BAR`,
314314
config: nil,
315-
expectErr: true,
315+
expectErr: `no kind "CredentialProviderConfig" is registered for version "foobar/v1alpha1`,
316+
},
317+
{
318+
name: "config with invalid typo",
319+
configData: `---
320+
kind: CredentialProviderConfig
321+
apiVersion: kubelet.config.k8s.io/v1
322+
providers:
323+
- name: test
324+
matchImages:
325+
- "registry.io/foobar"
326+
defaultCacheDuration: 10m
327+
unknownField: should not be here # this field should not be here
328+
apiVersion: credentialprovider.kubelet.k8s.io/v1alpha1
329+
args:
330+
- --v=5
331+
env:
332+
- name: FOO
333+
value: BAR`,
334+
config: nil,
335+
expectErr: `strict decoding error: unknown field "providers[0].unknownField"`,
316336
},
317337
}
318338

@@ -330,12 +350,12 @@ providers:
330350
}
331351

332352
authConfig, err := readCredentialProviderConfigFile(file.Name())
333-
if err != nil && !testcase.expectErr {
353+
if err != nil && len(testcase.expectErr) == 0 {
334354
t.Fatal(err)
335355
}
336356

337-
if err == nil && testcase.expectErr {
338-
t.Error("expected error but got none")
357+
if err == nil && len(testcase.expectErr) > 0 {
358+
t.Fatalf("expected error %q but got none", testcase.expectErr)
339359
}
340360

341361
if !reflect.DeepEqual(authConfig, testcase.config) {
@@ -521,7 +541,6 @@ func Test_validateCredentialProviderConfig(t *testing.T) {
521541
t.Errorf("expected error but got none")
522542
} else if !testcase.shouldErr && len(errs) > 0 {
523543
t.Errorf("expected no error but received errors: %v", errs.ToAggregate())
524-
525544
}
526545
})
527546
}

pkg/credentialprovider/plugin/plugin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const (
5656

5757
var (
5858
scheme = runtime.NewScheme()
59-
codecs = serializer.NewCodecFactory(scheme)
59+
codecs = serializer.NewCodecFactory(scheme, serializer.EnableStrict)
6060

6161
apiVersions = map[string]schema.GroupVersion{
6262
credentialproviderv1alpha1.SchemeGroupVersion.String(): credentialproviderv1alpha1.SchemeGroupVersion,

0 commit comments

Comments
 (0)