Also remove enviornment access (stub)

This commit is contained in:
richard-dds 2018-11-19 15:53:30 -05:00
parent 3026771a38
commit 35150dfa10
4 changed files with 47 additions and 1 deletions

View File

@ -85,3 +85,7 @@ class Environments(object):
db.session.add(env_role)
db.session.commit()
@classmethod
def revoke_access(cls, user, environment, target_user):
pass

View File

@ -146,4 +146,7 @@ class Workspaces(object):
# user, workspace, Permissions.REQUEST_NEW_CSP_ROLE, "revoke workspace access"
# )
target_workspace_role.status = WorkspaceRoleStatus.DISABLED
for environment in workspace.all_environments:
# TODO: Implement Environments.revoke_access
Environments.revoke_access(user, environment, target_workspace_role.user)
return WorkspacesQuery.add_and_commit(target_workspace_role)

View File

@ -1,5 +1,6 @@
from sqlalchemy import Column, ForeignKey, String
from sqlalchemy.orm import relationship
from itertools import chain
from atst.models import Base
from atst.models.types import Id
@ -44,6 +45,10 @@ class Workspace(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
def displayname(self):
return self.name
@property
def all_environments(self):
return list(chain.from_iterable(p.environments for p in self.projects))
def auditable_workspace_id(self):
return self.id

View File

@ -3,7 +3,6 @@ import datetime
from atst.domain.environments import Environments
from atst.domain.workspaces import Workspaces
from atst.domain.projects import Projects
from atst.domain.workspace_roles import WorkspaceRoles
from atst.models.workspace_role import Status
from atst.models.role import Role
from atst.models.invitation import Status as InvitationStatus
@ -16,7 +15,9 @@ from tests.factories import (
EnvironmentFactory,
EnvironmentRoleFactory,
ProjectFactory,
WorkspaceFactory,
)
from atst.domain.workspace_roles import WorkspaceRoles
def test_has_no_ws_role_history(session):
@ -234,3 +235,36 @@ def test_can_resend_invitation_if_expired():
invitations=[InvitationFactory.create(status=InvitationStatus.REJECTED_EXPIRED)]
)
assert workspace_role.can_resend_invitation
def test_can_list_all_environments():
workspace = WorkspaceFactory.create(
projects=[
{
"name": "project1",
"environments": [
{"name": "dev"},
{"name": "staging"},
{"name": "prod"},
],
},
{
"name": "project2",
"environments": [
{"name": "dev"},
{"name": "staging"},
{"name": "prod"},
],
},
{
"name": "project3",
"environments": [
{"name": "dev"},
{"name": "staging"},
{"name": "prod"},
],
},
]
)
assert len(workspace.all_environments) == 9