about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2025-05-29 11:34:27 +0900
committerNguyễn Gia Phong <cnx@loang.net>2025-05-29 11:34:27 +0900
commita727804142db3258c5af8a0a31f79454418ccee2 (patch)
treef7d72af25c41e70c3a116e7727b3c5dea6a843aa
parent0f96928df28305b089f9e34055fdf835da368c40 (diff)
downloadscadere-a727804142db3258c5af8a0a31f79454418ccee2.tar.gz
Test dual-stack listen
-rw-r--r--tst/test_listen.py39
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'