atst/tests/models/test_application_role.py
2020-03-04 11:51:15 -05:00

80 lines
2.7 KiB
Python

import pytest
import pendulum
from atat.domain.permission_sets import PermissionSets
from atat.domain.environment_roles import EnvironmentRoles
from atat.models.audit_event import AuditEvent
from tests.factories import *
@pytest.mark.audit_log
def test_has_application_role_history(session):
owner = UserFactory.create()
user = UserFactory.create()
PortfolioFactory.create(
owner=owner,
applications=[
{
"name": "starkiller",
"environments": [
{
"name": "bridge",
"members": [{"user": user, "role_name": "developer"}],
}
],
}
],
)
app_role = user.application_roles[0]
app_role.permission_sets = [
PermissionSets.get(PermissionSets.EDIT_APPLICATION_TEAM)
]
session.add(app_role)
session.commit()
changed_event = (
session.query(AuditEvent)
.filter(AuditEvent.resource_id == app_role.id, AuditEvent.action == "update")
.one()
)
old_state, new_state = changed_event.changed_state["permission_sets"]
assert old_state == [PermissionSets.VIEW_APPLICATION]
assert new_state == [PermissionSets.EDIT_APPLICATION_TEAM]
def test_environment_roles():
application = ApplicationFactory.create()
environment1 = EnvironmentFactory.create(application=application)
environment2 = EnvironmentFactory.create(application=application)
user = UserFactory.create()
application_role = ApplicationRoleFactory.create(application=application, user=user)
environment_role1 = EnvironmentRoleFactory.create(
environment=environment1, application_role=application_role
)
EnvironmentRoleFactory.create(
environment=environment2, application_role=application_role, deleted=True
)
assert not EnvironmentRoles.get_by_user_and_environment(user.id, environment2.id)
def test_display_status():
yesterday = pendulum.today().subtract(days=1)
expired_invite = ApplicationInvitationFactory.create(expiration_time=yesterday)
assert expired_invite.role.display_status == "invite_expired"
app_role_pending = ApplicationRoleFactory.create()
invite = ApplicationInvitationFactory.create(
role=app_role_pending, user=app_role_pending.user
)
assert app_role_pending.display_status == "invite_pending"
app_role_active = ApplicationRoleFactory.create(status=ApplicationRoleStatus.ACTIVE)
assert app_role_active.display_status == None
env_role_pending = EnvironmentRoleFactory.create(application_role=app_role_active)
assert env_role_pending.application_role.display_status == "changes_pending"