Files
office_translator/tests/test_core_redis.py
Sepehr Ramezani 26bd096a06 feat: production deployment - full update with providers, admin, glossaries, pricing, tests
Major changes across backend, frontend, infrastructure:
- Provider system with model selection (Google, DeepL, OpenAI, Ollama, Google Cloud)
- Admin panel: user management, pricing, settings
- Glossary system with CSV import/export
- Subscription and tier quota management
- Security hardening (rate limiting, API key auth, path traversal fixes)
- Docker compose for dev, prod, and IONOS deployment
- Alembic migrations for new tables
- Frontend: dashboard, pricing page, landing page, i18n (en/fr)
- Test suite and verification scripts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-25 15:01:47 +02:00

63 lines
2.1 KiB
Python

"""
Unit tests for core.redis (Story 6-3).
Tests shared Redis client helpers when REDIS_URL is unset or connection fails.
"""
import pytest
def test_get_redis_url_empty_when_not_set(monkeypatch):
"""REDIS_URL not set -> get_redis_url returns empty string."""
monkeypatch.delenv("REDIS_URL", raising=False)
from core.redis import get_redis_url
assert get_redis_url() == ""
def test_get_redis_url_returns_stripped_value(monkeypatch):
"""REDIS_URL set -> get_redis_url returns stripped value."""
monkeypatch.setenv("REDIS_URL", " redis://localhost:6379/0 ")
from core.redis import get_redis_url
assert get_redis_url() == "redis://localhost:6379/0"
def test_ping_sync_not_configured(monkeypatch):
"""When get_sync_redis returns None, ping_sync returns (False, 'not_configured')."""
from core.redis import ping_sync, get_sync_redis
monkeypatch.setattr("core.redis.get_sync_redis", lambda: None)
ok, err = ping_sync()
assert ok is False
assert err == "not_configured"
@pytest.mark.asyncio
async def test_get_job_status_async_returns_none_when_no_redis(monkeypatch):
"""When get_async_redis returns None, get_job_status_async returns None."""
monkeypatch.setattr("core.redis.get_async_redis", lambda: None)
from core.redis import get_job_status_async
result = await get_job_status_async("tr_test_123")
assert result is None
@pytest.mark.asyncio
async def test_set_job_status_async_returns_false_when_no_redis(monkeypatch):
"""When get_async_redis returns None, set_job_status_async returns False."""
monkeypatch.setattr("core.redis.get_async_redis", lambda: None)
from core.redis import set_job_status_async
ok = await set_job_status_async("tr_test_123", {"status": "queued"})
assert ok is False
def test_ping_sync_returns_true_when_redis_ok(monkeypatch):
"""When sync client pings successfully, ping_sync returns (True, '')."""
mock_client = type("MockRedis", (), {"ping": lambda self: None})()
monkeypatch.setattr("core.redis.get_sync_redis", lambda: mock_client)
from core.redis import ping_sync
ok, err = ping_sync()
assert ok is True
assert err == ""