diff options
author | Igor Drozdov <idrozdov@gitlab.com> | 2021-09-15 13:28:08 +0300 |
---|---|---|
committer | Igor Drozdov <idrozdov@gitlab.com> | 2021-09-15 13:28:08 +0300 |
commit | c43a36c405086873200559269f13c4428062eded (patch) | |
tree | 5cded0a5da2a68a46f163ac338e46ac3d0db5559 | |
parent | e16dce62a1773eee0e92b1e5b21cce9328c785de (diff) | |
download | gitlab-shell-c43a36c405086873200559269f13c4428062eded.tar.gz |
Unit test sshd.handleEnv function
-rw-r--r-- | internal/sshd/session_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/internal/sshd/session_test.go b/internal/sshd/session_test.go new file mode 100644 index 0000000..152506e --- /dev/null +++ b/internal/sshd/session_test.go @@ -0,0 +1,44 @@ +package sshd + +import ( + "testing" + + "github.com/stretchr/testify/require" + "golang.org/x/crypto/ssh" +) + +func TestHandleEnv(t *testing.T) { + testCases := []struct { + desc string + payload []byte + expectedProtocolVersion string + expectedResult bool + }{ + { + desc: "invalid payload", + payload: []byte("invalid"), + expectedProtocolVersion: "1", + expectedResult: false, + }, { + desc: "valid payload", + payload: ssh.Marshal(envRequest{Name: "GIT_PROTOCOL", Value: "2"}), + expectedProtocolVersion: "2", + expectedResult: true, + }, { + desc: "valid payload with forbidden env var", + payload: ssh.Marshal(envRequest{Name: "GIT_PROTOCOL_ENV", Value: "2"}), + expectedProtocolVersion: "1", + expectedResult: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + s := &session{gitProtocolVersion: "1"} + r := &ssh.Request{Payload: tc.payload} + + require.Equal(t, s.handleEnv(r), tc.expectedResult) + require.Equal(t, s.gitProtocolVersion, tc.expectedProtocolVersion) + }) + } +} |