From a1ac30db40c510d15913f8eb542a3c42501397cf Mon Sep 17 00:00:00 2001 From: Prasad Katti Date: Sun, 24 May 2020 00:09:12 -0700 Subject: [PATCH 1/2] Add a kubeadm ValidateNodeRegistrationOptions test --- cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go b/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go index a686f9a0823..39f73f3c571 100644 --- a/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go +++ b/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go @@ -111,6 +111,7 @@ func TestValidateNodeRegistrationOptions(t *testing.T) { {"valid-nodename", kubeadmapiv1beta2.DefaultUrlScheme + "://" + "/some/path", false}, // supported, with socket url {"valid-nodename", "bla:///some/path", true}, // unsupported url scheme {"valid-nodename", ":::", true}, // unparseable url + {"valid-nodename", "", true}, // invalid CRISocket (path is not absolute) } for _, rt := range tests { nro := kubeadm.NodeRegistrationOptions{Name: rt.nodeName, CRISocket: rt.criSocket} From b5c08caa34778ef7ad5b3614416cde9b8b919b5b Mon Sep 17 00:00:00 2001 From: Prasad Katti Date: Sun, 24 May 2020 16:49:35 -0700 Subject: [PATCH 2/2] Add tests for ValidateSocketPath --- .../kubeadm/validation/validation_test.go | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go b/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go index 39f73f3c571..e7a23638ef6 100644 --- a/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go +++ b/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go @@ -99,22 +99,17 @@ func TestValidateTokenGroups(t *testing.T) { func TestValidateNodeRegistrationOptions(t *testing.T) { var tests = []struct { nodeName string - criSocket string expectedErrors bool }{ - {"", "/some/path", true}, // node name can't be empty - {"INVALID-NODENAME", "/some/path", true}, // Upper cases is invalid - {"invalid-nodename-", "/some/path", true}, // Can't have trailing dashes - {"invalid-node?name", "/some/path", true}, // Unsupported characters - {"valid-nodename", "/some/path", false}, // supported - {"valid-nodename-with-numbers01234", "/some/path/with/numbers/01234/", false}, // supported, with numbers as well - {"valid-nodename", kubeadmapiv1beta2.DefaultUrlScheme + "://" + "/some/path", false}, // supported, with socket url - {"valid-nodename", "bla:///some/path", true}, // unsupported url scheme - {"valid-nodename", ":::", true}, // unparseable url - {"valid-nodename", "", true}, // invalid CRISocket (path is not absolute) + {"", true}, // node name can't be empty + {"INVALID-NODENAME", true}, // Upper cases is invalid + {"invalid-nodename-", true}, // Can't have trailing dashes + {"invalid-node?name", true}, // Unsupported characters + {"valid-nodename", false}, // supported + // test cases for criSocket are covered in TestValidateSocketPath } for _, rt := range tests { - nro := kubeadm.NodeRegistrationOptions{Name: rt.nodeName, CRISocket: rt.criSocket} + nro := kubeadm.NodeRegistrationOptions{Name: rt.nodeName, CRISocket: "/some/path"} actual := ValidateNodeRegistrationOptions(&nro, field.NewPath("nodeRegistration")) actualErrors := len(actual) > 0 if actualErrors != rt.expectedErrors { @@ -897,3 +892,25 @@ func TestValidateDiscoveryKubeConfigPath(t *testing.T) { } } } + +func TestValidateSocketPath(t *testing.T) { + var tests = []struct { + name string + criSocket string + expectedErrors bool + }{ + {name: "valid path", criSocket: "/some/path", expectedErrors: false}, + {name: "valid socket url", criSocket: kubeadmapiv1beta2.DefaultUrlScheme + "://" + "/some/path", expectedErrors: false}, + {name: "unsupported url scheme", criSocket: "bla:///some/path", expectedErrors: true}, + {name: "unparseable url", criSocket: ":::", expectedErrors: true}, + {name: "invalid CRISocket (path is not absolute)", criSocket: "some/path", expectedErrors: true}, + {name: "empty CRISocket (path is not absolute)", criSocket: "", expectedErrors: true}, + } + for _, tc := range tests { + actual := ValidateSocketPath(tc.criSocket, field.NewPath("criSocket")) + actualErrors := len(actual) > 0 + if actualErrors != tc.expectedErrors { + t.Errorf("error: socket path: %q\n\texpected: %t\n\t actual: %t", tc.criSocket, tc.expectedErrors, actualErrors) + } + } +}