From e53e4753759bfa3d727641910c315413cfa8aa6b Mon Sep 17 00:00:00 2001 From: Anand Francis Joseph Date: Sun, 29 Oct 2023 23:20:00 +0530 Subject: [PATCH] Fixed failing unit tests related to git creds Signed-off-by: Anand Francis Joseph --- util/git/creds.go | 6 ++++-- util/git/creds_test.go | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/util/git/creds.go b/util/git/creds.go index c5839dfe8a1930..704036e02b02f3 100644 --- a/util/git/creds.go +++ b/util/git/creds.go @@ -306,6 +306,7 @@ func (c SSHCreds) Environ() (io.Closer, []string, error) { args = append(args, "-o", "StrictHostKeyChecking=yes", "-o", fmt.Sprintf("UserKnownHostsFile=%s", knownHostsFile)) } // Handle SSH socks5 proxy settings + proxyEnv := []string{} if c.proxy != "" { parsedProxyURL, err := url.Parse(c.proxy) if err != nil { @@ -316,13 +317,14 @@ func (c SSHCreds) Environ() (io.Closer, []string, error) { parsedProxyURL.Hostname(), parsedProxyURL.Port())) if parsedProxyURL.User != nil { - env = append(env, fmt.Sprintf("SOCKS5_USER=%s", parsedProxyURL.User.Username())) + proxyEnv = append(proxyEnv, fmt.Sprintf("SOCKS5_USER=%s", parsedProxyURL.User.Username())) if socks5_passwd, isPasswdSet := parsedProxyURL.User.Password(); isPasswdSet { - env = append(env, fmt.Sprintf("SOCKS5_PASSWD=%s", socks5_passwd)) + proxyEnv = append(proxyEnv, fmt.Sprintf("SOCKS5_PASSWD=%s", socks5_passwd)) } } } env = append(env, []string{fmt.Sprintf("GIT_SSH_COMMAND=%s", strings.Join(args, " "))}...) + env = append(env, proxyEnv...) return sshPrivateKeyFile(file.Name()), env, nil } diff --git a/util/git/creds_test.go b/util/git/creds_test.go index 0ddf2b6910e963..23a705ed335745 100644 --- a/util/git/creds_test.go +++ b/util/git/creds_test.go @@ -255,7 +255,7 @@ func Test_SSHCreds_Environ_WithProxy(t *testing.T) { hostsPath := cert.GetSSHKnownHostsDataPath() assert.Contains(t, env[1], fmt.Sprintf("-o UserKnownHostsFile=%s", hostsPath)) } - assert.Contains(t, env[1], "-o ProxyCommand='ncat --proxy-type socks5 --proxy 127.0.0.1:1080 --proxy-auth '' %h %p'") + assert.Contains(t, env[1], "-o ProxyCommand='connect-proxy -S 127.0.0.1:1080 -5 %h %p'") envRegex := regexp.MustCompile("-i ([^ ]+)") assert.Regexp(t, envRegex, env[1]) @@ -275,11 +275,13 @@ func Test_SSHCreds_Environ_WithProxyUserNamePassword(t *testing.T) { creds := NewSSHCreds("sshPrivateKey", caFile, insecureIgnoreHostKey, &NoopCredsStore{}, "socks5://user:password@127.0.0.1:1080") closer, env, err := creds.Environ() require.NoError(t, err) - require.Len(t, env, 2) + require.Len(t, env, 4) assert.Equal(t, fmt.Sprintf("GIT_SSL_CAINFO=%s/caFile", tempDir), env[0], "CAINFO env var must be set") assert.True(t, strings.HasPrefix(env[1], "GIT_SSH_COMMAND=")) + assert.Equal(t, "SOCKS5_USER=user", env[2], "SOCKS5 user env var must be set") + assert.Equal(t, "SOCKS5_PASSWD=password", env[3], "SOCKS5 password env var must be set") if insecureIgnoreHostKey { assert.Contains(t, env[1], "-o StrictHostKeyChecking=no") @@ -289,7 +291,7 @@ func Test_SSHCreds_Environ_WithProxyUserNamePassword(t *testing.T) { hostsPath := cert.GetSSHKnownHostsDataPath() assert.Contains(t, env[1], fmt.Sprintf("-o UserKnownHostsFile=%s", hostsPath)) } - assert.Contains(t, env[1], "-o ProxyCommand='ncat --proxy-type socks5 --proxy 127.0.0.1:1080 --proxy-auth 'user:password' %h %p'") + assert.Contains(t, env[1], "-o ProxyCommand='connect-proxy -S 127.0.0.1:1080 -5 %h %p'") envRegex := regexp.MustCompile("-i ([^ ]+)") assert.Regexp(t, envRegex, env[1])