From 3026771a38b961c22647a9d138e023f1a41a6b36 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Mon, 19 Nov 2018 10:58:29 -0500 Subject: [PATCH] Workspaces.revoke_access --- atst/domain/workspaces/workspaces.py | 9 +++++++++ tests/domain/test_workspaces.py | 9 ++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/atst/domain/workspaces/workspaces.py b/atst/domain/workspaces/workspaces.py index 6c43bc3b..62ee3ba5 100644 --- a/atst/domain/workspaces/workspaces.py +++ b/atst/domain/workspaces/workspaces.py @@ -138,3 +138,12 @@ class Workspaces(object): workspace.name = new_data["name"] WorkspacesQuery.add_and_commit(workspace) + + @classmethod + def revoke_access(cls, user, workspace, target_workspace_role): + # TODO: What permission to here? Do we need a new one? + # Authorization.check_workspace_permission( + # user, workspace, Permissions.REQUEST_NEW_CSP_ROLE, "revoke workspace access" + # ) + target_workspace_role.status = WorkspaceRoleStatus.DISABLED + return WorkspacesQuery.add_and_commit(target_workspace_role) diff --git a/tests/domain/test_workspaces.py b/tests/domain/test_workspaces.py index 901089b0..99d82138 100644 --- a/tests/domain/test_workspaces.py +++ b/tests/domain/test_workspaces.py @@ -11,8 +11,8 @@ from atst.models.workspace_role import Status as WorkspaceRoleStatus from tests.factories import ( RequestFactory, UserFactory, - InvitationFactory, WorkspaceRoleFactory, + WorkspaceFactory, ) @@ -302,3 +302,10 @@ def test_can_create_workspaces_with_matching_names(): workspace_name = "Great Workspace" Workspaces.create(RequestFactory.create(), name=workspace_name) Workspaces.create(RequestFactory.create(), name=workspace_name) + + +def test_can_remove_workspace_access(): + workspace = WorkspaceFactory.create() + workspace_role = WorkspaceRoleFactory.create(workspace=workspace) + Workspaces.revoke_access(workspace.owner, workspace, workspace_role) + assert Workspaces.for_user(workspace_role.user) == []