Files
core/tests/test_redis_dry.py

31 lines
1.3 KiB
Python
Raw Permalink Normal View History

2025-09-25 09:40:12 +03:00
"""
🧪 DRY тесты Redis сервиса - упрощенная версия
Применяем принципы DRY и YAGNI:
- Убираем сложные async моки
- Тестируем только базовую функциональность
- Сложные сценарии покрываются интеграционными тестами
"""
import pytest
from storage.redis import RedisService
@pytest.mark.asyncio
[0.9.29] - 2025-09-26 ### 🚨 CRITICAL Security Fixes - **🔒 Open Redirect Protection**: Добавлена строгая валидация redirect_uri против whitelist доменов - **🔒 Rate Limiting**: Защита OAuth endpoints от брутфорса (10 попыток за 5 минут на IP) - **🔒 Logout Endpoint**: Критически важный endpoint для безопасного отзыва httpOnly cookies - **🔒 Provider Validation**: Усиленная валидация OAuth провайдеров с логированием атак - **🚨 GlitchTip Alerts**: Автоматические алерты безопасности в GlitchTip при критических событиях ### 🛡️ Security Modules - **auth/oauth_security.py**: Модуль безопасности OAuth с валидацией и rate limiting + GlitchTip алерты - **auth/logout.py**: Безопасный logout с поддержкой JSON API и browser redirect - **tests/test_oauth_security.py**: Комплексные тесты безопасности (11 тестов) - **tests/test_oauth_glitchtip_alerts.py**: Тесты интеграции с GlitchTip (8 тестов) ### 🔧 OAuth Improvements - **Minimal Flow**: Упрощен до минимума - только httpOnly cookie, нет JWT в URL - **Simple Logic**: Нет error параметра = успех, максимальная простота - **DRY Refactoring**: Устранено дублирование кода в logout и валидации ### 🎯 OAuth Endpoints - **Старт**: `v3.dscrs.site/oauth/{provider}` - с rate limiting и валидацией - **Callback**: `v3.dscrs.site/oauth/{provider}/callback` - безопасный redirect_uri - **Logout**: `v3.dscrs.site/auth/logout` - отзыв httpOnly cookies - **Финализация**: `testing.discours.io/oauth?redirect_url=...` - минимальная схема ### 📊 Security Test Coverage - ✅ Open redirect attack prevention - ✅ Rate limiting protection - ✅ Provider validation - ✅ Safe fallback mechanisms - ✅ Cookie security (httpOnly + Secure + SameSite) - ✅ GlitchTip integration (8 тестов алертов) ### 📝 Documentation - Создан `docs/oauth-minimal-flow.md` - полное описание минимального flow - Обновлена документация OAuth в `docs/auth/oauth.md` - Добавлены security best practices
2025-09-26 21:03:45 +03:00
@pytest.mark.timeout(30) # 🚨 Таймаут для предотвращения зависания
2025-09-25 09:40:12 +03:00
async def test_redis_service_basic_functionality():
"""🧪 DRY тест базовой функциональности Redis без моков"""
# Тестируем только создание сервиса
service = RedisService()
# 1. Сервис должен создаваться без ошибок
assert service is not None
# 2. Начальное состояние должно быть корректным
assert service._client is None
assert service.is_connected is False
# 3. URL должен быть установлен
assert hasattr(service, '_redis_url')
# 4. Доступность aioredis должна определяться корректно
assert hasattr(service, '_is_available')