...
1from typing import Generator, Tuple, Union
2
3from abstract_tests import HTTP, AmbassadorTest, Node, ServiceType
4from kat.harness import Query
5
6
7class AllowHeadersWithUnderscoresTest(AmbassadorTest):
8 target: ServiceType
9
10 def init(self):
11 self.target = HTTP(name="target")
12
13 def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
14 yield self, self.format(
15 """
16---
17apiVersion: getambassador.io/v3alpha1
18kind: Mapping
19name: config__dump
20ambassador_id: [{self.ambassador_id}]
21hostname: "*"
22prefix: /target/
23service: http://{self.target.path.fqdn}
24"""
25 )
26
27 def queries(self):
28 yield Query(self.url("target/"), expected=200, headers={"t_underscore": "foo"})
29
30 def check(self):
31 assert self.results[0].status == 200
32
33
34class RejectHeadersWithUnderscoresTest(AmbassadorTest):
35 target: ServiceType
36
37 def init(self):
38 self.target = HTTP(name="target")
39
40 def config(self) -> Generator[Union[str, Tuple[Node, str]], None, None]:
41 yield self, self.format(
42 """
43---
44apiVersion: getambassador.io/v3alpha1
45kind: Module
46name: ambassador
47ambassador_id: [{self.ambassador_id}]
48config:
49 headers_with_underscores_action: REJECT_REQUEST
50"""
51 )
52 yield self, self.format(
53 """
54---
55apiVersion: getambassador.io/v3alpha1
56kind: Mapping
57name: config__dump
58ambassador_id: [{self.ambassador_id}]
59hostname: "*"
60prefix: /target/
61service: http://{self.target.path.fqdn}
62"""
63 )
64
65 def queries(self):
66 yield Query(self.url("target/"), expected=400, headers={"t_underscore": "foo"})
67
68 def check(self):
69 assert self.results[0].status == 400
View as plain text