record soft deletion in audit log for applications and environments

This commit is contained in:
dandds 2019-04-09 15:53:35 -04:00
parent b58aef2c6b
commit 0348af7ce7
4 changed files with 60 additions and 1 deletions

View File

@ -40,3 +40,12 @@ class Application(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
return "<Application(name='{}', description='{}', portfolio='{}', id='{}')>".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

View File

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

View File

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

View File

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