diff --git a/piccolo/apps/asgi/commands/new.py b/piccolo/apps/asgi/commands/new.py index 5c83eca0c..85ceee021 100644 --- a/piccolo/apps/asgi/commands/new.py +++ b/piccolo/apps/asgi/commands/new.py @@ -12,10 +12,10 @@ SERVERS = ["uvicorn", "Hypercorn", "granian"] ROUTER_DEPENDENCIES = { "starlette": ["starlette"], - "fastapi": ["fastapi>=0.112.1"], + "fastapi": ["fastapi"], "blacksheep": ["blacksheep"], "litestar": ["litestar"], - "esmerald": ["esmerald==3.3.0"], + "esmerald": ["esmerald"], "lilya": ["lilya"], } ROUTERS = list(ROUTER_DEPENDENCIES.keys()) diff --git a/requirements/test-requirements.txt b/requirements/test-requirements.txt index 2f350ed31..006d8f2d9 100644 --- a/requirements/test-requirements.txt +++ b/requirements/test-requirements.txt @@ -1,4 +1,5 @@ coveralls==3.3.1 +httpx==0.27.2 pytest-cov==3.0.0 pytest==6.2.5 python-dateutil==2.8.2 diff --git a/tests/apps/asgi/commands/files/dummy_server.py b/tests/apps/asgi/commands/files/dummy_server.py index 3c3250776..9b83470a3 100644 --- a/tests/apps/asgi/commands/files/dummy_server.py +++ b/tests/apps/asgi/commands/files/dummy_server.py @@ -3,8 +3,10 @@ import sys import typing as t +from httpx import AsyncClient -def dummy_server(app: t.Union[str, t.Callable] = "app:app"): + +async def dummy_server(app: t.Union[str, t.Callable] = "app:app"): """ A very simplistic ASGI server. It's used to run the generated ASGI applications in unit tests. @@ -20,33 +22,13 @@ def dummy_server(app: t.Union[str, t.Callable] = "app:app"): if isinstance(app, str): path, app_name = app.rsplit(":") module = importlib.import_module(path) - app = getattr(module, app_name) - - async def send(message): - if message["type"] == "http.response.start": - if message["status"] == 200: - print("Received 200") - else: - sys.exit("200 not received from app") - - async def receive(): - pass - - scope = { - "scheme": "http", - "type": "http", - "path": "/", - "raw_path": b"/", - "method": "GET", - "query_string": b"", - "headers": [], - } - if callable(app): - asyncio.run(app(scope, receive, send)) - print("Exiting dummy server ...") - else: - sys.exit("The app isn't callable!") + app = t.cast(t.Callable, getattr(module, app_name)) + + async with AsyncClient(app=app) as client: + response = await client.get("http://localhost:8000") + if response.status_code != 200: + sys.exit("The app isn't callable!") if __name__ == "__main__": - dummy_server() + asyncio.run(dummy_server())