Coverage for tests/test_ws_dependencies.py: 100%
47 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
1import json 1abcdefg
2from typing import List 1abcdefg
4from fastapi import APIRouter, Depends, FastAPI, WebSocket 1abcdefg
5from fastapi.testclient import TestClient 1abcdefg
6from typing_extensions import Annotated 1abcdefg
9def dependency_list() -> List[str]: 1abcdefg
10 return [] 1hijklmnopqrstuvwxyzAB
13DepList = Annotated[List[str], Depends(dependency_list)] 1abcdefg
16def create_dependency(name: str): 1abcdefg
17 def fun(deps: DepList): 1abcdefg
18 deps.append(name) 1hijklmnopqrstuvwxyzAB
20 return Depends(fun) 1abcdefg
23router = APIRouter(dependencies=[create_dependency("router")]) 1abcdefg
24prefix_router = APIRouter(dependencies=[create_dependency("prefix_router")]) 1abcdefg
25app = FastAPI(dependencies=[create_dependency("app")]) 1abcdefg
28@app.websocket("/", dependencies=[create_dependency("index")]) 1abcdefg
29async def index(websocket: WebSocket, deps: DepList): 1abcdefg
30 await websocket.accept() 1hknqtwz
31 await websocket.send_text(json.dumps(deps)) 1hknqtwz
32 await websocket.close() 1hknqtwz
35@router.websocket("/router", dependencies=[create_dependency("routerindex")]) 1abcdefg
36async def routerindex(websocket: WebSocket, deps: DepList): 1abcdefg
37 await websocket.accept() 1iloruxA
38 await websocket.send_text(json.dumps(deps)) 1iloruxA
39 await websocket.close() 1iloruxA
42@prefix_router.websocket("/", dependencies=[create_dependency("routerprefixindex")]) 1abcdefg
43async def routerprefixindex(websocket: WebSocket, deps: DepList): 1abcdefg
44 await websocket.accept() 1jmpsvyB
45 await websocket.send_text(json.dumps(deps)) 1jmpsvyB
46 await websocket.close() 1jmpsvyB
49app.include_router(router, dependencies=[create_dependency("router2")]) 1abcdefg
50app.include_router( 1abcdefg
51 prefix_router, prefix="/prefix", dependencies=[create_dependency("prefix_router2")]
52)
55def test_index(): 1abcdefg
56 client = TestClient(app) 1hknqtwz
57 with client.websocket_connect("/") as websocket: 1hknqtwz
58 data = json.loads(websocket.receive_text()) 1hknqtwz
59 assert data == ["app", "index"] 1hknqtwz
62def test_routerindex(): 1abcdefg
63 client = TestClient(app) 1iloruxA
64 with client.websocket_connect("/router") as websocket: 1iloruxA
65 data = json.loads(websocket.receive_text()) 1iloruxA
66 assert data == ["app", "router2", "router", "routerindex"] 1iloruxA
69def test_routerprefixindex(): 1abcdefg
70 client = TestClient(app) 1jmpsvyB
71 with client.websocket_connect("/prefix/") as websocket: 1jmpsvyB
72 data = json.loads(websocket.receive_text()) 1jmpsvyB
73 assert data == ["app", "prefix_router2", "prefix_router", "routerprefixindex"] 1jmpsvyB