1
16
17 package tests
18
19 import (
20 "testing"
21
22 "k8s.io/apimachinery/pkg/types"
23
24 "sigs.k8s.io/gateway-api/conformance/utils/http"
25 "sigs.k8s.io/gateway-api/conformance/utils/kubernetes"
26 "sigs.k8s.io/gateway-api/conformance/utils/suite"
27 )
28
29 func init() {
30 ConformanceTests = append(ConformanceTests, HTTPRouteRewriteHost)
31 }
32
33 var HTTPRouteRewriteHost = suite.ConformanceTest{
34 ShortName: "HTTPRouteRewriteHost",
35 Description: "An HTTPRoute with hostname rewrite filter",
36 Manifests: []string{"tests/httproute-rewrite-host.yaml"},
37 Features: []suite.SupportedFeature{
38 suite.SupportGateway,
39 suite.SupportHTTPRoute,
40 suite.SupportHTTPRouteHostRewrite,
41 },
42 Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
43 ns := "gateway-conformance-infra"
44 routeNN := types.NamespacedName{Name: "rewrite-host", Namespace: ns}
45 gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
46 gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
47 kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
48
49 testCases := []http.ExpectedResponse{
50 {
51 Request: http.Request{
52 Path: "/one",
53 Host: "rewrite.example",
54 },
55 ExpectedRequest: &http.ExpectedRequest{
56 Request: http.Request{
57 Path: "/one",
58 Host: "one.example.org",
59 },
60 },
61 Backend: "infra-backend-v1",
62 Namespace: ns,
63 }, {
64 Request: http.Request{
65 Path: "/two",
66 Host: "rewrite.example",
67 },
68 ExpectedRequest: &http.ExpectedRequest{
69 Request: http.Request{
70 Path: "/two",
71 Host: "example.org",
72 },
73 },
74 Backend: "infra-backend-v2",
75 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,
99 },
100 }
101 for i := range testCases {
102
103
104 tc := testCases[i]
105 t.Run(tc.GetTestCaseName(i), func(t *testing.T) {
106 t.Parallel()
107 http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, gwAddr, tc)
108 })
109 }
110 },
111 }
112
View as plain text