Browse Source

🎨 Auto format

pull/14782/head
pre-commit-ci-lite[bot] 6 months ago
committed by GitHub
parent
commit
7cd6cb6bfb
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 7
      docs_src/route_middleware/tutorial001.py
  2. 8
      fastapi/route_middleware.py
  3. 11
      tests/test_route_middleware.py

7
docs_src/route_middleware/tutorial001.py

@ -1,16 +1,15 @@
import pytest
from fastapi.testclient import TestClient
from fastapi import FastAPI, Request
from fastapi.route_middleware import route_middleware, verify_jwt, log_route
from fastapi.route_middleware import log_route, route_middleware, verify_jwt
app = FastAPI()
@app.post("/secure")
@route_middleware(verify_jwt, log_route)
async def secure_route(req: Request, is_true: bool):
return {"status": "ok", "is_true": is_true, "user": req.user}
@app.post("/open")
async def open_route(is_true: bool):
return {"status": "open", "is_true": is_true}

8
fastapi/route_middleware.py

@ -1,7 +1,9 @@
from functools import wraps
from fastapi import Request
from typing import Callable
from fastapi import Request
def route_middleware(*middlewares: Callable):
def decorator(route_func: Callable):
@wraps(route_func)
@ -18,8 +20,8 @@ def route_middleware(*middlewares:Callable):
return await route_func(*args, **kwargs)
return wrapper
return decorator
return decorator
# Example middlewares
@ -28,7 +30,9 @@ async def verify_jwt(req: Request):
if not (req.query_params.get("is_true") == "true"):
req.user = {"name": "xyz", "admin": True}
from fastapi import HTTPException, status
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid JWT")
def log_route(req: Request):
print(f"[LOG] Path: {req.url.path}")

11
tests/test_route_middleware.py

@ -1,29 +1,34 @@
import pytest
from fastapi.testclient import TestClient
from fastapi import FastAPI, Request
from fastapi.route_middleware import route_middleware, verify_jwt, log_route
from fastapi.route_middleware import log_route, route_middleware, verify_jwt
from fastapi.testclient import TestClient
app = FastAPI()
@app.post("/secure")
@route_middleware(verify_jwt, log_route)
async def secure_route(req: Request, is_true: bool):
return {"status": "ok", "is_true": is_true, "user": req.user}
@app.post("/open")
async def open_route(is_true: bool):
return {"status": "open", "is_true": is_true}
client = TestClient(app)
def test_secure_route_pass():
response = client.post("/secure?is_true=true")
assert response.status_code == 200
def test_secure_route_fail():
response = client.post("/secure?is_true=false")
assert response.status_code == 403
def test_open_route():
response = client.post("/open?is_true=false")
assert response.status_code == 200

Loading…
Cancel
Save