diff options
Diffstat (limited to 'tst/test_listen.py')
-rw-r--r-- | tst/test_listen.py | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/tst/test_listen.py b/tst/test_listen.py index d4d4d76..4d49ae2 100644 --- a/tst/test_listen.py +++ b/tst/test_listen.py @@ -36,7 +36,7 @@ from hypothesis.strategies import (builds, composite, data, datetimes, integers, lists, text) from hypothesis.provisional import domains, urls -from scadere.listen import body, entry, handle, path, xml +from scadere.listen import body, entry, handle, path, with_trailing_slash, xml ATOM_NAMESPACES = {'': 'http://www.w3.org/2005/Atom'} XHTML_NAMESPACES = {'': 'http://www.w3.org/1999/xhtml'} @@ -167,6 +167,7 @@ async def connect(socket): yield reader, writer finally: writer.close() + await writer.wait_closed() async def fetch_xml(socket, url, content_type): @@ -181,7 +182,8 @@ async def fetch_xml(socket, url, content_type): headers_bytes = await reader.readuntil(b'\r\n\r\n') headers = header_parser.parsebytes(headers_bytes) assert headers['Content-Type'] == content_type - content = await reader.read(int(headers['Content-Length'])) + content = await reader.read() + assert len(content) == int(headers['Content-Length']) return XML(content.decode(), xml_parser) @@ -213,7 +215,7 @@ async def test_http_200(base_url, certs): @example(type('//', (), {'draw': lambda *a, **kw: 'https://a.example//b'})) @given(data()) @settings(suppress_health_check=[HealthCheck.too_slow]) -async def test_http_404(drawer): +async def test_unrecognized_url(drawer): base_url = drawer.draw(urls(), label='base URL') url = drawer.draw(urls().filter(lambda url: not is_root(base_url, url)), label='request URL') @@ -224,12 +226,12 @@ async def test_http_404(drawer): async with connect(socket) as (reader, writer): writer.write(f'GET {urlsplit(url).path}\r\n'.encode()) await writer.drain() - response = await reader.read() + response = await reader.readuntil(b'\r\n') assert response == b'HTTP/1.1 404 Not Found\r\n' @given(urls(), text().filter(lambda method: not method.startswith('GET '))) -async def test_http_405(base_url, request): +async def test_unallowed_method(base_url, request): with tmp_cert_file(()) as cert_file: handler = partial(handle, cert_file, base_url) async with await start_server(handler, 'localhost') as server: @@ -237,5 +239,5 @@ async def test_http_405(base_url, request): async with connect(socket) as (reader, writer): writer.write(f'{request}\r\n'.encode()) await writer.drain() - response = await reader.read() + response = await reader.readuntil(b'\r\n') assert response == b'HTTP/1.1 405 Method Not Allowed\r\n' |