diff options
author | Nguyễn Gia Phong <cnx@loang.net> | 2025-05-29 11:34:27 +0900 |
---|---|---|
committer | Nguyễn Gia Phong <cnx@loang.net> | 2025-05-29 11:34:27 +0900 |
commit | a727804142db3258c5af8a0a31f79454418ccee2 (patch) | |
tree | f7d72af25c41e70c3a116e7727b3c5dea6a843aa | |
parent | 0f96928df28305b089f9e34055fdf835da368c40 (diff) | |
download | scadere-a727804142db3258c5af8a0a31f79454418ccee2.tar.gz |
Test dual-stack listen
-rw-r--r-- | tst/test_listen.py | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/tst/test_listen.py b/tst/test_listen.py index 72e4968..d4d4d76 100644 --- a/tst/test_listen.py +++ b/tst/test_listen.py @@ -199,14 +199,15 @@ async def test_http_200(base_url, certs): with tmp_cert_file(certs) as cert_file: handler = partial(handle, cert_file, base_url) async with await start_server(handler, 'localhost') as server: - socket, *_ = server.sockets - feed = await fetch_xml(socket, base_path, 'application/atom+xml') - for feed_entry in feed.findall('entry', ATOM_NAMESPACES): - link = feed_entry.find('link', ATOM_NAMESPACES).attrib - assert link['rel'] == 'alternate' - page = await fetch_xml(socket, link['href'], link['type']) - assert equal_xml(feed_entry.find('.//dl', XHTML_NAMESPACES), - page.find('.//dl', XHTML_NAMESPACES)) + for socket in server.sockets: + feed = await fetch_xml(socket, base_path, + 'application/atom+xml') + for e in feed.findall('entry', ATOM_NAMESPACES): + link = e.find('link', ATOM_NAMESPACES).attrib + assert link['rel'] == 'alternate' + page = await fetch_xml(socket, link['href'], link['type']) + assert equal_xml(e.find('.//dl', XHTML_NAMESPACES), + page.find('.//dl', XHTML_NAMESPACES)) @example(type('//', (), {'draw': lambda *a, **kw: 'https://a.example//b'})) @@ -219,11 +220,12 @@ async def test_http_404(drawer): with tmp_cert_file(()) as cert_file: handler = partial(handle, cert_file, base_url) async with await start_server(handler, 'localhost') as server: - async with connect(server.sockets[0]) as (reader, writer): - writer.write(f'GET {urlsplit(url).path}\r\n'.encode()) - await writer.drain() - response = await reader.read() - assert response == b'HTTP/1.1 404 Not Found\r\n' + for socket in server.sockets: + async with connect(socket) as (reader, writer): + writer.write(f'GET {urlsplit(url).path}\r\n'.encode()) + await writer.drain() + response = await reader.read() + assert response == b'HTTP/1.1 404 Not Found\r\n' @given(urls(), text().filter(lambda method: not method.startswith('GET '))) @@ -231,8 +233,9 @@ async def test_http_405(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: - async with connect(server.sockets[0]) as (reader, writer): - writer.write(f'{request}\r\n'.encode()) - await writer.drain() - response = await reader.read() - assert response == b'HTTP/1.1 405 Method Not Allowed\r\n' + for socket in server.sockets: + async with connect(socket) as (reader, writer): + writer.write(f'{request}\r\n'.encode()) + await writer.drain() + response = await reader.read() + assert response == b'HTTP/1.1 405 Method Not Allowed\r\n' |