1 changed files with 62 additions and 0 deletions
@ -0,0 +1,62 @@ |
|||
import pytest |
|||
from fastapi import BackgroundTasks, FastAPI, Request, Response, WebSocket |
|||
from fastapi.security import SecurityScopes |
|||
from fastapi.testclient import TestClient |
|||
|
|||
app = FastAPI() |
|||
|
|||
|
|||
@app.get("/request") |
|||
def request(r1: Request, r2: Request) -> str: |
|||
assert r1 is not None |
|||
assert r1 is r2 |
|||
return "success" |
|||
|
|||
|
|||
@app.get("/response") |
|||
def response(r1: Response, r2: Response) -> str: |
|||
assert r1 is not None |
|||
assert r1 is r2 |
|||
return "success" |
|||
|
|||
|
|||
@app.get("/background-tasks") |
|||
def background_tasks(t1: BackgroundTasks, t2: BackgroundTasks) -> str: |
|||
assert t1 is not None |
|||
assert t1 is t2 |
|||
return "success" |
|||
|
|||
|
|||
@app.get("/websocket") |
|||
def websocket(ws1: WebSocket, ws2: WebSocket) -> str: |
|||
assert ws1 is not None |
|||
assert ws1 is ws2 |
|||
return "success" |
|||
|
|||
|
|||
@app.get("/security-scopes") |
|||
def security_scopes(sc1: SecurityScopes, sc2: SecurityScopes) -> str: |
|||
assert sc1 is not None |
|||
assert sc1 is sc2 |
|||
return "success" |
|||
|
|||
|
|||
client = TestClient(app) |
|||
|
|||
|
|||
@pytest.mark.parametrize( |
|||
"url", |
|||
( |
|||
"/request", |
|||
"/response", |
|||
"/background-tasks", |
|||
"/security-scopes", |
|||
), |
|||
) |
|||
def test_duplicate_special_dependency(url: str) -> None: |
|||
assert client.get(url).text == '"success"' |
|||
|
|||
|
|||
def test_duplicate_websocket_dependency() -> None: |
|||
# Raises exception if connect fails. |
|||
client.websocket_connect("/websocket") |
Loading…
Reference in new issue