-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpam_test.go
66 lines (61 loc) · 1.84 KB
/
pam_test.go
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
package main
import (
"os"
"testing"
)
func TestNewPAMEventVariousEnvValues(t *testing.T) {
valSessionType := "foo"
valUsername := "bar"
valHost := "baz"
valEmpty := ""
cases := []struct {
name string
sessionType *string // allow nil testing
username *string // allow nil testing
host *string // allow nil testing
expectedSessionType string
expectedUsername string
expectedHost string
}{
{ "subtest1", &valSessionType, &valUsername, &valHost, "foo", "bar", "baz" },
{ "subtest2", &valEmpty, &valUsername, &valHost, "", "bar", "baz" },
{ "subtest3", &valSessionType, &valEmpty, &valHost, "foo", "", "baz" },
{ "subtest4", &valSessionType, &valUsername, &valEmpty, "foo", "bar", "" },
{ "subtest5", nil, &valUsername, &valHost, "", "bar", "baz" },
{ "subtest6", &valSessionType, nil, &valHost, "foo", "", "baz" },
{ "subtest7", &valSessionType, &valUsername, nil, "foo", "bar", "" },
{ "subtest7", nil, nil, nil, "", "", "" },
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
defer clearEnv()
if tc.sessionType != nil {
os.Setenv("PAM_TYPE", *tc.sessionType)
}
if tc.username != nil {
os.Setenv("PAM_USER", *tc.username)
}
if tc.host != nil {
os.Setenv("PAM_RHOST", *tc.host)
}
p := NewPAMEvent()
if p.SessionType != tc.expectedSessionType {
t.Errorf("%s: expected %s but got %s", tc.name, tc.expectedSessionType, p.SessionType)
}
if p.Username != tc.expectedUsername {
t.Errorf("%s: expected %s but got %s", tc.name, tc.expectedUsername, p.Username)
}
if p.RemoteHost != tc.expectedHost {
t.Errorf("%s: expected %s but got %s", tc.name, tc.expectedHost, p.RemoteHost)
}
})
}
}
/*
* Env vars are persistent between tests so this helper resets it.
*/
func clearEnv() {
os.Unsetenv("PAM_TYPE")
os.Unsetenv("PAM_USER")
os.Unsetenv("PAM_RHOST")
}