from fastapi.utils import generate_unique_id
from starlette.applications import Starlette
from starlette.datastructures import State
-from starlette.exceptions import ExceptionMiddleware, HTTPException
+from starlette.exceptions import HTTPException
from starlette.middleware import Middleware
from starlette.middleware.errors import ServerErrorMiddleware
+from starlette.middleware.exceptions import ExceptionMiddleware
from starlette.requests import Request
from starlette.responses import HTMLResponse, JSONResponse, Response
from starlette.routing import BaseRoute
self.auto_error = auto_error
async def __call__(self, request: Request) -> Optional[str]:
- api_key: str = request.query_params.get(self.model.name)
+ api_key = request.query_params.get(self.model.name)
if not api_key:
if self.auto_error:
raise HTTPException(
"Topic :: Internet :: WWW/HTTP",
]
dependencies = [
- "starlette==0.19.1",
+ "starlette==0.20.4",
"pydantic >=1.6.2,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0",
]
dynamic = ["version"]
import pytest
from fastapi.testclient import TestClient
-from ...utils import needs_py37
-
openapi_schema = {
"openapi": "3.0.2",
"info": {"title": "FastAPI", "version": "0.1.0"},
test_db.unlink()
-@needs_py37
def test_openapi_schema(client):
response = client.get("/openapi.json")
assert response.status_code == 200, response.text
assert response.json() == openapi_schema
-@needs_py37
def test_create_user(client):
test_user = {"email": "johndoe@example.com", "password": "secret"}
response = client.post("/users/", json=test_user)
assert response.status_code == 400, response.text
-@needs_py37
def test_get_user(client):
response = client.get("/users/1")
assert response.status_code == 200, response.text
assert "id" in data
-@needs_py37
def test_inexistent_user(client):
response = client.get("/users/999")
assert response.status_code == 404, response.text
-@needs_py37
def test_get_users(client):
response = client.get("/users/")
assert response.status_code == 200, response.text
time.sleep = MagicMock()
-@needs_py37
def test_get_slowusers(client):
response = client.get("/slowusers/")
assert response.status_code == 200, response.text
assert "id" in data[0]
-@needs_py37
def test_create_item(client):
item = {"title": "Foo", "description": "Something that fights"}
response = client.post("/users/1/items/", json=item)
assert item_to_check["description"] == item["description"]
-@needs_py37
def test_read_items(client):
response = client.get("/items/")
assert response.status_code == 200, response.text
from fastapi.testclient import TestClient
from pydantic import BaseModel
-from .utils import needs_py37
-
-# In Python 3.6:
-# u = Union[ExtendedItem, Item] == __main__.Item
-
-# But in Python 3.7:
-# u = Union[ExtendedItem, Item] == typing.Union[__main__.ExtendedItem, __main__.Item]
-
app = FastAPI()
}
-@needs_py37
def test_inherited_item_openapi_schema():
response = client.get("/openapi.json")
assert response.status_code == 200, response.text
assert response.json() == inherited_item_openapi_schema
-@needs_py37
def test_post_extended_item():
response = client.post("/items/", json={"name": "Foo", "age": 5})
assert response.status_code == 200, response.text
assert response.json() == {"item": {"name": "Foo", "age": 5}}
-@needs_py37
def test_post_item():
response = client.post("/items/", json={"name": "Foo"})
assert response.status_code == 200, response.text
import pytest
-needs_py37 = pytest.mark.skipif(sys.version_info < (3, 7), reason="requires python3.7+")
needs_py39 = pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9+")
needs_py310 = pytest.mark.skipif(
sys.version_info < (3, 10), reason="requires python3.10+"