diff --git a/umap/tests/integration/conftest.py b/umap/tests/integration/conftest.py index d72886f8..bbb202d1 100644 --- a/umap/tests/integration/conftest.py +++ b/umap/tests/integration/conftest.py @@ -3,6 +3,7 @@ import re import pytest from daphne.testing import DaphneProcess +from django.contrib.staticfiles.handlers import ASGIStaticFilesHandler from playwright.sync_api import expect from umap.asgi import application @@ -68,13 +69,11 @@ def login(new_page, settings, live_server): @pytest.fixture(scope="function") -def asgi_live_server(request, settings): - request.getfixturevalue("transactional_db") - server = DaphneProcess("localhost", lambda: application) +def asgi_live_server(request, live_server): + server = DaphneProcess("localhost", lambda: ASGIStaticFilesHandler(application)) server.start() server.ready.wait() port = server.port.value - settings.WEBSOCKET_FRONT_URI = f"ws://localhost:{port}/ws/sync/{{id}}/" server.url = f"http://localhost:{port}" yield server diff --git a/umap/tests/integration/test_websocket_sync.py b/umap/tests/integration/test_websocket_sync.py index 569bca30..0a2306cf 100644 --- a/umap/tests/integration/test_websocket_sync.py +++ b/umap/tests/integration/test_websocket_sync.py @@ -11,9 +11,7 @@ DATALAYER_UPDATE = re.compile(r".*/datalayer/update/.*") @pytest.mark.xdist_group(name="websockets") -def test_websocket_connection_can_sync_markers( - new_page, live_server, asgi_live_server, tilelayer -): +def test_websocket_connection_can_sync_markers(new_page, asgi_live_server, tilelayer): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True map.save() @@ -21,9 +19,9 @@ def test_websocket_connection_can_sync_markers( # Create two tabs peerA = new_page("Page A") - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerB = new_page("Page B") - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") a_marker_pane = peerA.locator(".leaflet-marker-pane > div") b_marker_pane = peerB.locator(".leaflet-marker-pane > div") @@ -79,9 +77,7 @@ def test_websocket_connection_can_sync_markers( @pytest.mark.xdist_group(name="websockets") -def test_websocket_connection_can_sync_polygons( - context, live_server, asgi_live_server, tilelayer -): +def test_websocket_connection_can_sync_polygons(context, asgi_live_server, tilelayer): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True map.save() @@ -89,9 +85,9 @@ def test_websocket_connection_can_sync_polygons( # Create two tabs peerA = context.new_page() - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerB = context.new_page() - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") b_map_el = peerB.locator("#map") @@ -164,7 +160,7 @@ def test_websocket_connection_can_sync_polygons( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_map_properties( - new_page, live_server, asgi_live_server, tilelayer + new_page, asgi_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -173,9 +169,9 @@ def test_websocket_connection_can_sync_map_properties( # Create two tabs peerA = new_page() - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerB = new_page() - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") # Name change is synced peerA.get_by_role("link", name="Edit map name and caption").click() @@ -198,7 +194,7 @@ def test_websocket_connection_can_sync_map_properties( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_datalayer_properties( - new_page, live_server, asgi_live_server, tilelayer + new_page, asgi_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -207,9 +203,9 @@ def test_websocket_connection_can_sync_datalayer_properties( # Create two tabs peerA = new_page() - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerB = new_page() - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") # Layer addition, name and type are synced peerA.get_by_role("link", name="Manage layers").click() @@ -227,7 +223,7 @@ def test_websocket_connection_can_sync_datalayer_properties( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_cloned_polygons( - context, live_server, asgi_live_server, tilelayer + context, asgi_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -236,9 +232,9 @@ def test_websocket_connection_can_sync_cloned_polygons( # Create two tabs peerA = context.new_page() - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerB = context.new_page() - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") b_map_el = peerB.locator("#map") @@ -290,7 +286,7 @@ def test_websocket_connection_can_sync_cloned_polygons( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_late_joining_peer( - new_page, live_server, asgi_live_server, tilelayer + new_page, asgi_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -299,7 +295,7 @@ def test_websocket_connection_can_sync_late_joining_peer( # Create first peer (A) and have it join immediately peerA = new_page("Page A") - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") # Add a marker from peer A a_create_marker = peerA.get_by_title("Draw a marker") @@ -326,7 +322,7 @@ def test_websocket_connection_can_sync_late_joining_peer( # Now create peer B and have it join peerB = new_page("Page B") - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") # Check if peer B has received all the updates b_marker_pane = peerB.locator(".leaflet-marker-pane > div") @@ -351,7 +347,7 @@ def test_websocket_connection_can_sync_late_joining_peer( @pytest.mark.xdist_group(name="websockets") -def test_should_sync_datalayers(new_page, live_server, asgi_live_server, tilelayer): +def test_should_sync_datalayers(new_page, asgi_live_server, tilelayer): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True map.save() @@ -360,9 +356,9 @@ def test_should_sync_datalayers(new_page, live_server, asgi_live_server, tilelay # Create two tabs peerA = new_page("Page A") - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerB = new_page("Page B") - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") # Create a new layer from peerA peerA.get_by_role("link", name="Manage layers").click() @@ -423,9 +419,7 @@ def test_should_sync_datalayers(new_page, live_server, asgi_live_server, tilelay @pytest.mark.xdist_group(name="websockets") -def test_should_sync_datalayers_delete( - new_page, live_server, websocket_server, tilelayer -): +def test_should_sync_datalayers_delete(new_page, asgi_live_server, tilelayer): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True map.save() @@ -464,9 +458,9 @@ def test_should_sync_datalayers_delete( # Create two tabs peerA = new_page("Page A") - peerA.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerA.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerB = new_page("Page B") - peerB.goto(f"{live_server.url}{map.get_absolute_url()}?edit") + peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit") peerA.get_by_role("button", name="Open browser").click() expect(peerA.get_by_text("datalayer 1")).to_be_visible() @@ -489,12 +483,10 @@ def test_should_sync_datalayers_delete( @pytest.mark.xdist_group(name="websockets") -def test_create_and_sync_map( - new_page, live_server, asgi_live_server, tilelayer, login, user -): +def test_create_and_sync_map(new_page, asgi_live_server, tilelayer, login, user): # Create a syncable map with peerA peerA = login(user, prefix="Page A") - peerA.goto(f"{live_server.url}/en/map/new/") + peerA.goto(f"{asgi_live_server.url}/en/map/new/") with peerA.expect_response(re.compile("./map/create/.*")): peerA.get_by_role("button", name="Save Draft").click() peerA.get_by_role("link", name="Map advanced properties").click()