From 7cd6cb6bfb333c4b71af562fab2e0de0226fbb91 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 14:35:57 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Auto=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs_src/route_middleware/tutorial001.py | 9 ++++----- fastapi/route_middleware.py | 16 ++++++++++------ tests/test_route_middleware.py | 13 +++++++++---- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/docs_src/route_middleware/tutorial001.py b/docs_src/route_middleware/tutorial001.py index 01226ea844..1dca98dae4 100644 --- a/docs_src/route_middleware/tutorial001.py +++ b/docs_src/route_middleware/tutorial001.py @@ -1,15 +1,14 @@ -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} + return {"status": "ok", "is_true": is_true, "user": req.user} + @app.post("/open") async def open_route(is_true: bool): diff --git a/fastapi/route_middleware.py b/fastapi/route_middleware.py index beb74d0113..cba0f1260a 100644 --- a/fastapi/route_middleware.py +++ b/fastapi/route_middleware.py @@ -1,9 +1,11 @@ from functools import wraps -from fastapi import Request from typing import Callable -def route_middleware(*middlewares:Callable): - def decorator(route_func:Callable): +from fastapi import Request + + +def route_middleware(*middlewares: Callable): + def decorator(route_func: Callable): @wraps(route_func) async def wrapper(*args, **kwargs): req = kwargs.get("req") @@ -18,17 +20,19 @@ def route_middleware(*middlewares:Callable): return await route_func(*args, **kwargs) return wrapper - return decorator + return decorator # Example middlewares async def verify_jwt(req: Request): # just a mock if not (req.query_params.get("is_true") == "true"): - req.user={"name":"xyz","admin":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}") \ No newline at end of file + print(f"[LOG] Path: {req.url.path}") diff --git a/tests/test_route_middleware.py b/tests/test_route_middleware.py index 7d5ebeb67c..3df3d10d1a 100644 --- a/tests/test_route_middleware.py +++ b/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} + 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