Gateprep / backend /app /scripts /seed_e2e.py
banu4prasad's picture
add: tests and code cleanup
05b4327
Raw
History Blame Contribute Delete
2.06 kB
import logging
import os
from app.core.database import Base, SessionLocal, engine
from app.core.security import hash_password
from app.models.models import User, UserRole
logger = logging.getLogger(__name__)
def _upsert_user(db, *, email: str, full_name: str, password: str, role: UserRole) -> None:
user = db.query(User).filter(User.email == email).first()
if user is None:
user = User(email=email, full_name=full_name)
db.add(user)
user.full_name = full_name
user.hashed_password = hash_password(password)
user.role = role
user.is_active = True
user.current_session_id = None
user.current_ip = None
def main() -> None:
Base.metadata.create_all(bind=engine)
admin_email = os.getenv("E2E_ADMIN_EMAIL", "e2e-admin@example.com")
admin_password = os.getenv("E2E_ADMIN_PASSWORD", "testpassword")
test_email = os.getenv("TEST_USER_EMAIL", "test@example.com")
test_password = os.getenv("TEST_USER_PASSWORD", "testpassword")
auth_test_email = os.getenv("AUTH_TEST_USER_EMAIL", "auth-flow@example.com")
auth_test_password = os.getenv("AUTH_TEST_USER_PASSWORD", test_password)
if len({admin_email, test_email, auth_test_email}) != 3:
raise SystemExit("E2E admin, test user, and auth test user emails must be different.")
with SessionLocal() as db:
_upsert_user(
db,
email=admin_email,
full_name="E2E Admin",
password=admin_password,
role=UserRole.admin,
)
_upsert_user(
db,
email=test_email,
full_name="Test User",
password=test_password,
role=UserRole.aspirant,
)
_upsert_user(
db,
email=auth_test_email,
full_name="Auth Flow User",
password=auth_test_password,
role=UserRole.aspirant,
)
db.commit()
logger.info("Seeded E2E users: %s, %s, %s", admin_email, test_email, auth_test_email)
if __name__ == "__main__":
main()