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

1import json 1abcdefg

2from typing import List 1abcdefg

3 

4from fastapi import APIRouter, Depends, FastAPI, WebSocket 1abcdefg

5from fastapi.testclient import TestClient 1abcdefg

6from typing_extensions import Annotated 1abcdefg

7 

8 

9def dependency_list() -> List[str]: 1abcdefg

10 return [] 1hijklmnopqrstuvwxyzAB

11 

12 

13DepList = Annotated[List[str], Depends(dependency_list)] 1abcdefg

14 

15 

16def create_dependency(name: str): 1abcdefg

17 def fun(deps: DepList): 1abcdefg

18 deps.append(name) 1hijklmnopqrstuvwxyzAB

19 

20 return Depends(fun) 1abcdefg

21 

22 

23router = APIRouter(dependencies=[create_dependency("router")]) 1abcdefg

24prefix_router = APIRouter(dependencies=[create_dependency("prefix_router")]) 1abcdefg

25app = FastAPI(dependencies=[create_dependency("app")]) 1abcdefg

26 

27 

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

33 

34 

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

40 

41 

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

47 

48 

49app.include_router(router, dependencies=[create_dependency("router2")]) 1abcdefg

50app.include_router( 1abcdefg

51 prefix_router, prefix="/prefix", dependencies=[create_dependency("prefix_router2")] 

52) 

53 

54 

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

60 

61 

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

67 

68 

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