2 changed files with 53 additions and 0 deletions
@ -0,0 +1,48 @@ |
|||
from fastapi import APIRouter, FastAPI |
|||
from fastapi.responses import JSONResponse |
|||
from fastapi.testclient import TestClient |
|||
|
|||
|
|||
def test_mount_subapp_under_router_prefix() -> None: |
|||
app = FastAPI() |
|||
api_router = APIRouter(prefix="/api") |
|||
|
|||
@api_router.get("/ping") |
|||
def ping() -> dict[str, str]: |
|||
return {"message": "pong"} |
|||
|
|||
sub_app = FastAPI() |
|||
|
|||
@sub_app.get("/sub") |
|||
def read_sub() -> dict[str, str]: |
|||
return {"message": "Hello World from sub API"} |
|||
|
|||
api_router.mount("/subapi", sub_app) |
|||
app.include_router(api_router) |
|||
|
|||
client = TestClient(app) |
|||
|
|||
response = client.get("/api/ping") |
|||
assert response.status_code == 200, response.text |
|||
assert response.json() == {"message": "pong"} |
|||
|
|||
mounted_response = client.get("/api/subapi/sub") |
|||
assert mounted_response.status_code == 200, mounted_response.text |
|||
assert mounted_response.json() == {"message": "Hello World from sub API"} |
|||
|
|||
|
|||
def test_mount_starlette_route_under_router_prefix() -> None: |
|||
app = FastAPI() |
|||
router = APIRouter(prefix="/v1") |
|||
|
|||
def plain_asgi_app(scope, receive, send): |
|||
response = JSONResponse({"ok": True}) |
|||
return response(scope, receive, send) |
|||
|
|||
router.mount("/internal", plain_asgi_app, name="internal") |
|||
app.include_router(router, prefix="/api") |
|||
|
|||
client = TestClient(app) |
|||
response = client.get("/api/v1/internal") |
|||
assert response.status_code == 200, response.text |
|||
assert response.json() == {"ok": True} |
|||
Loading…
Reference in new issue