Coverage for tests/test_http_connection_injection.py: 100%

24 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-04 08:29 +0000

1from fastapi import Depends, FastAPI 1abcdefg

2from fastapi.requests import HTTPConnection 1abcdefg

3from fastapi.testclient import TestClient 1abcdefg

4from starlette.websockets import WebSocket 1abcdefg

5 

6app = FastAPI() 1abcdefg

7app.state.value = 42 1abcdefg

8 

9 

10async def extract_value_from_http_connection(conn: HTTPConnection): 1abcdefg

11 return conn.app.state.value 1ohpiqjrksltmun

12 

13 

14@app.get("/http") 1abcdefg

15async def get_value_by_http(value: int = Depends(extract_value_from_http_connection)): 1abcdefg

16 return value 1opqrstu

17 

18 

19@app.websocket("/ws") 1abcdefg

20async def get_value_by_ws( 1abcdefg

21 websocket: WebSocket, value: int = Depends(extract_value_from_http_connection) 

22): 

23 await websocket.accept() 1hijklmn

24 await websocket.send_json(value) 1hijklmn

25 await websocket.close() 1hijklmn

26 

27 

28client = TestClient(app) 1abcdefg

29 

30 

31def test_value_extracting_by_http(): 1abcdefg

32 response = client.get("/http") 1opqrstu

33 assert response.status_code == 200 1opqrstu

34 assert response.json() == 42 1opqrstu

35 

36 

37def test_value_extracting_by_ws(): 1abcdefg

38 with client.websocket_connect("/ws") as websocket: 1hijklmn

39 assert websocket.receive_json() == 42 1hijklmn