1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
package keyline
import (
"testing"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/config"
)
func TestFailingNewPublicKeyLine(t *testing.T) {
testCases := []struct {
desc string
id string
publicKey string
expectedError string
}{
{
desc: "When Id has non-alphanumeric and non-dash characters in it",
id: "key\n1",
publicKey: "public-key",
expectedError: "Invalid key_id: key\n1",
},
{
desc: "When public key has newline in it",
id: "key",
publicKey: "public\nkey",
expectedError: "Invalid value: public\nkey",
},
}
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
result, err := NewPublicKeyLine(tc.id, tc.publicKey, &config.Config{RootDir: "/tmp", SslCertDir: "/tmp/certs"})
require.Empty(t, result)
require.EqualError(t, err, tc.expectedError)
})
}
}
func TestFailingNewPrincipalKeyLine(t *testing.T) {
testCases := []struct {
desc string
keyId string
principal string
expectedError string
}{
{
desc: "When username has non-alphanumeric and non-dash characters in it",
keyId: "username\n1",
principal: "principal",
expectedError: "Invalid key_id: username\n1",
},
{
desc: "When principal has newline in it",
keyId: "username",
principal: "principal\n1",
expectedError: "Invalid value: principal\n1",
},
}
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
result, err := NewPrincipalKeyLine(tc.keyId, tc.principal, &config.Config{RootDir: "/tmp", SslCertDir: "/tmp/certs"})
require.Empty(t, result)
require.EqualError(t, err, tc.expectedError)
})
}
}
func TestToString(t *testing.T) {
keyLine := &KeyLine{
Id: "1",
Value: "public-key",
Prefix: "key",
Config: &config.Config{RootDir: "/tmp"},
}
result := keyLine.ToString()
require.Equal(t, `command="/tmp/bin/gitlab-shell key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty public-key`, result)
}
|