diff --git a/cmd/flux/create_secret_git.go b/cmd/flux/create_secret_git.go index 9865cbc9..f10070bb 100644 --- a/cmd/flux/create_secret_git.go +++ b/cmd/flux/create_secret_git.go @@ -153,13 +153,13 @@ func createSecretGitCmdRun(cmd *cobra.Command, args []string) error { opts.ECDSACurve = secretGitArgs.ecdsaCurve.Curve opts.Password = secretGitArgs.password case "http", "https": - if (secretGitArgs.username == "" || secretGitArgs.password == "") && secretGitArgs.bearerToken == "" { + if secretGitArgs.password == "" && secretGitArgs.bearerToken == "" { return fmt.Errorf("for Git over HTTP/S the username and password, or a bearer token is required") } opts.Username = secretGitArgs.username opts.Password = secretGitArgs.password opts.BearerToken = secretGitArgs.bearerToken - if secretGitArgs.username != "" && secretGitArgs.password != "" && secretGitArgs.bearerToken != "" { + if secretGitArgs.password != "" && secretGitArgs.bearerToken != "" { return fmt.Errorf("user credentials and bearer token cannot be used together") } diff --git a/cmd/flux/create_secret_git_test.go b/cmd/flux/create_secret_git_test.go index d4c84d0d..1d4b7937 100644 --- a/cmd/flux/create_secret_git_test.go +++ b/cmd/flux/create_secret_git_test.go @@ -56,6 +56,11 @@ func TestCreateGitSecret(t *testing.T) { args: "create secret git podinfo-auth --url=https://github.com/stefanprodan/podinfo --username=aaa --password=zzzz --bearer-token=aaaa --namespace=my-namespace --export", assert: assertError("user credentials and bearer token cannot be used together"), }, + { + name: "git authentication with basic auth consisting of only one password without a username", + args: "create secret git podinfo-auth --url=https://github.com/stefanprodan/podinfo --password=my-password --namespace=my-namespace --export", + assert: assertGoldenFile("./testdata/create_secret/git/secret-git-only-pwd.yaml"), + }, } for _, tt := range tests { diff --git a/cmd/flux/testdata/create_secret/git/secret-git-only-pwd.yaml b/cmd/flux/testdata/create_secret/git/secret-git-only-pwd.yaml new file mode 100644 index 00000000..ca31ec03 --- /dev/null +++ b/cmd/flux/testdata/create_secret/git/secret-git-only-pwd.yaml @@ -0,0 +1,9 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: podinfo-auth + namespace: my-namespace +stringData: + password: my-password + diff --git a/pkg/manifestgen/sourcesecret/sourcesecret.go b/pkg/manifestgen/sourcesecret/sourcesecret.go index f468fa72..7093ed81 100644 --- a/pkg/manifestgen/sourcesecret/sourcesecret.go +++ b/pkg/manifestgen/sourcesecret/sourcesecret.go @@ -148,8 +148,10 @@ func buildSecret(keypair *ssh.KeyPair, hostKey, dockerCfg []byte, options Option return } - if options.Username != "" && options.Password != "" { - secret.StringData[UsernameSecretKey] = options.Username + if options.Password != "" { + if options.Username != "" { + secret.StringData[UsernameSecretKey] = options.Username + } secret.StringData[PasswordSecretKey] = options.Password } if options.BearerToken != "" {