Files
MyAuth/tests/persistence/conftest.py
Kodjo Sossouvi 0138ac247a Changed module name from my_auth to myauth
Changed encryption algorithm to argon2
Added unit tests
2025-10-19 23:17:38 +02:00

76 lines
2.3 KiB
Python

from datetime import datetime, timedelta
from pathlib import Path
from uuid import uuid4
import pytest
from myauth.models.token import TokenData
from myauth.models.user import UserCreate
from myauth.persistence.sqlite import SQLiteUserRepository, SQLiteTokenRepository
@pytest.fixture
def test_user_data_create():
"""Provides valid data for creating a test user."""
return UserCreate(
email="test.user@example.com",
username="TestUser",
password="ValidPassword123!", # Meets all strength criteria
roles=["member"],
user_settings={"theme": "dark"}
)
@pytest.fixture
def test_user_hashed_password():
"""Provides a dummy hashed password for persistence (hashing is tested elsewhere)."""
return "$2b$12$R.S/XfI2tQYt3Kk.iF1XwOQz0Qe.L0T0mD/O1H8E2V5D4Q6F7G8H9I0"
@pytest.fixture
def test_token_data():
"""Provides valid data for a refresh token."""
now = datetime.now()
return TokenData(
token=f"opaque_refresh_token_{uuid4()}",
token_type="refresh",
user_id="user_id_for_token_test",
expires_at=now + timedelta(days=7),
is_revoked=False,
created_at=now
)
@pytest.fixture()
def sqlite_db_path(tmp_path_factory):
"""
Creates a temporary directory and an SQLite file path for the test session.
The directory and its contents are deleted after the session.
"""
temp_dir = tmp_path_factory.mktemp("sqlite_auth_test")
db_file: Path = temp_dir / "auth_test.db"
yield str(db_file)
try:
if temp_dir.exists():
import shutil
shutil.rmtree(temp_dir)
except OSError as e:
# Handle case where directory might be locked, though rare in tests
print(f"Error during cleanup of temporary DB directory: {e}")
@pytest.fixture
def user_repository(sqlite_db_path: str) -> SQLiteUserRepository:
"""Provides an instance of SQLiteUserRepository initialized with the in-memory DB."""
# Assuming the repository takes the connection object or path (using connection here)
return SQLiteUserRepository(sqlite_db_path)
@pytest.fixture
def token_repository(sqlite_db_path: str) -> SQLiteTokenRepository:
"""Provides an instance of SQLiteTokenRepository initialized with the in-memory DB."""
# Assuming the repository takes the connection object or path (using connection here)
return SQLiteTokenRepository(sqlite_db_path)