about summary refs log tree commit diff
path: root/tst/test_listen.py
diff options
context:
space:
mode:
Diffstat (limited to 'tst/test_listen.py')
-rw-r--r--tst/test_listen.py14
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'