summaryrefslogtreecommitdiff
path: root/internal/sshenv/sshenv_test.go
diff options
context:
space:
mode:
authorLucas Charles <me@lucascharles.me>2021-02-17 13:49:46 -0800
committerLucas Charles <me@lucascharles.me>2021-03-15 13:47:11 -0700
commitd539068dc372e46d10adee89e9b96b59156a2bb6 (patch)
tree9c37f5ade4a95622b30a7a47befcb46b185b9682 /internal/sshenv/sshenv_test.go
parente79f115d93a9f00f3e4f8a22ec770fdf4c3e1947 (diff)
downloadgitlab-shell-d539068dc372e46d10adee89e9b96b59156a2bb6.tar.gz
chore: Refactor env introspection to rely on command initialization496-move-env-introspection-to-sshenv
Refactors introspection of execution environment to rely on per-connection state (`gitlab-shell`) or per request (`gitlab-sshd`) Relates to https://gitlab.com/gitlab-org/gitlab-shell/-/issues/496
Diffstat (limited to 'internal/sshenv/sshenv_test.go')
-rw-r--r--internal/sshenv/sshenv_test.go43
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(), "")
}