Filter environments for user with given project id

Previously, calling `Environment.for_user(user, project)` would return
environments a user has access to across all projects. Now, we will only
return the relevant environements. This was the cause of a visual bug
where extra environments were shown in the project list.
This commit is contained in:
Patrick Smith
2018-09-30 22:06:10 -04:00
parent 7e84382a66
commit 7b2a099ef3
3 changed files with 47 additions and 2 deletions

View File

@@ -4,11 +4,19 @@ 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.roles import Roles
from atst.domain.workspaces import Workspaces
from atst.domain.workspace_users import WorkspaceUsers
from atst.domain.exceptions import NotFoundError
from atst.models.environment_role import EnvironmentRole
from tests.factories import RequestFactory, UserFactory
from tests.factories import (
RequestFactory,
UserFactory,
WorkspaceFactory,
EnvironmentFactory,
ProjectFactory,
)
def test_update_environment_roles():
@@ -43,3 +51,24 @@ def test_update_environment_roles():
assert new_dev_env_role.role == "billing_admin"
assert staging_env_role.role == "developer"
def test_get_scoped_environments(db):
developer = UserFactory.create()
workspace = WorkspaceFactory.create()
workspace_user = Workspaces.add_member(workspace, developer, "developer")
project1 = ProjectFactory.create(workspace=workspace)
project2 = ProjectFactory.create(workspace=workspace)
env1 = EnvironmentFactory.create(project=project1, name="project1 dev")
env2 = EnvironmentFactory.create(project=project1, name="project1 staging")
env3 = EnvironmentFactory.create(project=project2, name="project2 dev")
env4 = EnvironmentFactory.create(project=project2, name="project2 staging")
db.session.add(EnvironmentRole(user=developer, environment=env1, role="developer"))
db.session.add(EnvironmentRole(user=developer, environment=env4, role="developer"))
db.session.commit()
project1_envs = Environments.for_user(developer, project1)
assert [env.name for env in project1_envs] == ["project1 dev"]
project2_envs = Environments.for_user(developer, project2)
assert [env.name for env in project2_envs] == ["project2 staging"]