Fix bugs and write a test

This commit is contained in:
Montana 2018-09-21 14:44:32 -04:00
parent e12c1f42db
commit 3a978a1673
5 changed files with 54 additions and 21 deletions

View File

@ -2,7 +2,7 @@ from sqlalchemy.orm.exc import NoResultFound
from atst.database import db from atst.database import db
from atst.models.environment import Environment from atst.models.environment import Environment
from atst.models.environment_role import EnvironmentRole, CSPRole from atst.models.environment_role import EnvironmentRole
from atst.models.project import Project from atst.models.project import Project
from atst.models.permissions import Permissions from atst.models.permissions import Permissions
from atst.domain.authz import Authorization from atst.domain.authz import Authorization
@ -27,9 +27,9 @@ class Environments(object):
db.session.commit() db.session.commit()
@classmethod @classmethod
def add_member(cls, user, environment, member, role=CSPRole.NONSENSE_ROLE): def add_member(cls, user, environment, member, role=None):
environment_user = EnvironmentRole( environment_user = EnvironmentRole(
user=member, environment=environment, role=role.value user=member, environment=environment, role=role
) )
db.session.add(environment_user) db.session.add(environment_user)
db.session.commit() db.session.commit()
@ -57,9 +57,9 @@ class Environments(object):
return env return env
@classmethod @classmethod
def update_environment_role(cls, ids_and_roles, workspace_user): def update_environment_role(cls, user, ids_and_roles, workspace_user):
Authorization.check_workspace_permission( Authorization.check_workspace_permission(
workspace_user.user, user,
workspace_user.workspace, workspace_user.workspace,
Permissions.ADD_AND_ASSIGN_CSP_ROLES, Permissions.ADD_AND_ASSIGN_CSP_ROLES,
"assign environment roles", "assign environment roles",

View File

@ -51,9 +51,9 @@ class Projects(object):
) )
@classmethod @classmethod
def get_all(cls, workspace_user, workspace): def get_all(cls, user, workspace_user, workspace):
Authorization.check_workspace_permission( Authorization.check_workspace_permission(
workspace_user.user, user,
workspace, workspace,
Permissions.VIEW_APPLICATION_IN_WORKSPACE, Permissions.VIEW_APPLICATION_IN_WORKSPACE,
"view project in workspace", "view project in workspace",

View File

@ -26,18 +26,6 @@ class EnvironmentRole(Base, mixins.TimestampsMixin):
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False)
user = relationship("User", backref="environment_roles") user = relationship("User", backref="environment_roles")
@classmethod
def get(cls, user_id, environment_id):
existing_env_role = (
db.session.query(EnvironmentRole)
.filter(
EnvironmentRole.user_id == user_id,
EnvironmentRole.environment_id == environment_id,
)
.one_or_none()
)
return existing_env_role
Index( Index(
"environments_role_user_environment", "environments_role_user_environment",

View File

@ -216,7 +216,7 @@ def view_member(workspace_id, member_id):
"edit this workspace user", "edit this workspace user",
) )
member = WorkspaceUsers.get(workspace_id, member_id) member = WorkspaceUsers.get(workspace_id, member_id)
projects = Projects.get_all(member, workspace) projects = Projects.get_all(g.current_user, member, workspace)
form = EditMemberForm(workspace_role=member.role, environment_role="") form = EditMemberForm(workspace_role=member.role, environment_role="")
return render_template( return render_template(
"workspaces/members/edit.html", "workspaces/members/edit.html",
@ -259,7 +259,7 @@ def update_member(workspace_id, member_id):
) )
new_role_name = member.role_displayname new_role_name = member.role_displayname
Environments.update_environment_role(ids_and_roles, member) Environments.update_environment_role(g.current_user, ids_and_roles, member)
return redirect( return redirect(
url_for( url_for(

View File

@ -0,0 +1,45 @@
import pytest
from uuid import uuid4
from atst.domain.environments import Environments
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.projects import Projects
from atst.domain.workspaces import Workspaces
from atst.domain.workspace_users import WorkspaceUsers
from atst.domain.exceptions import NotFoundError
from tests.factories import RequestFactory, UserFactory
def test_update_environment_roles():
owner = UserFactory.create()
developer_data = {
"dod_id": "1234567890",
"first_name": "Test",
"last_name": "User",
"email": "test.user@mail.com",
"workspace_role": "developer",
}
workspace = Workspaces.create(RequestFactory.create(creator=owner))
workspace_user = Workspaces.create_member(owner, workspace, developer_data)
project = Projects.create(
owner, workspace, "my test project", "It's mine.", ["dev", "staging", "prod"]
)
dev_env = project.environments[0]
staging_env = project.environments[1]
Environments.add_member(owner, dev_env, workspace_user.user, role="devops")
Environments.add_member(owner, staging_env, workspace_user.user, role="developer")
new_ids_and_roles = [
{"id": dev_env.id, "role": "billing_admin"},
{"id": staging_env.id, "role": "developer"},
]
Environments.update_environment_role(owner, new_ids_and_roles, workspace_user)
new_dev_env_role = EnvironmentRoles.get(workspace_user.user.id, dev_env.id)
staging_env_role = EnvironmentRoles.get(workspace_user.user.id, staging_env.id)
assert new_dev_env_role.role == "billing_admin"
assert staging_env_role.role == "developer"