-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
caddyfile_test.go
132 lines (125 loc) · 2.54 KB
/
caddyfile_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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package mwcache
import (
"strings"
"testing"
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
)
func TestDirectives(t *testing.T) {
testcases := []struct {
caddyfile string
valid bool
backend string
acl []string
ristretto map[string]string
}{
{
caddyfile: `mwcache`,
valid: true,
backend: "ristretto",
acl: []string{"127.0.0.1"},
ristretto: nil,
},
{
caddyfile: `mwcache foo`,
valid: false,
backend: "",
acl: nil,
ristretto: nil,
},
{
caddyfile: `
mwcache {
purge_acl 11.11.11.11
}
`,
valid: true,
backend: "ristretto",
acl: []string{"11.11.11.11"},
ristretto: nil,
},
{
caddyfile: `
mwcache {
purge_acl {
11.11.11.11
11.11.11.12
}
}
`,
valid: true,
backend: "ristretto",
acl: []string{"11.11.11.11", "11.11.11.12"},
ristretto: nil,
},
{
caddyfile: `
mwcache {
purge_acl {
11.11.11.11
11.11.11.12
11.11.11.13
11.11.11.14
}
}
`,
valid: true,
backend: "ristretto",
acl: []string{"11.11.11.11", "11.11.11.12", "11.11.11.13", "11.11.11.14"},
ristretto: nil,
},
// TODO
// {
// caddyfile: `mwcache {
// purge_acl
// }
// `,
// valid: false,
// backend: "",
// acl: nil,
// },
{
caddyfile: `
mwcache {
ristretto {
num_counters 100000
max_cost 10000
buffer_items 64
}
}
`,
valid: true,
backend: "ristretto",
acl: []string{"127.0.0.1"},
ristretto: map[string]string{"num_counters": "100000", "max_cost": "10000", "buffer_items": "64"},
},
}
for i, test := range testcases {
d := caddyfile.NewTestDispenser(test.caddyfile)
m := &Handler{}
err := m.UnmarshalCaddyfile(d)
if test.valid && err != nil {
t.Errorf("Test %d: error = %v", i, err)
}
if !test.valid && err == nil {
t.Errorf("Test %d: Error should be thrown", i)
}
if !test.valid {
continue
}
if m.config.Backend != test.backend {
t.Errorf("Test %d: Expected: '%s' but got '%s'", i, test.backend, m.config.Backend)
}
// TODO Compare all elements
if len(m.config.PurgeAcl) != len(test.acl) || m.config.PurgeAcl[0] != test.acl[0] {
e := strings.Join(test.acl, ", ")
a := strings.Join(m.config.PurgeAcl, ", ")
t.Errorf("Test %d: Expected: '%s' but got '%s'", i, e, a)
}
for k, a := range m.config.RistrettoConfig {
e := test.ristretto[k]
if a != e {
t.Errorf("Test %d: Expected: '%s' but got '%s'", i, e, a)
}
}
}
}