diff --git a/atst/models/application.py b/atst/models/application.py index d29998f7..aabcb477 100644 --- a/atst/models/application.py +++ b/atst/models/application.py @@ -40,3 +40,12 @@ class Application(Base, mixins.TimestampsMixin, mixins.AuditableMixin): return "".format( self.name, self.description, self.portfolio.name, self.id ) + + @property + def history(self): + previous_state = self.get_changes() + change_set = {} + if "deleted" in previous_state: + change_set["deleted"] = previous_state["deleted"] + + return change_set diff --git a/atst/models/environment.py b/atst/models/environment.py index 5f1e19d2..d36e90eb 100644 --- a/atst/models/environment.py +++ b/atst/models/environment.py @@ -46,3 +46,12 @@ class Environment(Base, mixins.TimestampsMixin, mixins.AuditableMixin): self.application.portfolio.name, self.id, ) + + @property + def history(self): + previous_state = self.get_changes() + change_set = {} + if "deleted" in previous_state: + change_set["deleted"] = previous_state["deleted"] + + return change_set diff --git a/tests/models/test_application.py b/tests/models/test_application.py index 1aded029..d90e4cd6 100644 --- a/tests/models/test_application.py +++ b/tests/models/test_application.py @@ -1,3 +1,5 @@ +from atst.models import AuditEvent + from tests.factories import ( ApplicationFactory, ApplicationRoleFactory, @@ -21,3 +23,18 @@ def test_application_environments_excludes_deleted(): EnvironmentFactory.create(application=app, deleted=True) assert len(app.environments) == 1 assert app.environments[0].id == env.id + + +def test_audit_event_for_application_deletion(session): + app = ApplicationFactory.create() + app.deleted = True + session.add(app) + session.commit() + + update_event = ( + session.query(AuditEvent) + .filter(AuditEvent.resource_id == app.id, AuditEvent.action == "update") + .one() + ) + assert update_event.changed_state.get("deleted") + assert update_event.changed_state["deleted"] == [False, True] diff --git a/tests/models/test_environments.py b/tests/models/test_environments.py index 17a32ec8..977849f2 100644 --- a/tests/models/test_environments.py +++ b/tests/models/test_environments.py @@ -1,6 +1,13 @@ +from atst.models import AuditEvent from atst.domain.environments import Environments from atst.domain.applications import Applications -from tests.factories import PortfolioFactory, UserFactory + +from tests.factories import ( + PortfolioFactory, + UserFactory, + EnvironmentFactory, + ApplicationFactory, +) def test_add_user_to_environment(): @@ -15,3 +22,20 @@ def test_add_user_to_environment(): dev_environment = Environments.add_member(dev_environment, developer, "developer") assert developer in dev_environment.users + + +def test_audit_event_for_environment_deletion(session): + EnvironmentFactory._meta.sqlalchemy_session_persistence = "flush" + + env = EnvironmentFactory.create(application=ApplicationFactory.create()) + env.deleted = True + session.add(env) + session.commit() + + update_event = ( + session.query(AuditEvent) + .filter(AuditEvent.resource_id == env.id, AuditEvent.action == "update") + .one() + ) + assert update_event.changed_state.get("deleted") + assert update_event.changed_state["deleted"] == [False, True]