committed by
GitHub
2 changed files with 66 additions and 0 deletions
@ -0,0 +1,65 @@ |
|||
from typing import List, Tuple |
|||
|
|||
from fastapi import Depends, FastAPI, Security |
|||
from fastapi.security import SecurityScopes |
|||
from fastapi.testclient import TestClient |
|||
|
|||
app = FastAPI() |
|||
|
|||
|
|||
def get_user(required_scopes: SecurityScopes): |
|||
return "john", required_scopes.scopes |
|||
|
|||
|
|||
def get_user_override(required_scopes: SecurityScopes): |
|||
return "alice", required_scopes.scopes |
|||
|
|||
|
|||
def get_data(): |
|||
return [1, 2, 3] |
|||
|
|||
|
|||
def get_data_override(): |
|||
return [3, 4, 5] |
|||
|
|||
|
|||
@app.get("/user") |
|||
def read_user( |
|||
user_data: Tuple[str, List[str]] = Security(get_user, scopes=["foo", "bar"]), |
|||
data: List[int] = Depends(get_data), |
|||
): |
|||
return {"user": user_data[0], "scopes": user_data[1], "data": data} |
|||
|
|||
|
|||
client = TestClient(app) |
|||
|
|||
|
|||
def test_normal(): |
|||
response = client.get("/user") |
|||
assert response.json() == { |
|||
"user": "john", |
|||
"scopes": ["foo", "bar"], |
|||
"data": [1, 2, 3], |
|||
} |
|||
|
|||
|
|||
def test_override_data(): |
|||
app.dependency_overrides[get_data] = get_data_override |
|||
response = client.get("/user") |
|||
assert response.json() == { |
|||
"user": "john", |
|||
"scopes": ["foo", "bar"], |
|||
"data": [3, 4, 5], |
|||
} |
|||
app.dependency_overrides = {} |
|||
|
|||
|
|||
def test_override_security(): |
|||
app.dependency_overrides[get_user] = get_user_override |
|||
response = client.get("/user") |
|||
assert response.json() == { |
|||
"user": "alice", |
|||
"scopes": ["foo", "bar"], |
|||
"data": [1, 2, 3], |
|||
} |
|||
app.dependency_overrides = {} |
Loading…
Reference in new issue