Log audit events before we save them to the DB
This commit is contained in:
parent
ea2338bc30
commit
8057c7b2fc
@ -31,6 +31,10 @@ class AuditableMixin(object):
|
||||
event_details=event_details,
|
||||
)
|
||||
|
||||
app.logger.info(
|
||||
"Audit Event {}".format(action),
|
||||
extra={"audit_event": audit_event.log, "tags": ["audit_event", action]},
|
||||
)
|
||||
audit_event.save(connection)
|
||||
return audit_event
|
||||
|
||||
@ -43,29 +47,17 @@ class AuditableMixin(object):
|
||||
@staticmethod
|
||||
def audit_insert(mapper, connection, target):
|
||||
"""Listen for the `after_insert` event and create an AuditLog entry"""
|
||||
event = target.create_audit_event(connection, target, ACTION_CREATE)
|
||||
app.logger.info(
|
||||
"Audit Event insert",
|
||||
extra={"audit_event": event.log, "tags": ["audit_event", "insert"]},
|
||||
)
|
||||
target.create_audit_event(connection, target, ACTION_CREATE)
|
||||
|
||||
@staticmethod
|
||||
def audit_delete(mapper, connection, target):
|
||||
"""Listen for the `after_delete` event and create an AuditLog entry"""
|
||||
event = target.create_audit_event(connection, target, ACTION_DELETE)
|
||||
app.logger.info(
|
||||
"Audit Event delete",
|
||||
extra={"audit_event": event.log, "tags": ["audit_event", "delete"]},
|
||||
)
|
||||
target.create_audit_event(connection, target, ACTION_DELETE)
|
||||
|
||||
@staticmethod
|
||||
def audit_update(mapper, connection, target):
|
||||
if AuditableMixin.get_changes(target):
|
||||
event = target.create_audit_event(connection, target, ACTION_UPDATE)
|
||||
app.logger.info(
|
||||
"Audit Event update",
|
||||
extra={"audit_event": event.log, "tags": ["audit_event", "update"]},
|
||||
)
|
||||
target.create_audit_event(connection, target, ACTION_UPDATE)
|
||||
|
||||
def get_changes(self):
|
||||
"""
|
||||
|
@ -4,9 +4,9 @@ from atst.models.mixins.auditable import AuditableMixin
|
||||
from atst.domain.users import Users
|
||||
|
||||
|
||||
def test_audit_insert(mock_logger):
|
||||
def test_logging_audit_event_on_create(mock_logger):
|
||||
user = UserFactory.create()
|
||||
assert "Audit Event insert" in mock_logger.messages
|
||||
assert "Audit Event create" in mock_logger.messages
|
||||
assert len(mock_logger.messages) == 1
|
||||
|
||||
event_log = mock_logger.extras[0]["audit_event"]
|
||||
@ -15,12 +15,12 @@ def test_audit_insert(mock_logger):
|
||||
assert event_log["display_name"] == user.full_name
|
||||
assert event_log["action"] == "create"
|
||||
|
||||
assert "insert" in mock_logger.extras[0]["tags"]
|
||||
assert "create" in mock_logger.extras[0]["tags"]
|
||||
|
||||
|
||||
def test_audit_delete(mock_logger):
|
||||
def test_logging_audit_event_on_delete(mock_logger):
|
||||
user = UserFactory.create()
|
||||
assert "Audit Event insert" in mock_logger.messages
|
||||
assert "Audit Event create" in mock_logger.messages
|
||||
|
||||
db.session.delete(user)
|
||||
db.session.commit()
|
||||
@ -36,9 +36,9 @@ def test_audit_delete(mock_logger):
|
||||
assert "delete" in mock_logger.extras[1]["tags"]
|
||||
|
||||
|
||||
def test_audit_insert(mock_logger):
|
||||
def test_logging_audit_event_on_update(mock_logger):
|
||||
user = UserFactory.create()
|
||||
assert "Audit Event insert" in mock_logger.messages
|
||||
assert "Audit Event create" in mock_logger.messages
|
||||
|
||||
Users.update(user, {"first_name": "Greedo"})
|
||||
assert "Audit Event update" in mock_logger.messages
|
||||
|
Loading…
x
Reference in New Issue
Block a user