forked from s3lph/matemat
Fixed previous unit tests and implemented tests for config parsing.
This commit is contained in:
parent
2dd57dcfd6
commit
23e6662ca8
5 changed files with 83 additions and 9 deletions
|
@ -109,6 +109,8 @@ class MockServer:
|
||||||
self.session_vars: Dict[str, Tuple[datetime, Dict[str, Any]]] = dict()
|
self.session_vars: Dict[str, Tuple[datetime, Dict[str, Any]]] = dict()
|
||||||
# Webroot for statically served content
|
# Webroot for statically served content
|
||||||
self.webroot: str = webroot
|
self.webroot: str = webroot
|
||||||
|
# Variables to pass to pagelets
|
||||||
|
self.pagelet_variables: Dict[str, str] = dict()
|
||||||
# Jinja environment with a single, static template
|
# Jinja environment with a single, static template
|
||||||
self.jinja_env = jinja2.Environment(
|
self.jinja_env = jinja2.Environment(
|
||||||
loader=jinja2.DictLoader({'test.txt': 'Hello, {{ what }}!'})
|
loader=jinja2.DictLoader({'test.txt': 'Hello, {{ what }}!'})
|
||||||
|
@ -168,6 +170,7 @@ def test_pagelet(path: str):
|
||||||
str,
|
str,
|
||||||
RequestArguments,
|
RequestArguments,
|
||||||
Dict[str, Any],
|
Dict[str, Any],
|
||||||
|
Dict[str, str],
|
||||||
Dict[str, str]],
|
Dict[str, str]],
|
||||||
Union[bytes, str, Tuple[int, str]]]):
|
Union[bytes, str, Tuple[int, str]]]):
|
||||||
@pagelet(path)
|
@pagelet(path)
|
||||||
|
@ -175,9 +178,10 @@ def test_pagelet(path: str):
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]):
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]):
|
||||||
headers['X-Test-Pagelet'] = fun.__name__
|
headers['X-Test-Pagelet'] = fun.__name__
|
||||||
result = fun(method, path, args, session_vars, headers)
|
result = fun(method, path, args, session_vars, headers, pagelet_variables)
|
||||||
return result
|
return result
|
||||||
return testing_wrapper
|
return testing_wrapper
|
||||||
return with_testing_headers
|
return with_testing_headers
|
||||||
|
|
63
matemat/webserver/test/test_config.py
Normal file
63
matemat/webserver/test/test_config.py
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
|
||||||
|
from unittest import TestCase
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from io import StringIO
|
||||||
|
|
||||||
|
from matemat.webserver import parse_config_file
|
||||||
|
|
||||||
|
_EMPTY_CONFIG = ''
|
||||||
|
|
||||||
|
_FULL_CONFIG = '''
|
||||||
|
[Matemat]
|
||||||
|
|
||||||
|
Address=fe80::0123:45ff:fe67:89ab
|
||||||
|
Port = 8080
|
||||||
|
|
||||||
|
StaticPath =/var/test/static
|
||||||
|
TemplatePath= /var/test/templates
|
||||||
|
|
||||||
|
[Pagelets]
|
||||||
|
Name=Matemat
|
||||||
|
(Unit Test)
|
||||||
|
UploadDir= /var/test/static/upload
|
||||||
|
DatabaseFile=/var/test/db/test.db
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class TestConfig(TestCase):
|
||||||
|
|
||||||
|
def test_parse_config_empty_defualt_values(self):
|
||||||
|
with patch('builtins.open', return_value=StringIO(_EMPTY_CONFIG)):
|
||||||
|
config = parse_config_file('test')
|
||||||
|
self.assertIn('listen', config)
|
||||||
|
self.assertIn('port', config)
|
||||||
|
self.assertIn('staticroot', config)
|
||||||
|
self.assertIn('templateroot', config)
|
||||||
|
self.assertIn('pagelet_variables', config)
|
||||||
|
self.assertEqual('::', config['listen'])
|
||||||
|
self.assertEqual(80, config['port'])
|
||||||
|
self.assertEqual('/var/matemat/static', config['staticroot'])
|
||||||
|
self.assertEqual('/var/matemat/templates', config['templateroot'])
|
||||||
|
self.assertIsInstance(config['pagelet_variables'], dict)
|
||||||
|
self.assertEqual(0, len(config['pagelet_variables']))
|
||||||
|
|
||||||
|
def test_parse_config_full(self):
|
||||||
|
with patch('builtins.open', return_value=StringIO(_FULL_CONFIG)):
|
||||||
|
config = parse_config_file('test')
|
||||||
|
self.assertIn('listen', config)
|
||||||
|
self.assertIn('port', config)
|
||||||
|
self.assertIn('staticroot', config)
|
||||||
|
self.assertIn('templateroot', config)
|
||||||
|
self.assertIn('pagelet_variables', config)
|
||||||
|
self.assertIn('Name', config['pagelet_variables'])
|
||||||
|
self.assertIn('UploadDir', config['pagelet_variables'])
|
||||||
|
self.assertIn('DatabaseFile', config['pagelet_variables'])
|
||||||
|
|
||||||
|
self.assertEqual('fe80::0123:45ff:fe67:89ab', config['listen'])
|
||||||
|
self.assertEqual(8080, config['port'])
|
||||||
|
self.assertEqual('/var/test/static', config['staticroot'])
|
||||||
|
self.assertEqual('/var/test/templates', config['templateroot'])
|
||||||
|
self.assertEqual('Matemat\n(Unit Test)', config['pagelet_variables']['Name'])
|
||||||
|
self.assertEqual('/var/test/static/upload', config['pagelet_variables']['UploadDir'])
|
||||||
|
self.assertEqual('/var/test/db/test.db', config['pagelet_variables']['DatabaseFile'])
|
|
@ -12,7 +12,8 @@ def post_test_pagelet(method: str,
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]):
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]):
|
||||||
"""
|
"""
|
||||||
Test pagelet that simply prints the parsed arguments as response body.
|
Test pagelet that simply prints the parsed arguments as response body.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -13,7 +13,8 @@ def serve_test_pagelet_str(method: str,
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
||||||
headers['Content-Type'] = 'text/plain'
|
headers['Content-Type'] = 'text/plain'
|
||||||
return 'serve test pagelet str'
|
return 'serve test pagelet str'
|
||||||
|
|
||||||
|
@ -23,7 +24,8 @@ def serve_test_pagelet_bytes(method: str,
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
||||||
headers['Content-Type'] = 'application/octet-stream'
|
headers['Content-Type'] = 'application/octet-stream'
|
||||||
return b'serve\x80test\xffpagelet\xfebytes'
|
return b'serve\x80test\xffpagelet\xfebytes'
|
||||||
|
|
||||||
|
@ -33,7 +35,8 @@ def serve_test_pagelet_redirect(method: str,
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
||||||
return RedirectResponse('/foo/bar')
|
return RedirectResponse('/foo/bar')
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,7 +45,8 @@ def serve_test_pagelet_template(method: str,
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
||||||
headers['Content-Type'] = 'text/plain'
|
headers['Content-Type'] = 'text/plain'
|
||||||
return TemplateResponse('test.txt', what='World')
|
return TemplateResponse('test.txt', what='World')
|
||||||
|
|
||||||
|
@ -53,7 +57,8 @@ def serve_test_pagelet_fail(method: str,
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]) -> Union[bytes, str, PageletResponse]:
|
||||||
session_vars['test'] = 'hello, world!'
|
session_vars['test'] = 'hello, world!'
|
||||||
headers['Content-Type'] = 'text/plain'
|
headers['Content-Type'] = 'text/plain'
|
||||||
raise HttpException()
|
raise HttpException()
|
||||||
|
|
|
@ -13,7 +13,8 @@ def session_test_pagelet(method: str,
|
||||||
path: str,
|
path: str,
|
||||||
args: RequestArguments,
|
args: RequestArguments,
|
||||||
session_vars: Dict[str, Any],
|
session_vars: Dict[str, Any],
|
||||||
headers: Dict[str, str]):
|
headers: Dict[str, str],
|
||||||
|
pagelet_variables: Dict[str, str]):
|
||||||
session_vars['test'] = 'hello, world!'
|
session_vars['test'] = 'hello, world!'
|
||||||
headers['Content-Type'] = 'text/plain'
|
headers['Content-Type'] = 'text/plain'
|
||||||
return 'session test'
|
return 'session test'
|
||||||
|
|
Loading…
Reference in a new issue