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
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
1from typing import List, Tuple 1abcdefg
3from fastapi import Depends, FastAPI, Security 1abcdefg
4from fastapi.security import SecurityScopes 1abcdefg
5from fastapi.testclient import TestClient 1abcdefg
7app = FastAPI() 1abcdefg
10def get_user(required_scopes: SecurityScopes): 1abcdefg
11 return "john", required_scopes.scopes 1viwjxkylzmAnBo
14def get_user_override(required_scopes: SecurityScopes): 1abcdefgh
15 return "alice", required_scopes.scopes 1pqrstuh
18def get_data(): 1abcdefg
19 return [1, 2, 3] 1vpwqxrysztAuBh
22def get_data_override(): 1abcdefg
23 return [3, 4, 5] 1ijklmno
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
34client = TestClient(app) 1abcdefg
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 }
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
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