diff --git a/tests/routes/applications/test_new.py b/tests/routes/applications/test_new.py index 22c86969..c39f48d5 100644 --- a/tests/routes/applications/test_new.py +++ b/tests/routes/applications/test_new.py @@ -1,7 +1,9 @@ from flask import url_for -from tests.factories import PortfolioFactory, ApplicationFactory -from atst.domain.applications import Applications +from tests.factories import PortfolioFactory, ApplicationFactory, UserFactory +from unittest.mock import Mock +from atst.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS +from atst.models.application_invitation import ApplicationInvitation def test_get_name_and_description_form(client, user_session): @@ -94,3 +96,66 @@ def test_post_environments(client, session, user_session): assert response.status_code == 302 session.refresh(application) assert len(application.environments) == 3 + + +def test_get_members(client, session, user_session): + application = ApplicationFactory.create() + user_session(application.portfolio.owner) + response = client.get( + url_for( + "applications.view_new_application_step_3", application_id=application.id + ) + ) + assert response.status_code == 200 + + +def test_post_member(monkeypatch, client, user_session, session): + job_mock = Mock() + monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock) + user = UserFactory.create() + application = ApplicationFactory.create( + environments=[{"name": "Naboo"}, {"name": "Endor"}] + ) + (env, env_1) = application.environments + + 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-role": "Basic Access", + "environment_roles-0-environment_name": env.name, + "environment_roles-1-environment_id": env_1.id, + "environment_roles-1-role": NO_ACCESS, + "environment_roles-1-environment_name": env_1.name, + "perms_env_mgmt": True, + "perms_team_mgmt": True, + "perms_del_env": True, + }, + ) + + assert response.status_code == 302 + expected_url = url_for( + "applications.settings", + application_id=application.id, + fragment="application-members", + _anchor="application-members", + _external=True, + ) + assert response.location == expected_url + assert len(application.roles) == 1 + environment_roles = application.roles[0].environment_roles + assert len(environment_roles) == 1 + assert environment_roles[0].environment == env + + invitation = ( + session.query(ApplicationInvitation).filter_by(dod_id=user.dod_id).one() + ) + assert invitation.role.application == application + + assert job_mock.called diff --git a/tests/routes/applications/test_settings.py b/tests/routes/applications/test_settings.py index ffe6f7a1..c0b60694 100644 --- a/tests/routes/applications/test_settings.py +++ b/tests/routes/applications/test_settings.py @@ -561,6 +561,7 @@ def test_revoke_invite(client, user_session): assert invite.is_revoked assert app_role.status == ApplicationRoleStatus.DISABLED + def test_filter_environment_roles(): application_role = ApplicationRoleFactory.create(user=None) application_role2 = ApplicationRoleFactory.create(