feat: add User model and Alembic migration for users table

This commit is contained in:
Oliver Hofmann
2026-04-27 09:38:53 +02:00
parent ca2c9d4e18
commit e72e4ec466
9 changed files with 344 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
import pytest
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.core.database import Base
from app.modules.auth.models import User
@pytest.fixture
def db():
engine = create_engine("sqlite:///:memory:", connect_args={"check_same_thread": False})
Base.metadata.create_all(bind=engine)
Session = sessionmaker(bind=engine)
session = Session()
yield session
session.close()
Base.metadata.drop_all(bind=engine)
def test_create_user(db):
user = User(username="testuser", full_name="Test User", pw_hash="hashed")
db.add(user)
db.commit()
db.refresh(user)
assert user.id is not None
assert user.username == "testuser"
assert user.is_active is True
assert user.is_admin is False
assert user.created_at is not None
def test_user_defaults(db):
user = User(username="alice", full_name="Alice")
db.add(user)
db.commit()
db.refresh(user)
assert user.pw_hash is None
assert user.email is None
assert user.department is None
assert user.last_login is None
def test_username_must_be_unique(db):
db.add(User(username="dup", full_name="First"))
db.commit()
db.add(User(username="dup", full_name="Second"))
with pytest.raises(Exception):
db.commit()