test fixes
This commit is contained in:
54
tests/conftest.py
Normal file
54
tests/conftest.py
Normal file
@@ -0,0 +1,54 @@
|
||||
"""Pytest configuration and shared fixtures for all tests."""
|
||||
|
||||
import pytest
|
||||
|
||||
from src.server.services.auth_service import auth_service
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def reset_auth_and_rate_limits():
|
||||
"""Reset authentication state and rate limits before each test.
|
||||
|
||||
This ensures:
|
||||
1. Auth service state doesn't leak between tests
|
||||
2. Rate limit window is reset for test client IP
|
||||
Applied to all tests automatically via autouse=True.
|
||||
"""
|
||||
# Reset auth service state
|
||||
auth_service._hash = None # noqa: SLF001
|
||||
auth_service._failed.clear() # noqa: SLF001
|
||||
|
||||
# Reset rate limiter - clear rate limit dict if middleware exists
|
||||
# This prevents tests from hitting rate limits on auth endpoints
|
||||
try:
|
||||
from src.server.fastapi_app import app
|
||||
|
||||
# Try to find and clear the rate limiter dict
|
||||
# Middleware is stored in app.middleware_stack or accessible
|
||||
# through app's internal structure
|
||||
if hasattr(app, 'middleware_stack'):
|
||||
# Try to find AuthMiddleware in the stack
|
||||
stack = app.middleware_stack
|
||||
while stack is not None:
|
||||
if hasattr(stack, 'cls'):
|
||||
# This is a middleware class
|
||||
pass
|
||||
if hasattr(stack, 'app') and hasattr(
|
||||
stack, '_rate'
|
||||
): # noqa: SLF001
|
||||
# Found a potential AuthMiddleware instance
|
||||
stack._rate.clear() # noqa: SLF001
|
||||
stack = getattr(stack, 'app', None)
|
||||
except BaseException:
|
||||
# If middleware reset fails, tests might hit rate limits
|
||||
# but we continue anyway - they're not critical
|
||||
pass
|
||||
|
||||
yield
|
||||
|
||||
# Clean up after test
|
||||
auth_service._hash = None # noqa: SLF001
|
||||
auth_service._failed.clear() # noqa: SLF001
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user