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