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>
This commit is contained in:
31
tests/test_database_utils.py
Normal file
31
tests/test_database_utils.py
Normal file
@@ -0,0 +1,31 @@
|
||||
"""
|
||||
Tests for database utilities - AC4 (dual DB URL conversion)
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
from database.utils import convert_to_async_url
|
||||
|
||||
|
||||
class TestConvertToAsyncUrl:
|
||||
"""AC4: PostgreSQL (prod) and SQLite (dev) URL conversion to async drivers."""
|
||||
|
||||
def test_postgresql_converted_to_asyncpg(self):
|
||||
"""postgresql:// -> postgresql+asyncpg://"""
|
||||
url = "postgresql://user:pass@localhost:5432/db"
|
||||
assert convert_to_async_url(url) == "postgresql+asyncpg://user:pass@localhost:5432/db"
|
||||
|
||||
def test_postgres_converted_to_asyncpg(self):
|
||||
"""postgres:// -> postgresql+asyncpg://"""
|
||||
url = "postgres://user:pass@localhost:5432/db"
|
||||
assert convert_to_async_url(url) == "postgresql+asyncpg://user:pass@localhost:5432/db"
|
||||
|
||||
def test_sqlite_converted_to_aiosqlite(self):
|
||||
"""sqlite:/// -> sqlite+aiosqlite:///"""
|
||||
url = "sqlite:///./data/translate.db"
|
||||
assert convert_to_async_url(url) == "sqlite+aiosqlite:///./data/translate.db"
|
||||
|
||||
def test_unknown_url_unchanged(self):
|
||||
"""Unknown scheme is returned unchanged."""
|
||||
url = "mysql://localhost/db"
|
||||
assert convert_to_async_url(url) == "mysql://localhost/db"
|
||||
Reference in New Issue
Block a user