diff --git a/tests/test_dependency_wrapped.py b/tests/test_dependency_wrapped.py index a4044112a2..a593a4135f 100644 --- a/tests/test_dependency_wrapped.py +++ b/tests/test_dependency_wrapped.py @@ -2,6 +2,7 @@ import inspect import sys from collections.abc import AsyncGenerator, Generator from functools import wraps +from typing import Annotated, ForwardRef import pytest from fastapi import Depends, FastAPI @@ -447,3 +448,22 @@ def test_class_dependency(route): response = client.get(route) assert response.status_code == 200, response.text assert response.json() is True + + +def test_annotated_forwardref_dependency(): + app = FastAPI() + + User = ForwardRef("User") + + def get_user() -> "User": + return {"name": "amulya"} + + @app.get("/") + def read_user(user: Annotated[User, Depends(get_user)]): + return user + + client = TestClient(app) + response = client.get("/") + + assert response.status_code == 200 + assert response.json() == {"name": "amulya"} diff --git a/tests/test_forwardref_in_annotation.py b/tests/test_forwardref_in_annotation.py new file mode 100644 index 0000000000..9ccc73f508 --- /dev/null +++ b/tests/test_forwardref_in_annotation.py @@ -0,0 +1,23 @@ +from typing import Annotated, ForwardRef + +from fastapi import Depends, FastAPI +from fastapi.testclient import TestClient + + +def test_annotated_forwardref_dependency(): + app = FastAPI() + + User = ForwardRef("User") + + def get_user() -> "User": + return {"name": "amulya"} + + @app.get("/") + def read_user(user: Annotated[User, Depends(get_user)]): + return user + + client = TestClient(app) + response = client.get("/") + + assert response.status_code == 200 + assert response.json() == {"name": "amulya"}