Coverage for tests / test_dependency_security_overrides.py: 100%

29 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-02-12 18:15 +0000

1from fastapi import Depends, FastAPI, Security 1abcd

2from fastapi.security import SecurityScopes 1abcd

3from fastapi.testclient import TestClient 1abcd

4 

5app = FastAPI() 1abcd

6 

7 

8def get_user(required_scopes: SecurityScopes): 1abcd

9 return "john", required_scopes.scopes 1kflgmh

10 

11 

12def get_user_override(required_scopes: SecurityScopes): 1abecd

13 return "alice", required_scopes.scopes 1iej

14 

15 

16def get_data(): 1abcd

17 return [1, 2, 3] 1kilemj

18 

19 

20def get_data_override(): 1abcd

21 return [3, 4, 5] 1fgh

22 

23 

24@app.get("/user") 1abcd

25def read_user( 1abcd

26 user_data: tuple[str, list[str]] = Security(get_user, scopes=["foo", "bar"]), 

27 data: list[int] = Depends(get_data), 

28): 

29 return {"user": user_data[0], "scopes": user_data[1], "data": data} 1kfilgemhj

30 

31 

32client = TestClient(app) 1abcd

33 

34 

35def test_normal(): 1abcd

36 response = client.get("/user") 1klm

37 assert response.json() == { 1klm

38 "user": "john", 

39 "scopes": ["foo", "bar"], 

40 "data": [1, 2, 3], 

41 } 

42 

43 

44def test_override_data(): 1abcd

45 app.dependency_overrides[get_data] = get_data_override 1fgh

46 response = client.get("/user") 1fgh

47 assert response.json() == { 1fgh

48 "user": "john", 

49 "scopes": ["foo", "bar"], 

50 "data": [3, 4, 5], 

51 } 

52 app.dependency_overrides = {} 1fgh

53 

54 

55def test_override_security(): 1abcd

56 app.dependency_overrides[get_user] = get_user_override 1iej

57 response = client.get("/user") 1iej

58 assert response.json() == { 1iej

59 "user": "alice", 

60 "scopes": ["foo", "bar"], 

61 "data": [1, 2, 3], 

62 } 

63 app.dependency_overrides = {} 1iej