Skip to content

Commit f13c905

Browse files
authored
Add conformance tests with requestHeaderModifier (#2101)
* Add test that combine Redirect and HeaderModifier * Combine requestHeaderModifier test cases (Core Capabilities) with Extended Capabilities such as requestMirror, responseHeaderModifier, and urlRewrite * Revert unnecessary changes to redirect path tests * Fix formatting * Addressing comments from Lior * Fix indentations on yaml files * Fix indentation errors * Adding a header to show an untouched header, and a header that gets overwritten * Fix golint errors
1 parent a124c94 commit f13c905

8 files changed

+268
-0
lines changed

conformance/tests/httproute-request-mirror.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,28 @@ var HTTPRouteRequestMirror = suite.ConformanceTest{
5858
Backend: "infra-backend-v1",
5959
MirroredTo: "infra-backend-v2",
6060
Namespace: ns,
61+
}, {
62+
Request: http.Request{
63+
Path: "/mirror-and-modify-headers",
64+
Headers: map[string]string{
65+
"X-Header-Remove": "remove-val",
66+
"X-Header-Add-Append": "append-val-1",
67+
},
68+
},
69+
ExpectedRequest: &http.ExpectedRequest{
70+
Request: http.Request{
71+
Path: "/mirror-and-modify-headers",
72+
Headers: map[string]string{
73+
"X-Header-Add": "header-val-1",
74+
"X-Header-Add-Append": "append-val-1,header-val-2",
75+
"X-Header-Set": "set-overwrites-values",
76+
},
77+
},
78+
AbsentHeaders: []string{"X-Header-Remove"},
79+
},
80+
Namespace: ns,
81+
Backend: "infra-backend-v1",
82+
MirroredTo: "infra-backend-v2",
6183
},
6284
}
6385
for i := range testCases {

conformance/tests/httproute-request-mirror.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,30 @@ spec:
2222
- name: infra-backend-v1
2323
port: 8080
2424
namespace: gateway-conformance-infra
25+
- matches:
26+
- path:
27+
type: PathPrefix
28+
value: /mirror-and-modify-headers
29+
filters:
30+
- type: RequestHeaderModifier
31+
requestHeaderModifier:
32+
set:
33+
- name: X-Header-Set
34+
value: set-overwrites-values
35+
add:
36+
- name: X-Header-Add
37+
value: header-val-1
38+
- name: X-Header-Add-Append
39+
value: header-val-2
40+
remove:
41+
- X-Header-Remove
42+
- type: RequestMirror
43+
requestMirror:
44+
backendRef:
45+
name: infra-backend-v2
46+
namespace: gateway-conformance-infra
47+
port: 8080
48+
backendRefs:
49+
- name: infra-backend-v1
50+
port: 8080
51+
namespace: gateway-conformance-infra

conformance/tests/httproute-response-header-modifier.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,48 @@ var HTTPRouteResponseHeaderModifier = suite.ConformanceTest{
168168
},
169169
Backend: "infra-backend-v1",
170170
Namespace: ns,
171+
}, {
172+
Request: http.Request{
173+
Path: "/response-and-request-header-modifiers",
174+
Headers: map[string]string{
175+
"X-Header-Remove": "remove-val",
176+
"X-Header-Add-Append": "append-val-1",
177+
"X-Header-Echo": "echo",
178+
},
179+
},
180+
BackendSetResponseHeaders: map[string]string{
181+
"X-Header-Set-2": "set-val-2",
182+
"X-Header-Add-2": "add-val-2",
183+
"X-Header-Remove-2": "remove-val-2",
184+
"Another-Header": "another-header-val",
185+
"X-Header-Remove-1": "remove-val-1",
186+
"X-Header-Echo": "echo",
187+
},
188+
ExpectedRequest: &http.ExpectedRequest{
189+
Request: http.Request{
190+
Path: "/response-and-request-header-modifiers",
191+
Headers: map[string]string{
192+
"X-Header-Add": "header-val-1",
193+
"X-Header-Set": "set-overwrites-values",
194+
"X-Header-Add-Append": "append-val-1,header-val-2",
195+
"X-Header-Echo": "echo",
196+
},
197+
},
198+
AbsentHeaders: []string{"X-Header-Remove"},
199+
},
200+
Response: http.Response{
201+
Headers: map[string]string{
202+
"X-Header-Set-1": "header-set-1",
203+
"X-Header-Set-2": "header-set-2",
204+
"X-Header-Add-1": "header-add-1",
205+
"X-Header-Add-2": "add-val-2,header-add-2",
206+
"Another-Header": "another-header-val",
207+
"X-Header-Echo": "echo",
208+
},
209+
AbsentHeaders: []string{"X-Header-Remove-1", "X-Header-Remove-2"},
210+
},
211+
Backend: "infra-backend-v1",
212+
Namespace: ns,
171213
}}
172214

173215
for i := range testCases {

conformance/tests/httproute-response-header-modifier.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,38 @@ spec:
9696
backendRefs:
9797
- name: infra-backend-v1
9898
port: 8080
99+
- matches:
100+
- path:
101+
type: PathPrefix
102+
value: /response-and-request-header-modifiers
103+
filters:
104+
- type: ResponseHeaderModifier
105+
responseHeaderModifier:
106+
set:
107+
- name: X-Header-Set-1
108+
value: header-set-1
109+
- name: X-Header-Set-2
110+
value: header-set-2
111+
add:
112+
- name: X-Header-Add-1
113+
value: header-add-1
114+
- name: X-Header-Add-2
115+
value: header-add-2
116+
remove:
117+
- X-Header-Remove-1
118+
- X-Header-Remove-2
119+
- type: RequestHeaderModifier
120+
requestHeaderModifier:
121+
set:
122+
- name: X-Header-Set
123+
value: set-overwrites-values
124+
add:
125+
- name: X-Header-Add
126+
value: header-val-1
127+
- name: X-Header-Add-Append
128+
value: header-val-2
129+
remove:
130+
- X-Header-Remove
131+
backendRefs:
132+
- name: infra-backend-v1
133+
port: 8080

conformance/tests/httproute-rewrite-host.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,29 @@ var HTTPRouteRewriteHost = suite.ConformanceTest{
7373
},
7474
Backend: "infra-backend-v2",
7575
Namespace: ns,
76+
}, {
77+
Request: http.Request{
78+
Path: "/rewrite-host-and-modify-headers",
79+
Host: "rewrite.example",
80+
Headers: map[string]string{
81+
"X-Header-Remove": "remove-val",
82+
"X-Header-Add-Append": "append-val-1",
83+
},
84+
},
85+
ExpectedRequest: &http.ExpectedRequest{
86+
Request: http.Request{
87+
Path: "/rewrite-host-and-modify-headers",
88+
Host: "test.example.org",
89+
Headers: map[string]string{
90+
"X-Header-Add": "header-val-1",
91+
"X-Header-Add-Append": "append-val-1,header-val-2",
92+
"X-Header-Set": "set-overwrites-values",
93+
},
94+
},
95+
AbsentHeaders: []string{"X-Header-Remove"},
96+
},
97+
Backend: "infra-backend-v2",
98+
Namespace: ns,
7699
},
77100
}
78101
for i := range testCases {

conformance/tests/httproute-rewrite-host.yaml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,26 @@ spec:
2727
backendRefs:
2828
- name: infra-backend-v2
2929
port: 8080
30+
- matches:
31+
- path:
32+
type: PathPrefix
33+
value: /rewrite-host-and-modify-headers
34+
filters:
35+
- type: URLRewrite
36+
urlRewrite:
37+
hostname: test.example.org
38+
- type: RequestHeaderModifier
39+
requestHeaderModifier:
40+
set:
41+
- name: X-Header-Set
42+
value: set-overwrites-values
43+
add:
44+
- name: X-Header-Add
45+
value: header-val-1
46+
- name: X-Header-Add-Append
47+
value: header-val-2
48+
remove:
49+
- X-Header-Remove
50+
backendRefs:
51+
- name: infra-backend-v2
52+
port: 8080

conformance/tests/httproute-rewrite-path.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,52 @@ var HTTPRouteRewritePath = suite.ConformanceTest{
7171
Backend: "infra-backend-v1",
7272
Namespace: ns,
7373
},
74+
{
75+
Request: http.Request{
76+
Path: "/full/rewrite-path-and-modify-headers/test",
77+
Headers: map[string]string{
78+
"X-Header-Remove": "remove-val",
79+
"X-Header-Add-Append": "append-val-1",
80+
"X-Header-Set": "set-val",
81+
},
82+
},
83+
ExpectedRequest: &http.ExpectedRequest{
84+
Request: http.Request{
85+
Path: "/test",
86+
Headers: map[string]string{
87+
"X-Header-Add": "header-val-1",
88+
"X-Header-Add-Append": "append-val-1,header-val-2",
89+
"X-Header-Set": "set-overwrites-values",
90+
},
91+
},
92+
AbsentHeaders: []string{"X-Header-Remove"},
93+
},
94+
Backend: "infra-backend-v1",
95+
Namespace: ns,
96+
},
97+
{
98+
Request: http.Request{
99+
Path: "/prefix/rewrite-path-and-modify-headers/one",
100+
Headers: map[string]string{
101+
"X-Header-Remove": "remove-val",
102+
"X-Header-Add-Append": "append-val-1",
103+
"X-Header-Set": "set-val",
104+
},
105+
},
106+
ExpectedRequest: &http.ExpectedRequest{
107+
Request: http.Request{
108+
Path: "/prefix/one",
109+
Headers: map[string]string{
110+
"X-Header-Add": "header-val-1",
111+
"X-Header-Add-Append": "append-val-1,header-val-2",
112+
"X-Header-Set": "set-overwrites-values",
113+
},
114+
},
115+
AbsentHeaders: []string{"X-Header-Remove"},
116+
},
117+
Backend: "infra-backend-v1",
118+
Namespace: ns,
119+
},
74120
}
75121
for i := range testCases {
76122
// Declare tc here to avoid loop variable

conformance/tests/httproute-rewrite-path.yaml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,53 @@ spec:
3333
backendRefs:
3434
- name: infra-backend-v1
3535
port: 8080
36+
- matches:
37+
- path:
38+
type: PathPrefix
39+
value: /full/rewrite-path-and-modify-headers
40+
filters:
41+
- type: URLRewrite
42+
urlRewrite:
43+
path:
44+
type: ReplaceFullPath
45+
replaceFullPath: /test
46+
- type: RequestHeaderModifier
47+
requestHeaderModifier:
48+
set:
49+
- name: X-Header-Set
50+
value: set-overwrites-values
51+
add:
52+
- name: X-Header-Add
53+
value: header-val-1
54+
- name: X-Header-Add-Append
55+
value: header-val-2
56+
remove:
57+
- X-Header-Remove
58+
backendRefs:
59+
- name: infra-backend-v1
60+
port: 8080
61+
- matches:
62+
- path:
63+
type: PathPrefix
64+
value: /prefix/rewrite-path-and-modify-headers
65+
filters:
66+
- type: URLRewrite
67+
urlRewrite:
68+
path:
69+
type: ReplacePrefixMatch
70+
replacePrefixMatch: /prefix
71+
- type: RequestHeaderModifier
72+
requestHeaderModifier:
73+
set:
74+
- name: X-Header-Set
75+
value: set-overwrites-values
76+
add:
77+
- name: X-Header-Add
78+
value: header-val-1
79+
- name: X-Header-Add-Append
80+
value: header-val-2
81+
remove:
82+
- X-Header-Remove
83+
backendRefs:
84+
- name: infra-backend-v1
85+
port: 8080

0 commit comments

Comments
 (0)