From 54af62a58a89b5cd8b8d9daed9b74e1f3fe4b71b Mon Sep 17 00:00:00 2001 From: Montana Date: Mon, 24 Sep 2018 11:13:03 -0400 Subject: [PATCH] Test workspace update_member route --- atst/forms/edit_member.py | 4 +-- tests/routes/test_workspaces.py | 57 +++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/atst/forms/edit_member.py b/atst/forms/edit_member.py index 3e3ebd42..b45eef5b 100644 --- a/atst/forms/edit_member.py +++ b/atst/forms/edit_member.py @@ -1,5 +1,5 @@ from flask_wtf import FlaskForm -from wtforms.validators import Optional +from wtforms.validators import Optional, Required from atst.forms.fields import SelectField @@ -9,7 +9,7 @@ from .data import WORKSPACE_ROLES, ENVIRONMENT_ROLES class EditMemberForm(FlaskForm): workspace_role = SelectField( - "Workspace Role", choices=WORKSPACE_ROLES, validators=[Optional()] + "Workspace Role", choices=WORKSPACE_ROLES, validators=[Required()] ) environment_role = SelectField( diff --git a/tests/routes/test_workspaces.py b/tests/routes/test_workspaces.py index fcab09d2..31dce11f 100644 --- a/tests/routes/test_workspaces.py +++ b/tests/routes/test_workspaces.py @@ -2,6 +2,10 @@ from flask import url_for from tests.factories import UserFactory, WorkspaceFactory from atst.domain.workspaces import Workspaces +from atst.domain.workspace_users import WorkspaceUsers +from atst.domain.projects import Projects +from atst.domain.environments import Environments +from atst.domain.environment_roles import EnvironmentRoles from atst.models.workspace_user import WorkspaceUser @@ -67,3 +71,56 @@ def test_update_workspace_name(client, user_session): ) assert response.status_code == 200 assert workspace.name == "a cool new name" + + +def test_update_member_workspace_role(client, user_session): + owner = UserFactory.create() + workspace = WorkspaceFactory.create() + Workspaces._create_workspace_role(owner, workspace, "admin") + user = UserFactory.create() + member = WorkspaceUsers.add(user, workspace.id, "developer") + user_session(owner) + response = client.post( + url_for( + "workspaces.update_member", workspace_id=workspace.id, member_id=user.id + ), + data={"workspace_role": "security_auditor"}, + follow_redirects=True, + ) + assert response.status_code == 200 + assert member.role == "security_auditor" + + +def test_update_member_environment_role(client, user_session): + owner = UserFactory.create() + workspace = WorkspaceFactory.create() + Workspaces._create_workspace_role(owner, workspace, "admin") + + user = UserFactory.create() + member = WorkspaceUsers.add(user, workspace.id, "developer") + project = Projects.create( + owner, + workspace, + "Snazzy Project", + "A new project for me and my friends", + {"env1", "env2"}, + ) + env1_id = project.environments[0].id + env2_id = project.environments[1].id + for env in project.environments: + Environments.add_member(owner, env, user, "developer") + user_session(owner) + response = client.post( + url_for( + "workspaces.update_member", workspace_id=workspace.id, member_id=user.id + ), + data={ + "workspace_role": "developer", + "env_" + str(env1_id): "security_auditor", + "env_" + str(env2_id): "devops", + }, + follow_redirects=True, + ) + assert response.status_code == 200 + assert EnvironmentRoles.get(user.id, env1_id).role == "security_auditor" + assert EnvironmentRoles.get(user.id, env2_id).role == "devops"