...

Text file src/github.com/emissary-ingress/emissary/v3/python/tests/unit/test_max_request_header.py

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

     1import logging
     2
     3import pytest
     4
     5logging.basicConfig(
     6    level=logging.INFO,
     7    format="%(asctime)s test %(levelname)s: %(message)s",
     8    datefmt="%Y-%m-%d %H:%M:%S",
     9)
    10
    11logger = logging.getLogger("ambassador")
    12
    13from ambassador import IR, Config, EnvoyConfig
    14from ambassador.fetch import ResourceFetcher
    15from ambassador.utils import NullSecretHandler
    16from tests.utils import default_listener_manifests
    17
    18
    19def _get_envoy_config(yaml):
    20    aconf = Config()
    21    fetcher = ResourceFetcher(logger, aconf)
    22    fetcher.parse_yaml(default_listener_manifests() + yaml, k8s=True)
    23
    24    aconf.load_all(fetcher.sorted())
    25
    26    secret_handler = NullSecretHandler(logger, None, None, "0")
    27
    28    ir = IR(aconf, file_checker=lambda path: True, secret_handler=secret_handler)
    29
    30    assert ir
    31
    32    return EnvoyConfig.generate(ir)
    33
    34
    35@pytest.mark.compilertest
    36def test_set_max_request_header():
    37    yaml = """
    38---
    39apiVersion: getambassador.io/v3alpha1
    40kind: Module
    41metadata:
    42  name: ambassador
    43  namespace: default
    44spec:
    45  config:
    46    max_request_headers_kb: 96
    47---
    48apiVersion: getambassador.io/v3alpha1
    49kind: Mapping
    50metadata:
    51  name: ambassador
    52  namespace: default
    53spec:
    54  hostname: "*"
    55  prefix: /test/
    56  service: test:9999
    57"""
    58    econf = _get_envoy_config(yaml)
    59    expected = 96
    60    key_found = False
    61
    62    conf = econf.as_dict()
    63
    64    for listener in conf["static_resources"]["listeners"]:
    65        for filter_chain in listener["filter_chains"]:
    66            for f in filter_chain["filters"]:
    67                max_req_headers = f["typed_config"].get("max_request_headers_kb", None)
    68                assert (
    69                    max_req_headers is not None
    70                ), f"max_request_headers_kb not found on typed_config: {f['typed_config']}"
    71
    72                print(f"Found max_req_headers = {max_req_headers}")
    73                key_found = True
    74                assert expected == int(
    75                    max_req_headers
    76                ), "max_request_headers_kb must equal the value set on the ambassador Module"
    77    assert key_found, "max_request_headers_kb must be found in the envoy config"
    78
    79
    80@pytest.mark.compilertest
    81def test_set_max_request_header_v3():
    82    yaml = """
    83---
    84apiVersion: getambassador.io/v3alpha1
    85kind: Module
    86metadata:
    87  name: ambassador
    88  namespace: default
    89spec:
    90  config:
    91    max_request_headers_kb: 96
    92---
    93apiVersion: getambassador.io/v3alpha1
    94kind: Mapping
    95metadata:
    96  name: ambassador
    97  namespace: default
    98spec:
    99  hostname: "*"
   100  prefix: /test/
   101  service: test:9999
   102"""
   103    econf = _get_envoy_config(yaml)
   104    expected = 96
   105    key_found = False
   106
   107    conf = econf.as_dict()
   108
   109    for listener in conf["static_resources"]["listeners"]:
   110        for filter_chain in listener["filter_chains"]:
   111            for f in filter_chain["filters"]:
   112                max_req_headers = f["typed_config"].get("max_request_headers_kb", None)
   113                assert (
   114                    max_req_headers is not None
   115                ), f"max_request_headers_kb not found on typed_config: {f['typed_config']}"
   116
   117                print(f"Found max_req_headers = {max_req_headers}")
   118                key_found = True
   119                assert expected == int(
   120                    max_req_headers
   121                ), "max_request_headers_kb must equal the value set on the ambassador Module"
   122    assert key_found, "max_request_headers_kb must be found in the envoy config"

View as plain text