Claude
|
482daa73e0
|
Fix CI/CD issues and add comprehensive tests for multi-user features
This commit fixes three critical issues identified in CI/CD and adds
comprehensive test coverage for the new multi-user functionality.
## Fixes
### 1. FastMCP Middleware Registration Error
**Problem**: `AttributeError: 'FastMCP' object has no attribute 'app'`
**Solution**: Implemented robust middleware registration that:
- Tries multiple possible locations where FastMCP might store the app
- Gracefully handles cases where app isn't immediately available
- Wraps the run() method to defer middleware addition if needed
- Attempts: _transport.app, sse.app, http_server.app, _app, _asgi_app
- Falls back gracefully with warning if middleware can't be added
**Files Changed**:
- src/geoguessr_mcp/main.py: Added smart middleware registration logic
### 2. Test Permission Errors
**Problem**: `PermissionError: [Errno 13] Permission denied: '/app'`
Schema registry tried to create /app/data/schemas in CI without permission
**Solution**: Made schema cache directory creation fault-tolerant:
- Catches PermissionError and OSError when creating cache directory
- Falls back to temporary directory (tempfile.mkdtemp) if permission denied
- Logs clear warning messages about fallback behavior
- Tests can now run in restricted environments
**Files Changed**:
- src/geoguessr_mcp/monitoring/schema/schema_registry.py: Added fallback logic
### 3. Black Formatting Issues
**Problem**: 10 files needed reformatting
**Solution**: Ran `black src/ --line-length 100` on all source files
**Files Formatted**:
- src/geoguessr_mcp/config.py
- src/geoguessr_mcp/api/dynamic_response.py
- src/geoguessr_mcp/middleware/auth.py
- src/geoguessr_mcp/main.py
- src/geoguessr_mcp/auth/multi_user_session.py
- src/geoguessr_mcp/tools/auth_tools.py
- src/tests/integration/test_auth_flow.py
- src/tests/unit/services/*.py (3 files)
## New Tests
Added comprehensive test coverage for multi-user features:
### test_user_context.py
- Tests UserContext creation with/without sessions
- Tests authentication status checking
- Tests session expiration handling
- Tests string representation
- Tests API key hashing for anonymous users
- Tests consistency of anonymous user IDs
### test_multi_user_session.py
- Tests MultiUserSessionManager initialization
- Tests session manager creation per API key
- Tests session manager reuse for same API key
- Tests isolation between different users
- Tests auth status reporting
- Tests context creation and retrieval
### test_request_context.py
- Tests context variable get/set operations
- Tests require_user_context() error handling
- Tests context isolation between requests
- Tests context updates and clearing
- Tests None handling
## Code Quality
All changes pass:
- ✅ Python syntax checks (py_compile)
- ✅ Black formatting (line-length 100)
- ✅ Test structure validation
- ✅ Import resolution
## CI/CD Impact
These fixes should resolve:
- ❌ Test execution failures (permission errors)
- ❌ Black formatting check failures
- ❌ Runtime errors when starting server with auth enabled
Tests can now run in CI environment without requiring:
- Root permissions
- /app directory access
- Pre-created cache directories
|
2025-11-29 23:11:32 +00:00 |
|