package secrets
import (
"testing"
"k8s.io/kubernetes/pkg/api"
)
func TestValidateBasicAuth(t *testing.T) {
tests := []struct {
testName string
args []string
params CreateBasicAuthSecretOptions
expErr bool
}{
{
testName: "validArgs",
args: []string{"testSecret"},
params: CreateBasicAuthSecretOptions{
Username: "testUser",
Password: "testPassword",
},
expErr: false,
},
{
testName: "validArgsWithCertificate",
args: []string{"testSecret"},
params: CreateBasicAuthSecretOptions{
Username: "testUser",
Password: "testPassword",
CertificatePath: "./bsFixtures/valid/ca.crt",
},
expErr: false,
},
{
testName: "validArgsWithGitconfig",
args: []string{"testSecret"},
params: CreateBasicAuthSecretOptions{
Username: "testUser",
Password: "testPassword",
GitConfigPath: "./bsFixtures/leadingdot/.gitconfig",
},
expErr: false,
},
{
testName: "noName",
args: []string{},
params: CreateBasicAuthSecretOptions{
Username: "testUser",
Password: "testPassword",
},
expErr: true, //"Must have exactly one argument: secret name"
},
{
testName: "noParams",
args: []string{"testSecret"},
params: CreateBasicAuthSecretOptions{},
expErr: true, //"Must provide basic authentication credentials"
},
{
testName: "passwordAndPrompt",
args: []string{"testSecret"},
params: CreateBasicAuthSecretOptions{
Username: "testUser",
Password: "testPassword",
PromptForPassword: true,
},
expErr: true, //"Must provide either --prompt or --password flag"
},
}
for _, test := range tests {
options := test.params
err := options.Complete(nil, test.args)
if err == nil {
err = options.Validate()
}
if test.expErr {
if err == nil {
t.Errorf("%s: unexpected error: %v", test.testName, err)
}
continue
}
if err != nil {
t.Errorf("%s: unexpected error: %v", test.testName, err)
}
secret, err := options.NewBasicAuthSecret()
if err != nil {
t.Errorf("%s: unexpected error: %v", test.testName, err)
}
if secret.Type != api.SecretTypeBasicAuth {
t.Errorf("%s: unexpected secret.Type: %v", test.testName, secret.Type)
}
}
}