extend soft delete functionality to app and env roles

This commit is contained in:
dandds
2019-04-10 10:42:36 -04:00
parent dac764ab82
commit 0bde431a70
15 changed files with 81 additions and 35 deletions

View File

@@ -5,6 +5,7 @@ from atst.domain.exceptions import NotFoundError
from tests.factories import (
ApplicationFactory,
ApplicationRoleFactory,
UserFactory,
PortfolioFactory,
EnvironmentFactory,
@@ -71,17 +72,20 @@ def test_get_excludes_deleted():
def test_delete_application(session):
app = ApplicationFactory.create()
app_role = ApplicationRoleFactory.create(user=UserFactory.create(), application=app)
env1 = EnvironmentFactory.create(application=app)
env2 = EnvironmentFactory.create(application=app)
assert not app.deleted
assert not env1.deleted
assert not env2.deleted
assert not app_role.deleted
Applications.delete(app)
assert app.deleted
assert env1.deleted
assert env2.deleted
assert app_role.deleted
# changes are flushed
assert not session.dirty

View File

@@ -10,6 +10,7 @@ from tests.factories import (
UserFactory,
PortfolioFactory,
EnvironmentFactory,
EnvironmentRoleFactory,
)
@@ -206,13 +207,17 @@ def test_get_excludes_deleted():
def test_delete_environment(session):
env = EnvironmentFactory.create(application=ApplicationFactory.create())
env_role = EnvironmentRoleFactory.create(user=UserFactory.create(), environment=env)
assert not env.deleted
assert not env_role.deleted
Environments.delete(env)
assert env.deleted
assert env_role.deleted
# did not flush
assert env in session.dirty
assert session.dirty
Environments.delete(env, commit=True)
assert env.deleted
assert env_role.deleted
# flushed the change
assert not session.dirty

View File

@@ -25,8 +25,6 @@ def test_add_user_to_environment():
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)
@@ -38,4 +36,6 @@ def test_audit_event_for_environment_deletion(session):
.one()
)
assert update_event.changed_state.get("deleted")
assert update_event.changed_state["deleted"] == [False, True]
before, after = update_event.changed_state["deleted"]
assert not before
assert after

View File

@@ -3,7 +3,7 @@ from sqlalchemy.exc import InternalError
from atst.models.user import User
from tests.factories import UserFactory
from tests.factories import UserFactory, ApplicationFactory, ApplicationRoleFactory
def test_profile_complete_with_all_info():
@@ -24,3 +24,16 @@ def test_cannot_update_dod_id(session):
session.add(user)
with pytest.raises(InternalError):
session.commit()
def test_deleted_application_roles_are_ignored(session):
user = UserFactory.create()
app = ApplicationFactory.create()
app_role = ApplicationRoleFactory.create(user=user, application=app)
assert len(user.application_roles) == 1
app_role.deleted = True
session.add(app_role)
session.commit()
assert len(user.application_roles) == 0