Allow client push to use insecure credential pattern
This commit is contained in:
parent
75712de712
commit
7affcadb5e
6 changed files with 14 additions and 61 deletions
|
|
@ -612,13 +612,8 @@ func (c *Client) Pull(ctx context.Context, remote, branch string, mods ...Comman
|
|||
}
|
||||
|
||||
func (c *Client) Push(ctx context.Context, remote string, ref string, mods ...CommandModifier) error {
|
||||
host, err := c.CredentialPatternFromRemote(ctx, remote)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
args := []string{"push", "--set-upstream", remote, ref}
|
||||
cmd, err := c.AuthenticatedCommand(ctx, host, args...)
|
||||
cmd, err := c.AuthenticatedCommand(ctx, InsecureAllMatchingCredentialsPattern, args...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1082,13 +1082,13 @@ func TestClientUnsetRemoteResolution(t *testing.T) {
|
|||
name: "unset remote resolution",
|
||||
wantCmdArgs: `path/to/git config --unset remote.origin.gh-resolved`,
|
||||
},
|
||||
// {
|
||||
// name: "git error",
|
||||
// cmdExitStatus: 1,
|
||||
// cmdStderr: "git error message",
|
||||
// wantCmdArgs: `path/to/git config --unset remote.origin.gh-resolved`,
|
||||
// wantErrorMsg: "failed to run git: git error message",
|
||||
// },
|
||||
{
|
||||
name: "git error",
|
||||
cmdExitStatus: 1,
|
||||
cmdStderr: "git error message",
|
||||
wantCmdArgs: `path/to/git config --unset remote.origin.gh-resolved`,
|
||||
wantErrorMsg: "failed to run git: git error message",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
|
@ -1285,11 +1285,7 @@ func TestClientPush(t *testing.T) {
|
|||
{
|
||||
name: "push",
|
||||
commands: map[args]commandResult{
|
||||
`path/to/git remote get-url origin`: {
|
||||
ExitStatus: 0,
|
||||
Stdout: "https://github.com/cli/nonexistent.git",
|
||||
},
|
||||
`path/to/git -c credential.https://github.com.helper= -c credential.https://github.com.helper=!"gh" auth git-credential push --set-upstream origin trunk`: {
|
||||
`path/to/git -c credential.helper= -c credential.helper=!"gh" auth git-credential push --set-upstream origin trunk`: {
|
||||
ExitStatus: 0,
|
||||
},
|
||||
},
|
||||
|
|
@ -1298,38 +1294,20 @@ func TestClientPush(t *testing.T) {
|
|||
name: "accepts command modifiers",
|
||||
mods: []CommandModifier{WithRepoDir("/path/to/repo")},
|
||||
commands: map[args]commandResult{
|
||||
`path/to/git remote get-url origin`: {
|
||||
ExitStatus: 0,
|
||||
Stdout: "https://github.com/cli/nonexistent.git",
|
||||
},
|
||||
`path/to/git -C /path/to/repo -c credential.https://github.com.helper= -c credential.https://github.com.helper=!"gh" auth git-credential push --set-upstream origin trunk`: {
|
||||
`path/to/git -C /path/to/repo -c credential.helper= -c credential.helper=!"gh" auth git-credential push --set-upstream origin trunk`: {
|
||||
ExitStatus: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "git error on get-url",
|
||||
name: "git error on push",
|
||||
commands: map[args]commandResult{
|
||||
`path/to/git remote get-url origin`: {
|
||||
ExitStatus: 1,
|
||||
Stderr: "get-url error message",
|
||||
},
|
||||
},
|
||||
wantErrorMsg: "failed to run git: get-url error message",
|
||||
},
|
||||
{
|
||||
name: "git error on fetch",
|
||||
commands: map[args]commandResult{
|
||||
`path/to/git remote get-url origin`: {
|
||||
ExitStatus: 0,
|
||||
Stdout: "https://github.com/cli/nonexistent.git",
|
||||
},
|
||||
`path/to/git -c credential.https://github.com.helper= -c credential.https://github.com.helper=!"gh" auth git-credential push --set-upstream origin trunk`: {
|
||||
`path/to/git -c credential.helper= -c credential.helper=!"gh" auth git-credential push --set-upstream origin trunk`: {
|
||||
ExitStatus: 1,
|
||||
Stderr: "push error message",
|
||||
},
|
||||
},
|
||||
wantErrorMsg: "failed to run git: fetch error message",
|
||||
wantErrorMsg: "failed to run git: push error message",
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,9 +98,3 @@ func WithRepoDir(repoDir string) CommandModifier {
|
|||
gc.setRepoDir(repoDir)
|
||||
}
|
||||
}
|
||||
|
||||
func WithExtraArgs(args ...string) CommandModifier {
|
||||
return func(gc *Command) {
|
||||
gc.Args = append(gc.Args, args...)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -628,7 +628,6 @@ func Test_createRun(t *testing.T) {
|
|||
cmdStubs: func(cs *run.CommandStubber) {
|
||||
cs.Register(`git config --get-regexp.+branch\\\.feature\\\.`, 0, "")
|
||||
cs.Register(`git show-ref --verify -- HEAD refs/remotes/origin/feature`, 0, "")
|
||||
cs.Register(`git remote get-url origin`, 0, "https://github.com/OWNER/REPO.git")
|
||||
cs.Register(`git push --set-upstream origin HEAD:refs/heads/feature`, 0, "")
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
|
|
@ -693,7 +692,6 @@ func Test_createRun(t *testing.T) {
|
|||
cmdStubs: func(cs *run.CommandStubber) {
|
||||
cs.Register(`git config --get-regexp.+branch\\\.feature\\\.`, 0, "")
|
||||
cs.Register(`git show-ref --verify -- HEAD refs/remotes/origin/feature`, 0, "")
|
||||
cs.Register(`git remote get-url origin`, 0, "https://github.com/OWNER/REPO.git")
|
||||
cs.Register(`git push --set-upstream origin HEAD:refs/heads/feature`, 0, "")
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
|
|
@ -741,7 +739,6 @@ func Test_createRun(t *testing.T) {
|
|||
cmdStubs: func(cs *run.CommandStubber) {
|
||||
cs.Register(`git config --get-regexp.+branch\\\.feature\\\.`, 0, "")
|
||||
cs.Register(`git show-ref --verify -- HEAD refs/remotes/origin/feature`, 0, "")
|
||||
cs.Register(`git remote get-url origin`, 0, "https://github.com/OWNER/REPO.git")
|
||||
cs.Register(`git push --set-upstream origin HEAD:refs/heads/feature`, 0, "")
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
|
|
@ -794,7 +791,6 @@ func Test_createRun(t *testing.T) {
|
|||
cs.Register(`git show-ref --verify -- HEAD refs/remotes/origin/feature`, 0, "")
|
||||
cs.Register("git remote rename origin upstream", 0, "")
|
||||
cs.Register(`git remote add origin https://github.com/monalisa/REPO.git`, 0, "")
|
||||
cs.Register(`git remote get-url origin`, 0, "https://github.com/OWNER/REPO.git")
|
||||
cs.Register(`git push --set-upstream origin HEAD:refs/heads/feature`, 0, "")
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
|
|
@ -1073,7 +1069,6 @@ func Test_createRun(t *testing.T) {
|
|||
cs.Register(`git config --get-regexp.+branch\\\.feature\\\.`, 0, "")
|
||||
cs.Register(`git show-ref --verify -- HEAD refs/remotes/origin/feature`, 0, "")
|
||||
cs.Register(`git( .+)? log( .+)? origin/master\.\.\.feature`, 0, "")
|
||||
cs.Register(`git remote get-url origin`, 0, "https://github.com/OWNER/REPO.git")
|
||||
cs.Register(`git push --set-upstream origin HEAD:refs/heads/feature`, 0, "")
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
|
|
@ -1107,7 +1102,6 @@ func Test_createRun(t *testing.T) {
|
|||
cs.Register(`git config --get-regexp.+branch\\\.feature\\\.`, 0, "")
|
||||
cs.Register(`git show-ref --verify -- HEAD refs/remotes/origin/feature`, 0, "")
|
||||
cs.Register(`git( .+)? log( .+)? origin/master\.\.\.feature`, 0, "")
|
||||
cs.Register(`git remote get-url origin`, 0, "https://github.com/OWNER/REPO.git")
|
||||
cs.Register(`git push --set-upstream origin HEAD:refs/heads/feature`, 0, "")
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
|
|
|
|||
|
|
@ -676,12 +676,7 @@ func createFromLocal(opts *CreateOptions) error {
|
|||
}
|
||||
|
||||
if opts.Push && repoType == bare {
|
||||
// WM-TODO: can we collapse this into opts.GitClient.Push?
|
||||
credentialPattern, err := opts.GitClient.CredentialPatternFromRemote(context.Background(), baseRemote)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cmd, err := opts.GitClient.AuthenticatedCommand(context.Background(), credentialPattern, "push", baseRemote, "--mirror")
|
||||
cmd, err := opts.GitClient.AuthenticatedCommand(context.Background(), git.InsecureAllMatchingCredentialsPattern, "push", baseRemote, "--mirror")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -507,7 +507,6 @@ func Test_createRun(t *testing.T) {
|
|||
cs.Register(`git -C . rev-parse --git-dir`, 0, ".")
|
||||
cs.Register(`git -C . rev-parse HEAD`, 0, "commithash")
|
||||
cs.Register(`git -C . remote add origin https://github.com/OWNER/REPO`, 0, "")
|
||||
cs.Register(`git -C . remote get-url origin`, 0, "https://github.com/OWNER/REPO")
|
||||
cs.Register(`git -C . push origin --mirror`, 0, "")
|
||||
},
|
||||
wantStdout: "✓ Created repository OWNER/REPO on GitHub\n https://github.com/OWNER/REPO\n✓ Added remote https://github.com/OWNER/REPO.git\n✓ Mirrored all refs to https://github.com/OWNER/REPO.git\n",
|
||||
|
|
@ -576,7 +575,6 @@ func Test_createRun(t *testing.T) {
|
|||
cs.Register(`git -C . rev-parse --git-dir`, 0, ".git")
|
||||
cs.Register(`git -C . rev-parse HEAD`, 0, "commithash")
|
||||
cs.Register(`git -C . remote add origin https://github.com/OWNER/REPO`, 0, "")
|
||||
cs.Register(`git -C . remote get-url origin`, 0, "https://github.com/OWNER/REPO")
|
||||
cs.Register(`git -C . push --set-upstream origin HEAD`, 0, "")
|
||||
},
|
||||
wantStdout: "✓ Created repository OWNER/REPO on GitHub\n https://github.com/OWNER/REPO\n✓ Added remote https://github.com/OWNER/REPO.git\n✓ Pushed commits to https://github.com/OWNER/REPO.git\n",
|
||||
|
|
@ -797,7 +795,6 @@ func Test_createRun(t *testing.T) {
|
|||
cs.Register(`git -C . rev-parse --git-dir`, 0, ".")
|
||||
cs.Register(`git -C . rev-parse HEAD`, 0, "commithash")
|
||||
cs.Register(`git -C . remote add origin https://github.com/OWNER/REPO`, 0, "")
|
||||
cs.Register(`git -C . remote get-url origin`, 0, "https://github.com/OWNER/REPO")
|
||||
cs.Register(`git -C . push origin --mirror`, 0, "")
|
||||
},
|
||||
wantStdout: "https://github.com/OWNER/REPO\n",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue