forked from alexsnaps/gw-policies-playground
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fake_policy_test.go
113 lines (91 loc) · 2.55 KB
/
fake_policy_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
package gw_policies_playground
import (
"testing"
"gotest.tools/assert"
)
type FakePolicy struct {
enabled *bool
value *int
}
func FakePolicyMerger(p1 FakePolicy, p2 FakePolicy) FakePolicy {
result := p1
if result.enabled == nil {
result.enabled = p2.enabled
}
if result.value == nil {
result.value = p2.value
}
return result
}
func TestRouteSimpleMerge(t *testing.T) {
gwc := NewGatewayClass[FakePolicy]("gwc1")
gw := gwc.CreateGateway("gw")
route := gw.CreateRoute("route")
assert.Equal(t, gw.parent, &gwc)
assert.Equal(t, gw.name, "gw")
assert.Equal(t, route.parent, gw)
assert.Equal(t, route.name, "route")
value := 42
enabled := true
policy := PolicySpec[FakePolicy]{
name: "policy",
defaults: FakePolicy{value: &value},
overrides: FakePolicy{enabled: &enabled},
}
route.AddPolicy(policy)
assert.Equal(t, route.policies[0], policy)
result := route.MergedPolicies(FakePolicyMerger)
assert.Equal(t, *result.value, 42)
assert.Check(t, *result.enabled)
}
func TestRouteGwMerge(t *testing.T) {
gwc := NewGatewayClass[FakePolicy]("gwc1")
gw := gwc.CreateGateway("gw")
route := gw.CreateRoute("route")
assert.Equal(t, gw.parent, &gwc)
assert.Equal(t, gw.name, "gw")
assert.Equal(t, route.parent, gw)
assert.Equal(t, route.name, "route")
gwDefault := 42
routeOverride := 420
enabled := true
gwPolicy := PolicySpec[FakePolicy]{
name: "gw_policy",
defaults: FakePolicy{value: &gwDefault},
overrides: FakePolicy{enabled: &enabled},
}
gw.AddPolicy(gwPolicy)
routePolicy := PolicySpec[FakePolicy]{
name: "route_policy",
defaults: FakePolicy{value: &gwDefault},
overrides: FakePolicy{value: &routeOverride},
}
route.AddPolicy(routePolicy)
result := route.MergedPolicies(FakePolicyMerger)
assert.Equal(t, *result.value, 420)
assert.Check(t, *result.enabled)
}
func TestRouteGwMergeDefaults(t *testing.T) {
gwc := NewGatewayClass[FakePolicy]("gwc1")
gw := gwc.CreateGateway("gw")
route := gw.CreateRoute("route")
gwDefault := 42
routeDefault := 420
enabled := true
disabled := false
gwPolicy := PolicySpec[FakePolicy]{
name: "gw_policy",
defaults: FakePolicy{value: &gwDefault},
overrides: FakePolicy{enabled: &enabled},
}
gw.AddPolicy(gwPolicy)
routePolicy := PolicySpec[FakePolicy]{
name: "route_policy",
defaults: FakePolicy{enabled: &disabled, value: &routeDefault},
overrides: FakePolicy{enabled: &disabled, value: nil},
}
route.AddPolicy(routePolicy)
result := route.MergedPolicies(FakePolicyMerger)
assert.Equal(t, *result.value, 420)
assert.Check(t, *result.enabled)
}