Merge pull request #264 from dod-ccpo/view-pe-as-workspace-user

View projects and environments as a workspace user
This commit is contained in:
richard-dds
2018-09-11 10:16:18 -04:00
committed by GitHub
13 changed files with 220 additions and 11 deletions

View File

@@ -4,7 +4,9 @@ from tests.factories import WorkspaceFactory
def test_create_project_with_multiple_environments():
workspace = WorkspaceFactory.create()
project = Projects.create(workspace, "My Test Project", "Test", ["dev", "prod"])
project = Projects.create(
workspace.owner, workspace, "My Test Project", "Test", ["dev", "prod"]
)
assert project.workspace == workspace
assert project.name == "My Test Project"

View File

@@ -4,6 +4,8 @@ from uuid import uuid4
from atst.domain.exceptions import NotFoundError, UnauthorizedError
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 tests.factories import WorkspaceFactory, RequestFactory, UserFactory
@@ -179,3 +181,59 @@ def test_random_user_cannot_view_workspace_members():
with pytest.raises(UnauthorizedError):
workspace = Workspaces.get_with_members(developer, workspace.id)
def test_scoped_workspace_only_returns_a_users_projects_and_environments():
workspace = WorkspaceFactory.create()
new_project = Projects.create(
workspace.owner,
workspace,
"My Project",
"My project",
["dev", "staging", "prod"],
)
developer = UserFactory.from_atat_role("developer")
dev_environment = Environments.add_member(
workspace.owner, new_project.environments[0], developer
)
scoped_workspace = Workspaces.get(developer, workspace.id)
# Should only return the project and environment in which the user has an
# environment role.
assert scoped_workspace.projects == [new_project]
assert scoped_workspace.projects[0].environments == [dev_environment]
def test_scoped_workspace_returns_all_projects_for_workspace_admin():
workspace = Workspaces.create(RequestFactory.create())
for _ in range(5):
Projects.create(
workspace.owner,
workspace,
"My Project",
"My project",
["dev", "staging", "prod"],
)
admin = Workspaces.add_member(
workspace, UserFactory.from_atat_role("default"), "admin"
).user
scoped_workspace = Workspaces.get(admin, workspace.id)
assert len(scoped_workspace.projects) == 5
assert len(scoped_workspace.projects[0].environments) == 3
def test_scoped_workspace_returns_all_projects_for_workspace_owner():
workspace = Workspaces.create(RequestFactory.create())
owner = workspace.owner
for _ in range(5):
Projects.create(
owner, workspace, "My Project", "My project", ["dev", "staging", "prod"]
)
scoped_workspace = Workspaces.get(owner, workspace.id)
assert len(scoped_workspace.projects) == 5
assert len(scoped_workspace.projects[0].environments) == 3

View File

@@ -10,7 +10,7 @@ def test_add_user_to_environment():
workspace = Workspaces.create(RequestFactory.create(creator=owner))
project = Projects.create(
workspace, "my test project", "It's mine.", ["dev", "staging", "prod"]
owner, workspace, "my test project", "It's mine.", ["dev", "staging", "prod"]
)
dev_environment = project.environments[0]

View File

@@ -33,7 +33,7 @@ def test_has_environment_roles():
workspace = Workspaces.create(RequestFactory.create(creator=owner))
workspace_user = Workspaces.create_member(owner, workspace, developer_data)
project = Projects.create(
workspace, "my test project", "It's mine.", ["dev", "staging", "prod"]
owner, workspace, "my test project", "It's mine.", ["dev", "staging", "prod"]
)
Environments.add_member(owner, project.environments[0], workspace_user.user)
assert workspace_user.has_environment_roles