...

Text file src/github.com/emissary-ingress/emissary/v3/python/tests/kat/t_regexrewrite_forwarding.py

Documentation: github.com/emissary-ingress/emissary/v3/python/tests/kat

     1from typing import Generator, Tuple, Union
     2
     3from abstract_tests import HTTP, AmbassadorTest, Node, ServiceType
     4from kat.harness import Query
     5
     6
     7class RegexRewriteForwardingTest(AmbassadorTest):
     8    target: ServiceType
     9
    10    def init(self):
    11        self.target = HTTP(name="foo")
    12
    13    def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
    14        yield self.target, self.format(
    15            r"""
    16---
    17apiVersion: getambassador.io/v3alpha1
    18kind: Mapping
    19name:  regex_rewrite_mapping
    20hostname: "*"
    21prefix: /foo/
    22service: http://{self.target.path.fqdn}
    23regex_rewrite:
    24    pattern: "/foo/baz"
    25    substitution: "/baz/foo"
    26"""
    27        )
    28
    29    def queries(self):
    30        yield Query(self.url("foo/bar"), expected=200)
    31        yield Query(self.url("foo/baz"), expected=200)
    32        yield Query(self.url("ffoo/"), expected=404)
    33
    34    def check(self):
    35        assert self.results[0].backend
    36        assert self.results[0].backend.request
    37        assert self.results[0].backend.request.headers["x-envoy-original-path"][0] == f"/foo/bar"
    38        assert self.results[0].backend.request.url.path == "/foo/bar"
    39        assert self.results[1].backend
    40        assert self.results[1].backend.request
    41        assert self.results[1].backend.request.headers["x-envoy-original-path"][0] == f"/foo/baz"
    42        assert self.results[1].backend.request.url.path == "/baz/foo"
    43
    44
    45class RegexRewriteForwardingWithExtractAndSubstituteTest(AmbassadorTest):
    46    target: ServiceType
    47
    48    def init(self):
    49        self.target = HTTP(name="foo")
    50
    51    def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
    52        yield self.target, self.format(
    53            r"""
    54---
    55apiVersion: getambassador.io/v3alpha1
    56kind: Mapping
    57name:  regex_rewrite_mapping
    58hostname: "*"
    59prefix: /foo/
    60service: http://{self.target.path.fqdn}
    61regex_rewrite:
    62    pattern: "/foo/([0-9]*)/list"
    63    substitution: "/bar/\\1"
    64"""
    65        )
    66
    67    def queries(self):
    68        yield Query(self.url("foo/123456789/list"), expected=200)
    69        yield Query(self.url("foo/987654321/list"), expected=200)
    70        yield Query(self.url("fooooo/123456789/list"), expected=404)
    71        yield Query(self.url("foo/"), expected=200)
    72
    73    def check(self):
    74        assert self.results[0].backend
    75        assert self.results[0].backend.request
    76        assert (
    77            self.results[0].backend.request.headers["x-envoy-original-path"][0]
    78            == f"/foo/123456789/list"
    79        )
    80        assert self.results[0].backend.request.url.path == "/bar/123456789"
    81        assert self.results[1].backend
    82        assert self.results[1].backend.request
    83        assert (
    84            self.results[1].backend.request.headers["x-envoy-original-path"][0]
    85            == f"/foo/987654321/list"
    86        )
    87        assert self.results[1].backend.request.url.path == "/bar/987654321"

View as plain text