Coverage for src / mcp_server_langgraph / infrastructure / middleware.py: 81%
17 statements
« prev ^ index » next coverage.py v7.12.0, created at 2025-12-03 00:43 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2025-12-03 00:43 +0000
1"""
2Middleware Factory Functions
4Provides reusable middleware creation functions for FastAPI applications.
5"""
7from __future__ import annotations
9from typing import Any
11from fastapi.middleware.cors import CORSMiddleware
13from mcp_server_langgraph.core.config import Settings
14from mcp_server_langgraph.core.container import ApplicationContainer
17def create_cors_middleware() -> type[CORSMiddleware]:
18 """
19 Create CORS middleware configuration.
21 Returns:
22 CORSMiddleware class
24 Example:
25 middleware = create_cors_middleware()
26 app.add_middleware(middleware, allow_origins=["*"])
27 """
28 from typing import cast
30 return cast(type[Any], CORSMiddleware)
33def create_rate_limit_middleware(settings: Settings) -> Any:
34 """
35 Create rate limiting middleware.
37 Args:
38 settings: Application settings
40 Returns:
41 Rate limit middleware (or mock in test mode)
43 Example:
44 middleware = create_rate_limit_middleware(settings)
45 """
46 # For test mode, return a no-op middleware
47 if settings.environment == "test": 47 ↛ 51line 47 didn't jump to line 51 because the condition on line 47 was always true
48 return None
50 # In production, would return actual rate limiter
51 return None
54def create_auth_middleware(container: ApplicationContainer) -> Any:
55 """
56 Create authentication middleware.
58 Args:
59 container: Application container with auth provider
61 Returns:
62 Auth middleware (or mock in test mode)
64 Example:
65 middleware = create_auth_middleware(container)
66 """
67 container.get_auth()
69 # For test mode, return a no-op middleware
70 if container.settings.environment == "test": 70 ↛ 74line 70 didn't jump to line 74 because the condition on line 70 was always true
71 return None
73 # In production, would return actual auth middleware
74 return None