Skip to content

Commit a6cb593

Browse files
talifeMax Jonas Werner
authored andcommitted
Make username optional for create secret git
Git authentication with basic auth doesn't necessarily require a username to be present. Signed-off-by: talife <[email protected]> Signed-off-by: Max Jonas Werner <[email protected]>
1 parent 525bd21 commit a6cb593

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

cmd/flux/create_secret_git.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,13 @@ func createSecretGitCmdRun(cmd *cobra.Command, args []string) error {
153153
opts.ECDSACurve = secretGitArgs.ecdsaCurve.Curve
154154
opts.Password = secretGitArgs.password
155155
case "http", "https":
156-
if (secretGitArgs.username == "" || secretGitArgs.password == "") && secretGitArgs.bearerToken == "" {
156+
if secretGitArgs.password == "" && secretGitArgs.bearerToken == "" {
157157
return fmt.Errorf("for Git over HTTP/S the username and password, or a bearer token is required")
158158
}
159159
opts.Username = secretGitArgs.username
160160
opts.Password = secretGitArgs.password
161161
opts.BearerToken = secretGitArgs.bearerToken
162-
if secretGitArgs.username != "" && secretGitArgs.password != "" && secretGitArgs.bearerToken != "" {
162+
if secretGitArgs.password != "" && secretGitArgs.bearerToken != "" {
163163
return fmt.Errorf("user credentials and bearer token cannot be used together")
164164
}
165165

cmd/flux/create_secret_git_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ func TestCreateGitSecret(t *testing.T) {
5656
args: "create secret git podinfo-auth --url=https://github.com/stefanprodan/podinfo --username=aaa --password=zzzz --bearer-token=aaaa --namespace=my-namespace --export",
5757
assert: assertError("user credentials and bearer token cannot be used together"),
5858
},
59+
{
60+
name: "git authentication with basic auth consisting of only one password without a username",
61+
args: "create secret git podinfo-auth --url=https://github.com/stefanprodan/podinfo --password=my-password --namespace=my-namespace --export",
62+
assert: assertGoldenFile("./testdata/create_secret/git/secret-git-only-pwd.yaml"),
63+
},
5964
}
6065

6166
for _, tt := range tests {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
apiVersion: v1
3+
kind: Secret
4+
metadata:
5+
name: podinfo-auth
6+
namespace: my-namespace
7+
stringData:
8+
password: my-password
9+

pkg/manifestgen/sourcesecret/sourcesecret.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,10 @@ func buildSecret(keypair *ssh.KeyPair, hostKey, dockerCfg []byte, options Option
148148
return
149149
}
150150

151-
if options.Username != "" && options.Password != "" {
152-
secret.StringData[UsernameSecretKey] = options.Username
151+
if options.Password != "" {
152+
if options.Username != "" {
153+
secret.StringData[UsernameSecretKey] = options.Username
154+
}
153155
secret.StringData[PasswordSecretKey] = options.Password
154156
}
155157
if options.BearerToken != "" {

0 commit comments

Comments
 (0)