diff options
Diffstat (limited to 'internal/sshenv/sshenv_test.go')
-rw-r--r-- | internal/sshenv/sshenv_test.go | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/internal/sshenv/sshenv_test.go b/internal/sshenv/sshenv_test.go index e4a640e..43d060a 100644 --- a/internal/sshenv/sshenv_test.go +++ b/internal/sshenv/sshenv_test.go @@ -7,14 +7,47 @@ import ( "gitlab.com/gitlab-org/gitlab-shell/internal/testhelper" ) -func TestLocalAddr(t *testing.T) { - cleanup, err := testhelper.Setenv("SSH_CONNECTION", "127.0.0.1 0") +func TestNewFromEnv(t *testing.T) { + tests := []struct { + desc string + environment map[string]string + want Env + }{ + { + desc: "It parses GIT_PROTOCOL", + environment: map[string]string{GitProtocolEnv: "2"}, + want: Env{GitProtocolVersion: "2"}, + }, + { + desc: "It parses SSH_CONNECTION", + environment: map[string]string{SSHConnectionEnv: "127.0.0.1 0 127.0.0.2 65535"}, + want: Env{IsSSHConnection: true, RemoteAddr: "127.0.0.1"}, + }, + { + desc: "It parses SSH_ORIGINAL_COMMAND", + environment: map[string]string{SSHOriginalCommandEnv: "git-receive-pack"}, + want: Env{OriginalCommand: "git-receive-pack"}, + }, + } + + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + restoreEnv := testhelper.TempEnv(tc.environment) + defer restoreEnv() + + require.Equal(t, NewFromEnv(), tc.want) + }) + } +} + +func TestRemoteAddrFromEnv(t *testing.T) { + cleanup, err := testhelper.Setenv(SSHConnectionEnv, "127.0.0.1 0") require.NoError(t, err) defer cleanup() - require.Equal(t, LocalAddr(), "127.0.0.1") + require.Equal(t, remoteAddrFromEnv(), "127.0.0.1") } -func TestEmptyLocalAddr(t *testing.T) { - require.Equal(t, LocalAddr(), "") +func TestEmptyRemoteAddrFromEnv(t *testing.T) { + require.Equal(t, remoteAddrFromEnv(), "") } |