...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package kivikd
16
17 import (
18 "testing"
19
20 "github.com/go-kivik/kivik/v4/x/kivikd/authdb"
21 )
22
23 type validateTest struct {
24 Name string
25 Cookie string
26 User *authdb.UserContext
27 Valid bool
28 Err string
29 }
30
31 func TestValidateCookie(t *testing.T) {
32 s := &Service{}
33 if err := s.loadConf(); err != nil {
34 t.Fatal(err)
35 }
36 tests := []validateTest{
37 {
38 Name: "Valid", Cookie: "YWRtaW46NThDNTQzN0Y6OnE2cBAuoQKvVBHF2l4PIqKHqDM", Valid: true,
39 User: &authdb.UserContext{Name: "admin", Salt: "foo bar baz"},
40 },
41 {
42 Name: "WrongSalt", Cookie: "YWRtaW46NThDNTQzN0Y697rnaWCa_rarAm25wbOg3Gm3mqc", Valid: false,
43 User: &authdb.UserContext{Name: "admin", Salt: "123"},
44 },
45 }
46 for _, test := range tests {
47 func(test validateTest) {
48 t.Run(test.Name, func(t *testing.T) {
49 valid, err := s.ValidateCookie(test.User, test.Cookie)
50 var errMsg string
51 if err != nil {
52 errMsg = err.Error()
53 }
54 if errMsg != test.Err {
55 t.Errorf("Unexpected error.\nExpected: %s\n Actual: %s\n", test.Err, errMsg)
56 }
57 if valid != test.Valid {
58 t.Errorf("Unexpected result. Expected %t, Actual %t", test.Valid, valid)
59 }
60 })
61 }(test)
62 }
63 }
64
65 type tokenTest struct {
66 Name string
67 Salt string
68 Created int64
69 Expected string
70 Err string
71 }
72
73 func TestCreateAuthToken(t *testing.T) {
74 s := &Service{}
75 if err := s.loadConf(); err != nil {
76 t.Fatal(err)
77 }
78 tests := []tokenTest{
79 {Name: "admin", Salt: "foo bar baz", Created: 1489322879, Expected: "YWRtaW46NThDNTQzN0Y6OnE2cBAuoQKvVBHF2l4PIqKHqDM"},
80 {Name: "bob", Salt: "0123456789abc", Created: 1489322879, Expected: "Ym9iOjU4QzU0MzdGOihHwWRLS2vekOgsRrH1cEVrk6za"},
81 }
82
83 for _, test := range tests {
84 func(test tokenTest) {
85 t.Run(test.Name, func(t *testing.T) {
86 result, err := s.CreateAuthToken(test.Name, test.Salt, test.Created)
87 var errMsg string
88 if err != nil {
89 errMsg = err.Error()
90 }
91 if errMsg != test.Err {
92 t.Errorf("Unexpected error. Expected '%s', got '%s'", test.Err, errMsg)
93 }
94 if result != test.Expected {
95 t.Errorf("Expected: %s\n Actual: %s\n", test.Expected, result)
96 }
97 })
98 }(test)
99 }
100 }
101
View as plain text