...

Text file src/github.com/emissary-ingress/emissary/v3/python/tests/kat/t_queryparameter_routing.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 QueryParameterRoutingTest(AmbassadorTest):
     8    target1: ServiceType
     9    target2: ServiceType
    10
    11    def init(self):
    12        self.target1 = HTTP(name="target1")
    13        self.target2 = HTTP(name="target2")
    14
    15    def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
    16        yield self.target1, self.format(
    17            """
    18---
    19apiVersion: getambassador.io/v3alpha1
    20kind: Mapping
    21name:  {self.name}-target1
    22hostname: "*"
    23prefix: /target/
    24service: http://{self.target1.path.fqdn}
    25"""
    26        )
    27        yield self.target2, self.format(
    28            """
    29---
    30apiVersion: getambassador.io/v3alpha1
    31kind: Mapping
    32name:  {self.name}-target2
    33hostname: "*"
    34prefix: /target/
    35service: http://{self.target2.path.fqdn}
    36query_parameters:
    37    test_param: target2
    38"""
    39        )
    40
    41    def queries(self):
    42        yield Query(self.url("target/"), expected=200)
    43        yield Query(self.url("target/?test_param=target2"), expected=200)
    44
    45    def check(self):
    46        assert self.results[0].backend
    47        assert (
    48            self.results[0].backend.name == self.target1.path.k8s
    49        ), f"r0 wanted {self.target1.path.k8s} got {self.results[0].backend.name}"
    50        assert self.results[1].backend
    51        assert (
    52            self.results[1].backend.name == self.target2.path.k8s
    53        ), f"r1 wanted {self.target2.path.k8s} got {self.results[1].backend.name}"
    54
    55
    56class QueryParameterRoutingWithRegexTest(AmbassadorTest):
    57    target: ServiceType
    58
    59    def init(self):
    60        self.target = HTTP(name="target")
    61
    62    def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
    63        yield self.target, self.format(
    64            """
    65---
    66apiVersion: getambassador.io/v3alpha1
    67kind: Mapping
    68name:  {self.name}-target
    69hostname: "*"
    70prefix: /target/
    71service: http://{self.target.path.fqdn}
    72regex_query_parameters:
    73    test_param: "^[a-z].*"
    74"""
    75        )
    76
    77    def queries(self):
    78        yield Query(self.url("target/?test_param=hello"), expected=200)
    79
    80        # These should not match the regex and therefore not be found
    81        yield Query(self.url("target/"), expected=404)
    82        yield Query(self.url("target/?test_param=HeLlO"), expected=404)
    83
    84    def check(self):
    85        assert self.results[0].backend
    86        assert (
    87            self.results[0].backend.name == self.target.path.k8s
    88        ), f"r0 wanted {self.target.path.k8s} got {self.results[0].backend.name}"
    89
    90
    91class QueryParameterPresentRoutingTest(AmbassadorTest):
    92    target: ServiceType
    93
    94    def init(self):
    95        self.target = HTTP(name="target")
    96
    97    def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
    98        yield self.target, self.format(
    99            """
   100---
   101apiVersion: getambassador.io/v3alpha1
   102kind: Mapping
   103name:  {self.name}-target
   104hostname: "*"
   105prefix: /target/
   106service: http://{self.target.path.fqdn}
   107regex_query_parameters:
   108    test_param: ".*"
   109"""
   110        )
   111
   112    def queries(self):
   113        yield Query(self.url("target/?test_param=true"), expected=200)
   114        yield Query(self.url("target/"), expected=404)
   115
   116    def check(self):
   117        assert self.results[0].backend
   118        assert (
   119            self.results[0].backend.name == self.target.path.k8s
   120        ), f"r0 wanted {self.target.path.k8s} got {self.results[0].backend.name}"

View as plain text