Coverage for tests/test_dependency_security_overrides.py: 100%

30 statements  

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

1from typing import List, Tuple 1abcdefg

2 

3from fastapi import Depends, FastAPI, Security 1abcdefg

4from fastapi.security import SecurityScopes 1abcdefg

5from fastapi.testclient import TestClient 1abcdefg

6 

7app = FastAPI() 1abcdefg

8 

9 

10def get_user(required_scopes: SecurityScopes): 1abcdefg

11 return "john", required_scopes.scopes 1viwjxkylzmAnBo

12 

13 

14def get_user_override(required_scopes: SecurityScopes): 1abcdefgh

15 return "alice", required_scopes.scopes 1pqrstuh

16 

17 

18def get_data(): 1abcdefg

19 return [1, 2, 3] 1vpwqxrysztAuBh

20 

21 

22def get_data_override(): 1abcdefg

23 return [3, 4, 5] 1ijklmno

24 

25 

26@app.get("/user") 1abcdefg

27def read_user( 1abcdefg

28 user_data: Tuple[str, List[str]] = Security(get_user, scopes=["foo", "bar"]), 

29 data: List[int] = Depends(get_data), 

30): 

31 return {"user": user_data[0], "scopes": user_data[1], "data": data} 1vipwjqxkrylszmtAnuBoh

32 

33 

34client = TestClient(app) 1abcdefg

35 

36 

37def test_normal(): 1abcdefg

38 response = client.get("/user") 1vwxyzAB

39 assert response.json() == { 1vwxyzAB

40 "user": "john", 

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

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

43 } 

44 

45 

46def test_override_data(): 1abcdefg

47 app.dependency_overrides[get_data] = get_data_override 1ijklmno

48 response = client.get("/user") 1ijklmno

49 assert response.json() == { 1ijklmno

50 "user": "john", 

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

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

53 } 

54 app.dependency_overrides = {} 1ijklmno

55 

56 

57def test_override_security(): 1abcdefg

58 app.dependency_overrides[get_user] = get_user_override 1pqrstuh

59 response = client.get("/user") 1pqrstuh

60 assert response.json() == { 1pqrstuh

61 "user": "alice", 

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

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

64 } 

65 app.dependency_overrides = {} 1pqrstuh