Files
thePlug/backend/tests/conftest.py
T

71 lines
2.1 KiB
Python

import os
from datetime import UTC, datetime, timedelta
import pytest
from fastapi import FastAPI
from fastapi.testclient import TestClient
os.environ.setdefault(
"MONGODB_URI",
"mongodb://theplug:pass@localhost:27017/theplug?authSource=admin",
)
os.environ.setdefault("MONGODB_DB_NAME", "theplug")
os.environ.setdefault("REDIS_URL", "redis://localhost:6379")
os.environ.setdefault("JWT_SECRET_KEY", "test-secret-key")
os.environ.setdefault("JWT_ALGORITHM", "HS256")
os.environ.setdefault("JWT_EXPIRE_MINUTES", "720")
os.environ.setdefault("AUTH_USERNAME", "admin")
os.environ.setdefault("AUTH_PASSWORD", "admin")
@pytest.fixture
def fake_user():
from models.auth import AuthUserDocument
return AuthUserDocument(
username="admin",
password_hash="hashed-password",
)
@pytest.fixture
def auth_context(fake_user):
from core.security import AuthContext
from models.auth import AccessTokenPayload
exp = int((datetime.now(UTC) + timedelta(minutes=720)).timestamp())
payload = AccessTokenPayload(sub=fake_user.username, jti="test-jti", exp=exp)
return AuthContext(token="test-token", user=fake_user, payload=payload)
@pytest.fixture
def app(fake_user, auth_context) -> FastAPI:
from api.auth.router import router as auth_router
from api.editor.router import router as editor_router
from api.proxy.router import router as proxy_router
from core.security import AuthContext, get_auth_context, require_authenticated_user
from models.auth import AuthUserDocument
app_instance = FastAPI()
app_instance.include_router(auth_router)
app_instance.include_router(editor_router)
app_instance.include_router(proxy_router)
async def _override_current_user() -> AuthUserDocument:
return fake_user
async def _override_auth_context() -> AuthContext:
return auth_context
app_instance.dependency_overrides[require_authenticated_user] = (
_override_current_user
)
app_instance.dependency_overrides[get_auth_context] = _override_auth_context
return app_instance
@pytest.fixture
def client(app: FastAPI):
with TestClient(app) as test_client:
yield test_client