Coverage for tests / test_ws_dependencies.py: 100%
46 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-12 18:15 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-12 18:15 +0000
1import json 1abcd
2from typing import Annotated 1abcd
4from fastapi import APIRouter, Depends, FastAPI, WebSocket 1abcd
5from fastapi.testclient import TestClient 1abcd
8def dependency_list() -> list[str]: 1abcd
9 return [] 1efghijklm
12DepList = Annotated[list[str], Depends(dependency_list)] 1abcd
15def create_dependency(name: str): 1abcd
16 def fun(deps: DepList): 1abcd
17 deps.append(name) 1efghijklm
19 return Depends(fun) 1abcd
22router = APIRouter(dependencies=[create_dependency("router")]) 1abcd
23prefix_router = APIRouter(dependencies=[create_dependency("prefix_router")]) 1abcd
24app = FastAPI(dependencies=[create_dependency("app")]) 1abcd
27@app.websocket("/", dependencies=[create_dependency("index")]) 1abcd
28async def index(websocket: WebSocket, deps: DepList): 1abcd
29 await websocket.accept() 1ehk
30 await websocket.send_text(json.dumps(deps)) 1ehk
31 await websocket.close() 1ehk
34@router.websocket("/router", dependencies=[create_dependency("routerindex")]) 1abcd
35async def routerindex(websocket: WebSocket, deps: DepList): 1abcd
36 await websocket.accept() 1fil
37 await websocket.send_text(json.dumps(deps)) 1fil
38 await websocket.close() 1fil
41@prefix_router.websocket("/", dependencies=[create_dependency("routerprefixindex")]) 1abcd
42async def routerprefixindex(websocket: WebSocket, deps: DepList): 1abcd
43 await websocket.accept() 1gjm
44 await websocket.send_text(json.dumps(deps)) 1gjm
45 await websocket.close() 1gjm
48app.include_router(router, dependencies=[create_dependency("router2")]) 1abcd
49app.include_router( 1abcd
50 prefix_router, prefix="/prefix", dependencies=[create_dependency("prefix_router2")]
51)
54def test_index(): 1abcd
55 client = TestClient(app) 1ehk
56 with client.websocket_connect("/") as websocket: 1ehk
57 data = json.loads(websocket.receive_text()) 1ehk
58 assert data == ["app", "index"] 1ehk
61def test_routerindex(): 1abcd
62 client = TestClient(app) 1fil
63 with client.websocket_connect("/router") as websocket: 1fil
64 data = json.loads(websocket.receive_text()) 1fil
65 assert data == ["app", "router2", "router", "routerindex"] 1fil
68def test_routerprefixindex(): 1abcd
69 client = TestClient(app) 1gjm
70 with client.websocket_connect("/prefix/") as websocket: 1gjm
71 data = json.loads(websocket.receive_text()) 1gjm
72 assert data == ["app", "prefix_router2", "prefix_router", "routerprefixindex"] 1gjm