DateTime Timezone Handling (Critical Bug Fix): - Updated all models to use DateTime(timezone=True) for PostgreSQL - Changed datetime defaults to lambda: datetime.now(timezone.utc) - Fixed mixing of timezone-aware and timezone-naive datetime objects - Resolved Internal Server Errors in session completion endpoint - Affected models: User, Team, Tree, Session, Attachment Production Logging System: - Created logging_config.py with structured logging setup - Added log rotation (10MB files, 10 backups) for production - Implemented RequestLoggingMiddleware with correlation IDs - Added ErrorLoggingMiddleware for comprehensive error tracking - Integrated logging into main.py application startup - Supports dev/prod modes with appropriate log levels Integration Tests - Session Workflow: - Created test_sessions.py with 12 comprehensive tests - Session lifecycle: create, update, complete - Session export in multiple formats (markdown, text, HTML) - Error handling and authorization checks - Added pytest.ini with coverage configuration - Added requirements-dev.txt with pytest dependencies Following 2026 FastAPI best practices for timezone handling and structured logging. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
39 lines
779 B
INI
39 lines
779 B
INI
[pytest]
|
|
# Pytest configuration for Apoklisis backend tests
|
|
|
|
# Python path - add current directory so 'app' module can be imported
|
|
pythonpath = .
|
|
|
|
# Asyncio configuration
|
|
asyncio_mode = auto
|
|
|
|
# Test discovery patterns
|
|
python_files = test_*.py
|
|
python_classes = Test*
|
|
python_functions = test_*
|
|
|
|
# Output options
|
|
addopts =
|
|
-v
|
|
--strict-markers
|
|
--tb=short
|
|
--cov=app
|
|
--cov-report=term-missing
|
|
--cov-report=html
|
|
|
|
# Test markers
|
|
markers =
|
|
asyncio: marks tests as async
|
|
slow: marks tests as slow (deselect with '-m "not slow"')
|
|
integration: marks tests as integration tests
|
|
unit: marks tests as unit tests
|
|
|
|
# Ignore paths
|
|
testpaths = tests
|
|
|
|
# Warnings
|
|
filterwarnings =
|
|
error
|
|
ignore::DeprecationWarning
|
|
ignore::PendingDeprecationWarning
|