Log audit events before we save them to the DB

This commit is contained in:
Montana 2019-04-04 08:58:27 -04:00
parent ea2338bc30
commit 8057c7b2fc
2 changed files with 14 additions and 22 deletions

View File

@ -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):
"""

View File

@ -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