...

Text file src/github.com/datawire/ambassador/v2/python/tests/kat/t_regexrewrite_forwarding.py

Documentation: github.com/datawire/ambassador/v2/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.request.headers["x-envoy-original-path"][0] == f"/foo/bar"
    36        assert self.results[0].backend.request.url.path == "/foo/bar"
    37        assert self.results[1].backend.request.headers["x-envoy-original-path"][0] == f"/foo/baz"
    38        assert self.results[1].backend.request.url.path == "/baz/foo"
    39
    40
    41class RegexRewriteForwardingWithExtractAndSubstituteTest(AmbassadorTest):
    42    target: ServiceType
    43
    44    def init(self):
    45        self.target = HTTP(name="foo")
    46
    47    def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
    48        yield self.target, self.format(
    49            r"""
    50---
    51apiVersion: getambassador.io/v3alpha1
    52kind: Mapping
    53name:  regex_rewrite_mapping
    54hostname: "*"
    55prefix: /foo/
    56service: http://{self.target.path.fqdn}
    57regex_rewrite:
    58    pattern: "/foo/([0-9]*)/list"
    59    substitution: "/bar/\\1"
    60"""
    61        )
    62
    63    def queries(self):
    64        yield Query(self.url("foo/123456789/list"), expected=200)
    65        yield Query(self.url("foo/987654321/list"), expected=200)
    66        yield Query(self.url("fooooo/123456789/list"), expected=404)
    67        yield Query(self.url("foo/"), expected=200)
    68
    69    def check(self):
    70        assert (
    71            self.results[0].backend.request.headers["x-envoy-original-path"][0]
    72            == f"/foo/123456789/list"
    73        )
    74        assert self.results[0].backend.request.url.path == "/bar/123456789"
    75        assert (
    76            self.results[1].backend.request.headers["x-envoy-original-path"][0]
    77            == f"/foo/987654321/list"
    78        )
    79        assert self.results[1].backend.request.url.path == "/bar/987654321"

View as plain text