Skip to content

Commit d921ed2

Browse files
committed
Move tests into clientsettingspolicy_test.go
1 parent 29f201e commit d921ed2

File tree

1 file changed

+176
-0
lines changed

1 file changed

+176
-0
lines changed
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
package cel
2+
3+
import (
4+
"testing"
5+
6+
gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
7+
)
8+
9+
func TestClientSettingsPoliciesTargetRefKind(t *testing.T) {
10+
allowedKinds := map[string]bool{
11+
"Gateway": true,
12+
"HTTPRoute": true,
13+
"GRPCRoute": true,
14+
}
15+
16+
testValidTargetRefKind(t, allowedKinds)
17+
testInvalidTargetRefKind(t, allowedKinds)
18+
}
19+
20+
func TestClientSettingsPoliciesTargetRefGroup(t *testing.T) {
21+
testValidTargetRefGroup(t)
22+
testInvalidTargetRefGroup(t)
23+
}
24+
25+
func testValidTargetRefKind(t *testing.T, allowedKinds map[string]bool) {
26+
t.Helper()
27+
28+
tests := []struct {
29+
name string
30+
wantErrors string
31+
targetRef gatewayv1alpha2.LocalPolicyTargetReference
32+
}{
33+
{
34+
name: "Validate TargetRef is of an allowed kind",
35+
wantErrors: "TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute'",
36+
targetRef: gatewayv1alpha2.LocalPolicyTargetReference{
37+
Kind: "Gateway",
38+
Group: "gateway.networking.k8s.io",
39+
},
40+
},
41+
{
42+
name: "Validate TargetRef is of an allowed kind",
43+
wantErrors: "TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute'",
44+
targetRef: gatewayv1alpha2.LocalPolicyTargetReference{
45+
Kind: "HTTPRoute",
46+
Group: "gateway.networking.k8s.io",
47+
},
48+
},
49+
{
50+
name: "Validate TargetRef is of an allowed kind",
51+
wantErrors: "TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute'",
52+
targetRef: gatewayv1alpha2.LocalPolicyTargetReference{
53+
Kind: "GRPCRoute",
54+
Group: "gateway.networking.k8s.io",
55+
},
56+
},
57+
}
58+
59+
for _, tt := range tests {
60+
t.Run(tt.name, func(t *testing.T) {
61+
if _, ok := allowedKinds[string(tt.targetRef.Kind)]; !ok {
62+
gotError := "TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute'"
63+
64+
if tt.wantErrors == gotError {
65+
t.Errorf("Test %s failed: got error %q, want %q", tt.name, gotError, tt.wantErrors)
66+
}
67+
}
68+
})
69+
}
70+
}
71+
72+
func testInvalidTargetRefKind(t *testing.T, allowedKinds map[string]bool) {
73+
t.Helper()
74+
75+
tests := []struct {
76+
name string
77+
wantErrors string
78+
targetRef gatewayv1alpha2.LocalPolicyTargetReference
79+
}{
80+
{
81+
name: "Validate TargetRef is of an allowed kind",
82+
wantErrors: "TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute'",
83+
targetRef: gatewayv1alpha2.LocalPolicyTargetReference{
84+
Kind: "InvalidKind",
85+
Group: "gateway.networking.k8s.io",
86+
},
87+
},
88+
{
89+
name: "Validate TargetRef is of an allowed kind",
90+
wantErrors: "TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute'",
91+
targetRef: gatewayv1alpha2.LocalPolicyTargetReference{
92+
Kind: "TCPRoute",
93+
Group: "gateway.networking.k8s.io",
94+
},
95+
},
96+
}
97+
98+
for _, tt := range tests {
99+
t.Run(tt.name, func(t *testing.T) {
100+
if _, ok := allowedKinds[string(tt.targetRef.Kind)]; !ok {
101+
gotError := "TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute'"
102+
103+
if tt.wantErrors != gotError {
104+
t.Errorf("Test %s failed: got error %q, want %q", tt.name, gotError, tt.wantErrors)
105+
}
106+
}
107+
})
108+
}
109+
}
110+
111+
func testValidTargetRefGroup(t *testing.T) {
112+
t.Helper()
113+
114+
tests := []struct {
115+
name string
116+
wantErrors string
117+
targetRefGroup gatewayv1alpha2.LocalPolicyTargetReference
118+
}{
119+
{
120+
name: "Validate TargetRef group is gateway.networking.k8s.io",
121+
wantErrors: "TargetRef Group must be gateway.networking.k8s.io",
122+
targetRefGroup: gatewayv1alpha2.LocalPolicyTargetReference{
123+
Group: "gateway.networking.k8s.io",
124+
},
125+
},
126+
}
127+
128+
for _, tt := range tests {
129+
t.Run(tt.name, func(t *testing.T) {
130+
if tt.targetRefGroup.Group != "gateway.networking.k8s.io" {
131+
gotError := "TargetRef Group must be gateway.networking.k8s.io"
132+
133+
if tt.wantErrors == gotError {
134+
t.Errorf("Test %s failed: got error %q, want %q", tt.name, gotError, tt.wantErrors)
135+
}
136+
}
137+
})
138+
}
139+
}
140+
141+
func testInvalidTargetRefGroup(t *testing.T) {
142+
t.Helper()
143+
144+
tests := []struct {
145+
name string
146+
wantErrors string
147+
targetRefGroup gatewayv1alpha2.LocalPolicyTargetReference
148+
}{
149+
{
150+
name: "Validate TargetRef group is gateway.networking.k8s.io",
151+
wantErrors: "TargetRef Group must be gateway.networking.k8s.io",
152+
targetRefGroup: gatewayv1alpha2.LocalPolicyTargetReference{
153+
Group: "invalid.networking.k8s.io",
154+
},
155+
},
156+
{
157+
name: "Validate TargetRef is of an allowed kind",
158+
wantErrors: "TargetRef Group must be gateway.networking.k8s.io",
159+
targetRefGroup: gatewayv1alpha2.LocalPolicyTargetReference{
160+
Group: "discovery.k8s.io/v1",
161+
},
162+
},
163+
}
164+
165+
for _, tt := range tests {
166+
t.Run(tt.name, func(t *testing.T) {
167+
if tt.targetRefGroup.Group != "gateway.networking.k8s.io" {
168+
gotError := "TargetRef Group must be gateway.networking.k8s.io"
169+
170+
if tt.wantErrors != gotError {
171+
t.Errorf("Test %s failed: got error %q, want %q", tt.name, gotError, tt.wantErrors)
172+
}
173+
}
174+
})
175+
}
176+
}

0 commit comments

Comments
 (0)