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

1""" 

2Middleware Factory Functions 

3 

4Provides reusable middleware creation functions for FastAPI applications. 

5""" 

6 

7from __future__ import annotations 

8 

9from typing import Any 

10 

11from fastapi.middleware.cors import CORSMiddleware 

12 

13from mcp_server_langgraph.core.config import Settings 

14from mcp_server_langgraph.core.container import ApplicationContainer 

15 

16 

17def create_cors_middleware() -> type[CORSMiddleware]: 

18 """ 

19 Create CORS middleware configuration. 

20 

21 Returns: 

22 CORSMiddleware class 

23 

24 Example: 

25 middleware = create_cors_middleware() 

26 app.add_middleware(middleware, allow_origins=["*"]) 

27 """ 

28 from typing import cast 

29 

30 return cast(type[Any], CORSMiddleware) 

31 

32 

33def create_rate_limit_middleware(settings: Settings) -> Any: 

34 """ 

35 Create rate limiting middleware. 

36 

37 Args: 

38 settings: Application settings 

39 

40 Returns: 

41 Rate limit middleware (or mock in test mode) 

42 

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 

49 

50 # In production, would return actual rate limiter 

51 return None 

52 

53 

54def create_auth_middleware(container: ApplicationContainer) -> Any: 

55 """ 

56 Create authentication middleware. 

57 

58 Args: 

59 container: Application container with auth provider 

60 

61 Returns: 

62 Auth middleware (or mock in test mode) 

63 

64 Example: 

65 middleware = create_auth_middleware(container) 

66 """ 

67 container.get_auth() 

68 

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 

72 

73 # In production, would return actual auth middleware 

74 return None