Browse Source

tests: added tests to verify dependencies scope handling when defined in APIRouter

pull/14301/head
luzzodev 9 months ago
parent
commit
7596910ee4
  1. 78
      tests/test_dependency_yield_scope_api_router.py

78
tests/test_dependency_yield_scope_api_router.py

@ -0,0 +1,78 @@
from typing import Any
from fastapi import APIRouter, Depends, FastAPI, HTTPException
from fastapi.testclient import TestClient
def broken_dependency() -> Any:
yield "s"
raise RuntimeError("Caught exception after yield")
def caught_dependency() -> Any:
yield "s"
raise HTTPException(status_code=503, detail="Something went wrong")
app = FastAPI()
r_caught_function = APIRouter(
prefix="/scope/function/caught",
dependencies=[Depends(caught_dependency, scope="function")],
)
r_broken_function = APIRouter(
prefix="/scope/function/broken",
dependencies=[Depends(broken_dependency, scope="function")],
)
r_caught_request = APIRouter(
prefix="/scope/request/caught",
dependencies=[Depends(caught_dependency, scope="request")],
)
r_broken_request = APIRouter(
prefix="/scope/request/broken",
dependencies=[Depends(broken_dependency, scope="request")],
)
@r_caught_function.get("/orders")
@r_broken_function.get("/orders")
@r_caught_request.get("/orders")
@r_broken_request.get("/orders")
def get_orders() -> Any:
return {"message": "Maybe not here!"}
app.include_router(r_caught_function)
app.include_router(r_broken_function)
app.include_router(r_caught_request)
app.include_router(r_broken_request)
def test_caught_dependency_scope_function():
with TestClient(app, raise_server_exceptions=False) as client:
response = client.get("/scope/function/caught/orders")
assert response.status_code == 503
assert response.json() == {"detail": "Something went wrong"}
def test_broken_dependency_scope_function():
with TestClient(app, raise_server_exceptions=False) as client:
response = client.get("/scope/function/broken/orders")
assert response.status_code == 500
assert response.content == b"Internal Server Error"
def test_caught_dependency_scope_request():
with TestClient(app, raise_server_exceptions=False) as client:
response = client.get("/scope/request/caught/orders")
assert response.status_code == 200
assert response.json() == {"message": "Maybe not here!"}
def test_broken_dependency_scope_request():
with TestClient(app, raise_server_exceptions=False) as client:
response = client.get("/scope/request/broken/orders")
assert response.status_code == 200
assert response.json() == {"message": "Maybe not here!"}
Loading…
Cancel
Save