45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from datetime import datetime, timedelta, timezone
|
|
|
|
from clearview_app.auth.models import AuthAudit, User, UserSession
|
|
|
|
|
|
def test_user_defaults(db_session):
|
|
u = User(username="alice", password_hash="x", role="admin")
|
|
db_session.add(u); db_session.commit(); db_session.refresh(u)
|
|
assert u.id is not None
|
|
assert u.is_active is True
|
|
assert isinstance(u.created_at, datetime)
|
|
|
|
|
|
def test_session_persists_with_expiry(db_session):
|
|
u = User(username="bob", password_hash="x", role="user")
|
|
db_session.add(u); db_session.commit(); db_session.refresh(u)
|
|
|
|
s = UserSession(
|
|
id="abc123",
|
|
user_id=u.id,
|
|
expires_at=datetime.now(timezone.utc) + timedelta(hours=8),
|
|
ip="1.2.3.4",
|
|
user_agent="ua",
|
|
remember=False,
|
|
)
|
|
db_session.add(s); db_session.commit()
|
|
assert s.created_at is not None
|
|
|
|
|
|
def test_audit_row(db_session):
|
|
a = AuthAudit(event="login_ok", ip="9.9.9.9", detail={"k": "v"})
|
|
db_session.add(a); db_session.commit()
|
|
assert a.id is not None
|
|
assert a.detail == {"k": "v"}
|
|
|
|
|
|
def test_record_event_persists(db_session):
|
|
from clearview_app.auth.audit import record_event
|
|
record_event(db_session, event="login_ok", user_id=None, ip="1.1.1.1", detail={"u": "x"})
|
|
db_session.commit()
|
|
rows = db_session.query(AuthAudit).all()
|
|
assert len(rows) == 1
|
|
assert rows[0].event == "login_ok"
|
|
assert rows[0].detail == {"u": "x"}
|