mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Add unit test for secrets flag in config file
This commit is contained in:
parent
6c9558334e
commit
f58cc6c075
@ -9,6 +9,7 @@ load(
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"credentialmanager.go",
|
||||
"nodemanager.go",
|
||||
"vsphere.go",
|
||||
"vsphere_util.go",
|
||||
@ -26,25 +27,36 @@ go_library(
|
||||
"//vendor/github.com/vmware/govmomi/vim25/mo:go_default_library",
|
||||
"//vendor/gopkg.in/gcfg.v1:go_default_library",
|
||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//vendor/k8s.io/client-go/informers:go_default_library",
|
||||
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_test(
|
||||
name = "go_default_test",
|
||||
srcs = ["vsphere_test.go"],
|
||||
srcs = [
|
||||
"credentialmanager_test.go",
|
||||
"vsphere_test.go",
|
||||
],
|
||||
embed = [":go_default_library"],
|
||||
deps = [
|
||||
"//pkg/cloudprovider:go_default_library",
|
||||
"//pkg/cloudprovider/providers/vsphere/vclib:go_default_library",
|
||||
"//pkg/controller:go_default_library",
|
||||
"//vendor/github.com/vmware/govmomi/lookup/simulator:go_default_library",
|
||||
"//vendor/github.com/vmware/govmomi/simulator:go_default_library",
|
||||
"//vendor/github.com/vmware/govmomi/simulator/vpx:go_default_library",
|
||||
"//vendor/github.com/vmware/govmomi/sts/simulator:go_default_library",
|
||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library",
|
||||
"//vendor/k8s.io/client-go/informers:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -352,3 +352,221 @@ func TestVolumes(t *testing.T) {
|
||||
// t.Fatalf("Cannot delete VMDK volume %s: %v", volPath, err)
|
||||
// }
|
||||
}
|
||||
|
||||
func TestSecretVSphereConfig(t *testing.T) {
|
||||
var vs *VSphere
|
||||
var (
|
||||
username = "user"
|
||||
password = "password"
|
||||
)
|
||||
var testcases = []struct {
|
||||
testName string
|
||||
conf string
|
||||
expectedIsSecretProvided bool
|
||||
expectedUsername string
|
||||
expectedPassword string
|
||||
expectedError error
|
||||
}{
|
||||
{
|
||||
testName: "Username and password with old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
user = user
|
||||
password = password
|
||||
datacenter = us-west
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedUsername: username,
|
||||
expectedPassword: password,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "SecretName and SecretNamespace in old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
secret-namespace = "kube-system"
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedIsSecretProvided: true,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "SecretName and SecretNamespace with Username and Password in old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
user = user
|
||||
password = password
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
secret-namespace = "kube-system"
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedIsSecretProvided: true,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "SecretName and SecretNamespace with Username missing in old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
password = password
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
secret-namespace = "kube-system"
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedIsSecretProvided: true,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "SecretNamespace missing with Username and Password in old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
user = user
|
||||
password = password
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedUsername: username,
|
||||
expectedPassword: password,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "SecretNamespace and Username missing in old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
password = password
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedError: ErrUsernameMissing,
|
||||
},
|
||||
{
|
||||
testName: "SecretNamespace and Password missing in old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
user = user
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedError: ErrPasswordMissing,
|
||||
},
|
||||
{
|
||||
testName: "SecretNamespace, Username and Password missing in old configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
working-dir = kubernetes
|
||||
`,
|
||||
expectedError: ErrUsernameMissing,
|
||||
},
|
||||
{
|
||||
testName: "Username and password with new configuration but username and password in global section",
|
||||
conf: `[Global]
|
||||
user = user
|
||||
password = password
|
||||
datacenter = us-west
|
||||
[VirtualCenter "0.0.0.0"]
|
||||
[Workspace]
|
||||
server = 0.0.0.0
|
||||
datacenter = us-west
|
||||
folder = kubernetes
|
||||
`,
|
||||
expectedUsername: username,
|
||||
expectedPassword: password,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "Username and password with new configuration, username and password in virtualcenter section",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
port = 443
|
||||
insecure-flag = true
|
||||
datacenter = us-west
|
||||
[VirtualCenter "0.0.0.0"]
|
||||
user = user
|
||||
password = password
|
||||
[Workspace]
|
||||
server = 0.0.0.0
|
||||
datacenter = us-west
|
||||
folder = kubernetes
|
||||
`,
|
||||
expectedUsername: username,
|
||||
expectedPassword: password,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "SecretName and SecretNamespace with new configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
secret-name = "vccreds"
|
||||
secret-namespace = "kube-system"
|
||||
datacenter = us-west
|
||||
[VirtualCenter "0.0.0.0"]
|
||||
[Workspace]
|
||||
server = 0.0.0.0
|
||||
datacenter = us-west
|
||||
folder = kubernetes
|
||||
`,
|
||||
expectedIsSecretProvided: true,
|
||||
expectedError: nil,
|
||||
},
|
||||
{
|
||||
testName: "SecretName and SecretNamespace with Username missing in new configuration",
|
||||
conf: `[Global]
|
||||
server = 0.0.0.0
|
||||
port = 443
|
||||
insecure-flag = true
|
||||
datacenter = us-west
|
||||
secret-name = "vccreds"
|
||||
secret-namespace = "kube-system"
|
||||
[VirtualCenter "0.0.0.0"]
|
||||
password = password
|
||||
[Workspace]
|
||||
server = 0.0.0.0
|
||||
datacenter = us-west
|
||||
folder = kubernetes
|
||||
`,
|
||||
expectedIsSecretProvided: true,
|
||||
expectedError: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, testcase := range testcases {
|
||||
t.Logf("Executing Testcase: %s", testcase.testName)
|
||||
cfg, err := readConfig(strings.NewReader(testcase.conf))
|
||||
if err != nil {
|
||||
t.Fatalf("Should succeed when a valid config is provided: %s", err)
|
||||
}
|
||||
vs, err = buildVSphereFromConfig(cfg)
|
||||
if err != testcase.expectedError {
|
||||
t.Fatalf("Should succeed when a valid config is provided: %s", err)
|
||||
}
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if vs.isSecretInfoProvided != testcase.expectedIsSecretProvided {
|
||||
t.Fatalf("SecretName and SecretNamespace was expected in config %s. error: %s",
|
||||
testcase.conf, err)
|
||||
}
|
||||
if !testcase.expectedIsSecretProvided {
|
||||
for _, vsInstance := range vs.vsphereInstanceMap {
|
||||
if vsInstance.conn.Username != testcase.expectedUsername {
|
||||
t.Fatalf("Expected username doesn't match actual username in config %s. error: %s",
|
||||
testcase.expectedUsername, vsInstance.conn.Username, testcase.conf, err)
|
||||
}
|
||||
if vsInstance.conn.Password != testcase.expectedPassword {
|
||||
t.Fatalf("Expected password doesn't match actual password in config %s. error: %s",
|
||||
testcase.expectedPassword, vsInstance.conn.Password, testcase.conf, err)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user