62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
"""Audit log entries record the acting user_id.
|
|
|
|
Schema: the ``audit_log`` table has a ``user_id INTEGER`` column added
|
|
by migration 0011; the SQLAlchemy ``AuditLog`` model itself does not
|
|
declare it yet, so ``append_event`` cannot pass it through. These tests
|
|
fail before the model + dataclass are updated, and pass after.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
from sqlalchemy import delete, select
|
|
|
|
from cyclone.audit_log import AuditEvent, append_event
|
|
from cyclone.db import AuditLog, SessionLocal, User
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _clear():
|
|
with SessionLocal()() as db:
|
|
db.execute(delete(AuditLog))
|
|
db.execute(delete(User))
|
|
db.commit()
|
|
yield
|
|
with SessionLocal()() as db:
|
|
db.execute(delete(AuditLog))
|
|
db.execute(delete(User))
|
|
db.commit()
|
|
|
|
|
|
def test_append_event_accepts_user_id_kwarg():
|
|
with SessionLocal()() as db:
|
|
append_event(
|
|
db,
|
|
AuditEvent(
|
|
event_type="test",
|
|
entity_type="x",
|
|
entity_id="y",
|
|
user_id=42,
|
|
),
|
|
)
|
|
db.commit()
|
|
with SessionLocal()() as db:
|
|
row = db.execute(select(AuditLog)).scalars().one()
|
|
assert row.user_id == 42
|
|
|
|
|
|
def test_append_event_without_user_id_is_null():
|
|
with SessionLocal()() as db:
|
|
append_event(
|
|
db,
|
|
AuditEvent(
|
|
event_type="test",
|
|
entity_type="x",
|
|
entity_id="y",
|
|
),
|
|
)
|
|
db.commit()
|
|
with SessionLocal()() as db:
|
|
row = db.execute(select(AuditLog)).scalars().one()
|
|
assert row.user_id is None
|