- pulling out helper functions for constructing forms - return 400 for form validation errors - "Yes" appears green on the read only version
131 lines
4.6 KiB
Python
131 lines
4.6 KiB
Python
import pytest
|
|
from flask import url_for
|
|
|
|
from atst.domain.permission_sets import PermissionSets
|
|
|
|
from tests.factories import *
|
|
|
|
|
|
def test_application_team(client, user_session):
|
|
portfolio = PortfolioFactory.create()
|
|
application = ApplicationFactory.create(portfolio=portfolio)
|
|
|
|
user_session(portfolio.owner)
|
|
|
|
response = client.get(url_for("applications.team", application_id=application.id))
|
|
assert response.status_code == 200
|
|
|
|
|
|
def test_update_team(client, user_session):
|
|
application = ApplicationFactory.create()
|
|
owner = application.portfolio.owner
|
|
app_role = ApplicationRoleFactory.create(
|
|
application=application, permission_sets=[]
|
|
)
|
|
app_user = app_role.user
|
|
user_session(owner)
|
|
response = client.post(
|
|
url_for("applications.update_team", application_id=application.id),
|
|
data={
|
|
"members-0-user_id": app_user.id,
|
|
"members-0-permission_sets-perms_team_mgmt": PermissionSets.EDIT_APPLICATION_TEAM,
|
|
"members-0-permission_sets-perms_env_mgmt": PermissionSets.EDIT_APPLICATION_ENVIRONMENTS,
|
|
"members-0-permission_sets-perms_del_env": PermissionSets.DELETE_APPLICATION_ENVIRONMENTS,
|
|
},
|
|
)
|
|
|
|
assert response.status_code == 302
|
|
actual_perms_names = [perm.name for perm in app_role.permission_sets]
|
|
expected_perms_names = [
|
|
PermissionSets.VIEW_APPLICATION,
|
|
PermissionSets.EDIT_APPLICATION_TEAM,
|
|
PermissionSets.EDIT_APPLICATION_ENVIRONMENTS,
|
|
PermissionSets.DELETE_APPLICATION_ENVIRONMENTS,
|
|
]
|
|
assert expected_perms_names == actual_perms_names
|
|
|
|
|
|
def test_update_team_with_bad_permission_sets(client, user_session):
|
|
application = ApplicationFactory.create()
|
|
owner = application.portfolio.owner
|
|
app_role = ApplicationRoleFactory.create(
|
|
application=application, permission_sets=[]
|
|
)
|
|
app_user = app_role.user
|
|
permission_sets = app_user.permission_sets
|
|
|
|
user_session(owner)
|
|
response = client.post(
|
|
url_for("applications.update_team", application_id=application.id),
|
|
data={
|
|
"members-0-user_id": app_user.id,
|
|
"members-0-permission_sets-perms_team_mgmt": PermissionSets.EDIT_APPLICATION_TEAM,
|
|
"members-0-permission_sets-perms_env_mgmt": "some random string",
|
|
},
|
|
)
|
|
assert response.status_code == 400
|
|
assert app_user.permission_sets == permission_sets
|
|
|
|
|
|
def test_update_team_with_non_app_user(client, user_session):
|
|
application = ApplicationFactory.create()
|
|
owner = application.portfolio.owner
|
|
app_role = ApplicationRoleFactory.create(
|
|
application=application, permission_sets=[]
|
|
)
|
|
non_app_user = UserFactory.create()
|
|
app_user = app_role.user
|
|
|
|
user_session(owner)
|
|
response = client.post(
|
|
url_for("applications.update_team", application_id=application.id),
|
|
data={
|
|
"members-0-user_id": non_app_user.id,
|
|
"members-0-permission_sets-perms_team_mgmt": PermissionSets.EDIT_APPLICATION_TEAM,
|
|
"members-0-permission_sets-perms_env_mgmt": PermissionSets.EDIT_APPLICATION_ENVIRONMENTS,
|
|
"members-0-permission_sets-perms_del_env": PermissionSets.DELETE_APPLICATION_ENVIRONMENTS,
|
|
},
|
|
)
|
|
|
|
assert response.status_code == 404
|
|
|
|
|
|
def test_create_member(client, user_session):
|
|
user = UserFactory.create()
|
|
application = ApplicationFactory.create(
|
|
environments=[{"name": "Naboo"}, {"name": "Endor"}]
|
|
)
|
|
env = application.environments[0]
|
|
|
|
user_session(application.portfolio.owner)
|
|
|
|
response = client.post(
|
|
url_for("applications.create_member", application_id=application.id),
|
|
data={
|
|
"user_data-first_name": user.first_name,
|
|
"user_data-last_name": user.last_name,
|
|
"user_data-dod_id": user.dod_id,
|
|
"user_data-email": user.email,
|
|
"environment_roles-0-environment_id": env.id,
|
|
"environment_roles-0-environment_name": env.name,
|
|
"environment_roles-0-role": "Basic Access",
|
|
"permission_sets-perms_env_mgmt": True,
|
|
"permission_sets-perms_team_mgmt": True,
|
|
"permission_sets-perms_del_env": True,
|
|
},
|
|
)
|
|
|
|
assert response.status_code == 302
|
|
expected_url = url_for(
|
|
"applications.team",
|
|
application_id=application.id,
|
|
fragment="application-members",
|
|
_anchor="application-members",
|
|
_external=True,
|
|
)
|
|
assert response.location == expected_url
|
|
assert len(user.application_roles) == 1
|
|
assert user.application_roles[0].application == application
|
|
assert len(user.environment_roles) == 1
|
|
assert user.environment_roles[0].environment == env
|