Tests: added tests for dynamic variables.

This commit is contained in:
Andrei Zeliankou 2022-07-14 11:50:41 +01:00
parent 45b89e3257
commit d358b1d448

View file

@ -18,6 +18,7 @@ class TestVariables(TestApplicationProto):
"GETGET": [{"action": {"return": 207}}],
"localhost": [{"action": {"return": 208}}],
"9?q#a": [{"action": {"return": 209}}],
"blah": [{"action": {"return": 210}}],
},
},
), 'configure routes'
@ -124,6 +125,80 @@ class TestVariables(TestApplicationProto):
update_pass("applications")
assert self.get(url='/3')['status'] == 404
def test_variables_dynamic(self):
self.conf_routes("\"routes/$header_foo$arg_foo$cookie_foo\"")
self.get(
url='/?foo=h',
headers={'Foo': 'b', 'Cookie': 'foo=la', 'Connection': 'close'},
)['status'] = 210
def test_variables_dynamic_headers(self):
def check_header(header, status=210):
assert (
self.get(headers={header: "blah", 'Connection': 'close'})[
'status'
]
== status
)
self.conf_routes("\"routes/$header_foo_bar\"")
check_header('foo-bar')
check_header('Foo-Bar')
check_header('foo_bar', 404)
check_header('Foo', 404)
check_header('Bar', 404)
check_header('foobar', 404)
self.conf_routes("\"routes/$header_Foo_Bar\"")
check_header('Foo-Bar')
check_header('foo-bar')
check_header('foo_bar', 404)
check_header('foobar', 404)
self.conf_routes("\"routes/$header_foo-bar\"")
check_header('foo_bar', 404)
def test_variables_dynamic_arguments(self):
self.conf_routes("\"routes/$arg_foo_bar\"")
assert self.get(url='/?foo_bar=blah')['status'] == 210
assert self.get(url='/?foo_b%61r=blah')['status'] == 210
assert self.get(url='/?bar&foo_bar=blah&foo')['status'] == 210
assert self.get(url='/?Foo_bar=blah')['status'] == 404
assert self.get(url='/?foo-bar=blah')['status'] == 404
assert self.get()['status'] == 404
assert self.get(url='/?foo_bar=')['status'] == 404
assert self.get(url='/?foo_bar=l&foo_bar=blah')['status'] == 210
assert self.get(url='/?foo_bar=blah&foo_bar=l')['status'] == 404
self.conf_routes("\"routes/$arg_foo_b%61r\"")
assert self.get(url='/?foo_b=blah')['status'] == 404
assert self.get(url='/?foo_bar=blah')['status'] == 404
self.conf_routes("\"routes/$arg_f!~\"")
assert self.get(url='/?f=blah')['status'] == 404
assert self.get(url='/?f!~=blah')['status'] == 404
def test_variables_dynamic_cookies(self):
def check_cookie(cookie, status=210):
assert (
self.get(
headers={
'Host': 'localhost',
'Cookie': cookie,
'Connection': 'close',
},
)['status']
== status
), 'match cookie'
self.conf_routes("\"routes/$cookie_foo_bar\"")
check_cookie('foo_bar=blah', 210)
check_cookie('fOo_bar=blah', 404)
assert self.get()['status'] == 404
check_cookie('foo_bar', 404)
check_cookie('foo_bar=', 404)
def test_variables_invalid(self):
def check_variables(routes):
assert 'error' in self.conf(
@ -137,3 +212,10 @@ class TestVariables(TestApplicationProto):
check_variables("\"routes$uriblah\"")
check_variables("\"routes${uri\"")
check_variables("\"routes${{uri}\"")
check_variables("\"routes$ar\"")
check_variables("\"routes$arg\"")
check_variables("\"routes$arg_\"")
check_variables("\"routes$cookie\"")
check_variables("\"routes$cookie_\"")
check_variables("\"routes$header\"")
check_variables("\"routes$header_\"")