Clean up workspaces tests

This commit is contained in:
richard-dds 2018-09-12 21:25:02 -04:00
parent 3149f6cc6f
commit 5ab1ce9cdc

View File

@ -7,20 +7,36 @@ from atst.domain.workspace_users import WorkspaceUsers
from atst.domain.projects import Projects from atst.domain.projects import Projects
from atst.domain.environments import Environments from atst.domain.environments import Environments
from tests.factories import WorkspaceFactory, RequestFactory, UserFactory from tests.factories import RequestFactory, UserFactory
def test_can_create_workspace(): @pytest.fixture(scope="function")
request = RequestFactory.create() def workspace_owner():
workspace = Workspaces.create(request, name="frugal-whale") return UserFactory.create()
@pytest.fixture(scope="function")
def request_(workspace_owner):
return RequestFactory.create(creator=workspace_owner)
@pytest.fixture(scope="function")
def workspace(request_):
workspace = Workspaces.create(request_)
return workspace
def test_can_create_workspace(request_):
workspace = Workspaces.create(request_, name="frugal-whale")
assert workspace.name == "frugal-whale" assert workspace.name == "frugal-whale"
assert workspace.request == request
def test_default_workspace_name_is_request_id(): def test_request_is_associated_with_workspace(workspace, request_):
request = RequestFactory.create() assert workspace.request == request_
workspace = Workspaces.create(request)
assert workspace.name == str(request.id)
def test_default_workspace_name_is_request_id(workspace, request_):
assert workspace.name == str(request_.id)
def test_get_nonexistent_workspace_raises(): def test_get_nonexistent_workspace_raises():
@ -28,33 +44,21 @@ def test_get_nonexistent_workspace_raises():
Workspaces.get(UserFactory.build(), uuid4()) Workspaces.get(UserFactory.build(), uuid4())
def test_can_get_workspace_by_request(): def test_can_get_workspace_by_request(workspace):
workspace = WorkspaceFactory.create()
found = Workspaces.get_by_request(workspace.request) found = Workspaces.get_by_request(workspace.request)
assert workspace == found assert workspace == found
def test_creating_workspace_adds_owner(): def test_creating_workspace_adds_owner(workspace, workspace_owner):
user = UserFactory.create() assert workspace.roles[0].user == workspace_owner
request = RequestFactory.create(creator=user)
workspace = Workspaces.create(request)
assert workspace.roles[0].user == user
def test_workspace_has_timestamps(): def test_workspace_has_timestamps(workspace):
request = RequestFactory.create()
workspace = Workspaces.create(request)
assert workspace.time_created == workspace.time_updated assert workspace.time_created == workspace.time_updated
def test_workspaces_get_ensures_user_is_in_workspace(): def test_workspaces_get_ensures_user_is_in_workspace(workspace, workspace_owner):
owner = UserFactory.create()
outside_user = UserFactory.create() outside_user = UserFactory.create()
workspace = Workspaces.create(RequestFactory.create(creator=owner))
workspace_ = Workspaces.get(owner, workspace.id)
assert workspace_ == workspace
with pytest.raises(UnauthorizedError): with pytest.raises(UnauthorizedError):
Workspaces.get(outside_user, workspace.id) Workspaces.get(outside_user, workspace.id)
@ -64,37 +68,26 @@ def test_workspaces_get_many_with_no_workspaces():
assert workspaces == [] assert workspaces == []
def test_workspaces_get_many_returns_a_users_workspaces(): def test_workspaces_get_many_returns_a_users_workspaces(workspace, workspace_owner):
user = UserFactory.create()
users_workspace = Workspaces.create(RequestFactory.create(creator=user))
# random workspace # random workspace
Workspaces.create(RequestFactory.create()) Workspaces.create(RequestFactory.create())
assert Workspaces.get_many(user) == [users_workspace] assert Workspaces.get_many(workspace_owner) == [workspace]
def test_get_for_update_allows_owner(): def test_get_for_update_allows_owner(workspace, workspace_owner):
owner = UserFactory.create() Workspaces.get_for_update(workspace_owner, workspace.id)
workspace = Workspaces.create(RequestFactory.create(creator=owner))
Workspaces.get_for_update(owner, workspace.id)
def test_get_for_update_blocks_developer(): def test_get_for_update_blocks_developer(workspace):
owner = UserFactory.create()
developer = UserFactory.create() developer = UserFactory.create()
workspace = Workspaces.create(RequestFactory.create(creator=owner))
WorkspaceUsers.add(developer, workspace.id, "developer") WorkspaceUsers.add(developer, workspace.id, "developer")
with pytest.raises(UnauthorizedError): with pytest.raises(UnauthorizedError):
Workspaces.get_for_update(developer, workspace.id) Workspaces.get_for_update(developer, workspace.id)
def test_can_create_workspace_user(): def test_can_create_workspace_user(workspace, workspace_owner):
owner = UserFactory.create()
workspace = Workspaces.create(RequestFactory.create(creator=owner))
user_data = { user_data = {
"first_name": "New", "first_name": "New",
"last_name": "User", "last_name": "User",
@ -103,12 +96,11 @@ def test_can_create_workspace_user():
"dod_id": "1234567890", "dod_id": "1234567890",
} }
new_member = Workspaces.create_member(owner, workspace, user_data) new_member = Workspaces.create_member(workspace_owner, workspace, user_data)
assert new_member.workspace == workspace assert new_member.workspace == workspace
def test_need_permission_to_create_workspace_user(): def test_need_permission_to_create_workspace_user(workspace, workspace_owner):
workspace = Workspaces.create(request=RequestFactory.create())
random_user = UserFactory.create() random_user = UserFactory.create()
user_data = { user_data = {
@ -123,9 +115,7 @@ def test_need_permission_to_create_workspace_user():
Workspaces.create_member(random_user, workspace, user_data) Workspaces.create_member(random_user, workspace, user_data)
def test_update_workspace_user_role(): def test_update_workspace_user_role(workspace, workspace_owner):
owner = UserFactory.create()
workspace = Workspaces.create(RequestFactory.create(creator=owner))
user_data = { user_data = {
"first_name": "New", "first_name": "New",
"last_name": "User", "last_name": "User",
@ -133,17 +123,17 @@ def test_update_workspace_user_role():
"workspace_role": "developer", "workspace_role": "developer",
"dod_id": "1234567890", "dod_id": "1234567890",
} }
member = Workspaces.create_member(owner, workspace, user_data) member = Workspaces.create_member(workspace_owner, workspace, user_data)
role_name = "admin" role_name = "admin"
updated_member = Workspaces.update_member(owner, workspace, member, role_name) updated_member = Workspaces.update_member(
workspace_owner, workspace, member, role_name
)
assert updated_member.workspace == workspace assert updated_member.workspace == workspace
assert updated_member.role == role_name assert updated_member.role == role_name
def test_need_permission_to_update_workspace_user_role(): def test_need_permission_to_update_workspace_user_role(workspace, workspace_owner):
owner = UserFactory.create()
workspace = Workspaces.create(RequestFactory.create(creator=owner))
random_user = UserFactory.create() random_user = UserFactory.create()
user_data = { user_data = {
"first_name": "New", "first_name": "New",
@ -152,41 +142,38 @@ def test_need_permission_to_update_workspace_user_role():
"workspace_role": "developer", "workspace_role": "developer",
"dod_id": "1234567890", "dod_id": "1234567890",
} }
member = Workspaces.create_member(owner, workspace, user_data) member = Workspaces.create_member(workspace_owner, workspace, user_data)
role_name = "developer" role_name = "developer"
with pytest.raises(UnauthorizedError): with pytest.raises(UnauthorizedError):
Workspaces.update_member(random_user, workspace, member, role_name) Workspaces.update_member(random_user, workspace, member, role_name)
def test_owner_can_view_workspace_members(): def test_owner_can_view_workspace_members(workspace, workspace_owner):
owner = UserFactory.create() workspace_owner = UserFactory.create()
workspace = Workspaces.create(RequestFactory.create(creator=owner)) workspace = Workspaces.create(RequestFactory.create(creator=workspace_owner))
workspace = Workspaces.get_with_members(owner, workspace.id) workspace = Workspaces.get_with_members(workspace_owner, workspace.id)
assert workspace assert workspace
def test_ccpo_can_view_workspace_members(): def test_ccpo_can_view_workspace_members(workspace, workspace_owner):
workspace = Workspaces.create(RequestFactory.create(creator=UserFactory.create()))
ccpo = UserFactory.from_atat_role("ccpo") ccpo = UserFactory.from_atat_role("ccpo")
workspace = Workspaces.get_with_members(ccpo, workspace.id) assert Workspaces.get_with_members(ccpo, workspace.id)
assert workspace
def test_random_user_cannot_view_workspace_members(): def test_random_user_cannot_view_workspace_members(workspace):
workspace = Workspaces.create(RequestFactory.create(creator=UserFactory.create()))
developer = UserFactory.from_atat_role("developer") developer = UserFactory.from_atat_role("developer")
with pytest.raises(UnauthorizedError): with pytest.raises(UnauthorizedError):
workspace = Workspaces.get_with_members(developer, workspace.id) workspace = Workspaces.get_with_members(developer, workspace.id)
def test_scoped_workspace_only_returns_a_users_projects_and_environments(): def test_scoped_workspace_only_returns_a_users_projects_and_environments(
workspace = WorkspaceFactory.create() workspace, workspace_owner
):
new_project = Projects.create( new_project = Projects.create(
workspace.owner, workspace_owner,
workspace, workspace,
"My Project", "My Project",
"My project", "My project",
@ -194,7 +181,7 @@ def test_scoped_workspace_only_returns_a_users_projects_and_environments():
) )
developer = UserFactory.from_atat_role("developer") developer = UserFactory.from_atat_role("developer")
dev_environment = Environments.add_member( dev_environment = Environments.add_member(
workspace.owner, new_project.environments[0], developer workspace_owner, new_project.environments[0], developer
) )
scoped_workspace = Workspaces.get(developer, workspace.id) scoped_workspace = Workspaces.get(developer, workspace.id)
@ -205,11 +192,12 @@ def test_scoped_workspace_only_returns_a_users_projects_and_environments():
assert scoped_workspace.projects[0].environments == [dev_environment] assert scoped_workspace.projects[0].environments == [dev_environment]
def test_scoped_workspace_returns_all_projects_for_workspace_admin(): def test_scoped_workspace_returns_all_projects_for_workspace_admin(
workspace = Workspaces.create(RequestFactory.create()) workspace, workspace_owner
):
for _ in range(5): for _ in range(5):
Projects.create( Projects.create(
workspace.owner, workspace_owner,
workspace, workspace,
"My Project", "My Project",
"My project", "My project",
@ -225,34 +213,35 @@ def test_scoped_workspace_returns_all_projects_for_workspace_admin():
assert len(scoped_workspace.projects[0].environments) == 3 assert len(scoped_workspace.projects[0].environments) == 3
def test_scoped_workspace_returns_all_projects_for_workspace_owner(): def test_scoped_workspace_returns_all_projects_for_workspace_owner(
workspace = Workspaces.create(RequestFactory.create()) workspace, workspace_owner
owner = workspace.owner ):
for _ in range(5): for _ in range(5):
Projects.create( Projects.create(
owner, workspace, "My Project", "My project", ["dev", "staging", "prod"] workspace_owner,
workspace,
"My Project",
"My project",
["dev", "staging", "prod"],
) )
scoped_workspace = Workspaces.get(owner, workspace.id) scoped_workspace = Workspaces.get(workspace_owner, workspace.id)
assert len(scoped_workspace.projects) == 5 assert len(scoped_workspace.projects) == 5
assert len(scoped_workspace.projects[0].environments) == 3 assert len(scoped_workspace.projects[0].environments) == 3
def test_for_user_workspace_member(): def test_for_user_returns_assigned_workspaces_for_user(workspace, workspace_owner):
bob = UserFactory.from_atat_role("default") bob = UserFactory.from_atat_role("default")
workspace = Workspaces.create(RequestFactory.create())
Workspaces.add_member(workspace, bob, "developer") Workspaces.add_member(workspace, bob, "developer")
Workspaces.create(RequestFactory.create()) Workspaces.create(RequestFactory.create())
bobs_workspaces = Workspaces.for_user(bob) bobs_workspaces = Workspaces.for_user(bob)
assert len(bobs_workspaces) == 1 assert len(bobs_workspaces) == 1
def test_for_user_ccpo(): def test_for_user_returns_all_workspaces_for_ccpo(workspace, workspace_owner):
sam = UserFactory.from_atat_role("ccpo") sam = UserFactory.from_atat_role("ccpo")
workspace = Workspaces.create(RequestFactory.create())
Workspaces.create(RequestFactory.create()) Workspaces.create(RequestFactory.create())
sams_workspaces = Workspaces.for_user(sam) sams_workspaces = Workspaces.for_user(sam)