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