Files

71 lines
1.6 KiB
Python
Raw Permalink Normal View History

2026-10-12 18:11:04 +03:00
import os
os.environ["DATABASE_URL"] = "sqlite:///./test_vault.db"
os.environ["JWT_SECRET"] = "test-secret"
os.environ["PASSWORD_PEPPER"] = "test-pepper"
import pytest
from fastapi.testclient import TestClient
from app.core.passwords import hash_password
from app.db import SessionLocal, engine
from app.db.base import Base
import app.models # noqa: F401,E402 register models on Base.metadata
from app.main import app as fastapi_app
from app.models import User
STRONG_PASSWORD = "Kz8#Fj2!Lm9@Qw4$xR"
@pytest.fixture(autouse=True)
def _clean_database():
Base.metadata.drop_all(bind=engine)
Base.metadata.create_all(bind=engine)
yield
Base.metadata.drop_all(bind=engine)
@pytest.fixture
def client():
with TestClient(fastapi_app) as c:
yield c
@pytest.fixture
def db_session():
db = SessionLocal()
try:
yield db
finally:
db.close()
@pytest.fixture
def make_user():
def _make_user(email, password=STRONG_PASSWORD, is_admin=False):
db = SessionLocal()
try:
user = User(
email=email,
hashed_password=hash_password(password),
is_admin=is_admin,
is_active=True,
)
db.add(user)
db.commit()
db.refresh(user)
return user
finally:
db.close()
return _make_user
@pytest.fixture
def make_admin(make_user):
def _make_admin(email="admin@vault.test", password=STRONG_PASSWORD):
return make_user(email=email, password=password, is_admin=True)
return _make_admin