Skip to content

Commit

Permalink
Add conformance tests with requestHeaderModifier (#2101)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
Treenhan authored Jun 23, 2023
1 parent a124c94 commit f13c905
Show file tree
Hide file tree
Showing 8 changed files with 268 additions and 0 deletions.
22 changes: 22 additions & 0 deletions conformance/tests/httproute-request-mirror.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,28 @@ var HTTPRouteRequestMirror = suite.ConformanceTest{
Backend: "infra-backend-v1",
MirroredTo: "infra-backend-v2",
Namespace: ns,
}, {
Request: http.Request{
Path: "/mirror-and-modify-headers",
Headers: map[string]string{
"X-Header-Remove": "remove-val",
"X-Header-Add-Append": "append-val-1",
},
},
ExpectedRequest: &http.ExpectedRequest{
Request: http.Request{
Path: "/mirror-and-modify-headers",
Headers: map[string]string{
"X-Header-Add": "header-val-1",
"X-Header-Add-Append": "append-val-1,header-val-2",
"X-Header-Set": "set-overwrites-values",
},
},
AbsentHeaders: []string{"X-Header-Remove"},
},
Namespace: ns,
Backend: "infra-backend-v1",
MirroredTo: "infra-backend-v2",
},
}
for i := range testCases {
Expand Down
27 changes: 27 additions & 0 deletions conformance/tests/httproute-request-mirror.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,30 @@ spec:
- name: infra-backend-v1
port: 8080
namespace: gateway-conformance-infra
- matches:
- path:
type: PathPrefix
value: /mirror-and-modify-headers
filters:
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Header-Set
value: set-overwrites-values
add:
- name: X-Header-Add
value: header-val-1
- name: X-Header-Add-Append
value: header-val-2
remove:
- X-Header-Remove
- type: RequestMirror
requestMirror:
backendRef:
name: infra-backend-v2
namespace: gateway-conformance-infra
port: 8080
backendRefs:
- name: infra-backend-v1
port: 8080
namespace: gateway-conformance-infra
42 changes: 42 additions & 0 deletions conformance/tests/httproute-response-header-modifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,48 @@ var HTTPRouteResponseHeaderModifier = suite.ConformanceTest{
},
Backend: "infra-backend-v1",
Namespace: ns,
}, {
Request: http.Request{
Path: "/response-and-request-header-modifiers",
Headers: map[string]string{
"X-Header-Remove": "remove-val",
"X-Header-Add-Append": "append-val-1",
"X-Header-Echo": "echo",
},
},
BackendSetResponseHeaders: map[string]string{
"X-Header-Set-2": "set-val-2",
"X-Header-Add-2": "add-val-2",
"X-Header-Remove-2": "remove-val-2",
"Another-Header": "another-header-val",
"X-Header-Remove-1": "remove-val-1",
"X-Header-Echo": "echo",
},
ExpectedRequest: &http.ExpectedRequest{
Request: http.Request{
Path: "/response-and-request-header-modifiers",
Headers: map[string]string{
"X-Header-Add": "header-val-1",
"X-Header-Set": "set-overwrites-values",
"X-Header-Add-Append": "append-val-1,header-val-2",
"X-Header-Echo": "echo",
},
},
AbsentHeaders: []string{"X-Header-Remove"},
},
Response: http.Response{
Headers: map[string]string{
"X-Header-Set-1": "header-set-1",
"X-Header-Set-2": "header-set-2",
"X-Header-Add-1": "header-add-1",
"X-Header-Add-2": "add-val-2,header-add-2",
"Another-Header": "another-header-val",
"X-Header-Echo": "echo",
},
AbsentHeaders: []string{"X-Header-Remove-1", "X-Header-Remove-2"},
},
Backend: "infra-backend-v1",
Namespace: ns,
}}

for i := range testCases {
Expand Down
35 changes: 35 additions & 0 deletions conformance/tests/httproute-response-header-modifier.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,3 +96,38 @@ spec:
backendRefs:
- name: infra-backend-v1
port: 8080
- matches:
- path:
type: PathPrefix
value: /response-and-request-header-modifiers
filters:
- type: ResponseHeaderModifier
responseHeaderModifier:
set:
- name: X-Header-Set-1
value: header-set-1
- name: X-Header-Set-2
value: header-set-2
add:
- name: X-Header-Add-1
value: header-add-1
- name: X-Header-Add-2
value: header-add-2
remove:
- X-Header-Remove-1
- X-Header-Remove-2
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Header-Set
value: set-overwrites-values
add:
- name: X-Header-Add
value: header-val-1
- name: X-Header-Add-Append
value: header-val-2
remove:
- X-Header-Remove
backendRefs:
- name: infra-backend-v1
port: 8080
23 changes: 23 additions & 0 deletions conformance/tests/httproute-rewrite-host.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,29 @@ var HTTPRouteRewriteHost = suite.ConformanceTest{
},
Backend: "infra-backend-v2",
Namespace: ns,
}, {
Request: http.Request{
Path: "/rewrite-host-and-modify-headers",
Host: "rewrite.example",
Headers: map[string]string{
"X-Header-Remove": "remove-val",
"X-Header-Add-Append": "append-val-1",
},
},
ExpectedRequest: &http.ExpectedRequest{
Request: http.Request{
Path: "/rewrite-host-and-modify-headers",
Host: "test.example.org",
Headers: map[string]string{
"X-Header-Add": "header-val-1",
"X-Header-Add-Append": "append-val-1,header-val-2",
"X-Header-Set": "set-overwrites-values",
},
},
AbsentHeaders: []string{"X-Header-Remove"},
},
Backend: "infra-backend-v2",
Namespace: ns,
},
}
for i := range testCases {
Expand Down
23 changes: 23 additions & 0 deletions conformance/tests/httproute-rewrite-host.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,26 @@ spec:
backendRefs:
- name: infra-backend-v2
port: 8080
- matches:
- path:
type: PathPrefix
value: /rewrite-host-and-modify-headers
filters:
- type: URLRewrite
urlRewrite:
hostname: test.example.org
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Header-Set
value: set-overwrites-values
add:
- name: X-Header-Add
value: header-val-1
- name: X-Header-Add-Append
value: header-val-2
remove:
- X-Header-Remove
backendRefs:
- name: infra-backend-v2
port: 8080
46 changes: 46 additions & 0 deletions conformance/tests/httproute-rewrite-path.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,52 @@ var HTTPRouteRewritePath = suite.ConformanceTest{
Backend: "infra-backend-v1",
Namespace: ns,
},
{
Request: http.Request{
Path: "/full/rewrite-path-and-modify-headers/test",
Headers: map[string]string{
"X-Header-Remove": "remove-val",
"X-Header-Add-Append": "append-val-1",
"X-Header-Set": "set-val",
},
},
ExpectedRequest: &http.ExpectedRequest{
Request: http.Request{
Path: "/test",
Headers: map[string]string{
"X-Header-Add": "header-val-1",
"X-Header-Add-Append": "append-val-1,header-val-2",
"X-Header-Set": "set-overwrites-values",
},
},
AbsentHeaders: []string{"X-Header-Remove"},
},
Backend: "infra-backend-v1",
Namespace: ns,
},
{
Request: http.Request{
Path: "/prefix/rewrite-path-and-modify-headers/one",
Headers: map[string]string{
"X-Header-Remove": "remove-val",
"X-Header-Add-Append": "append-val-1",
"X-Header-Set": "set-val",
},
},
ExpectedRequest: &http.ExpectedRequest{
Request: http.Request{
Path: "/prefix/one",
Headers: map[string]string{
"X-Header-Add": "header-val-1",
"X-Header-Add-Append": "append-val-1,header-val-2",
"X-Header-Set": "set-overwrites-values",
},
},
AbsentHeaders: []string{"X-Header-Remove"},
},
Backend: "infra-backend-v1",
Namespace: ns,
},
}
for i := range testCases {
// Declare tc here to avoid loop variable
Expand Down
50 changes: 50 additions & 0 deletions conformance/tests/httproute-rewrite-path.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,53 @@ spec:
backendRefs:
- name: infra-backend-v1
port: 8080
- matches:
- path:
type: PathPrefix
value: /full/rewrite-path-and-modify-headers
filters:
- type: URLRewrite
urlRewrite:
path:
type: ReplaceFullPath
replaceFullPath: /test
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Header-Set
value: set-overwrites-values
add:
- name: X-Header-Add
value: header-val-1
- name: X-Header-Add-Append
value: header-val-2
remove:
- X-Header-Remove
backendRefs:
- name: infra-backend-v1
port: 8080
- matches:
- path:
type: PathPrefix
value: /prefix/rewrite-path-and-modify-headers
filters:
- type: URLRewrite
urlRewrite:
path:
type: ReplacePrefixMatch
replacePrefixMatch: /prefix
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Header-Set
value: set-overwrites-values
add:
- name: X-Header-Add
value: header-val-1
- name: X-Header-Add-Append
value: header-val-2
remove:
- X-Header-Remove
backendRefs:
- name: infra-backend-v1
port: 8080

0 comments on commit f13c905

Please sign in to comment.