Applications.for_user returns user's portfolio applications.

The method has been updated to that, given a user and portfolio, it
returns the portfolio applications for which the user has an application
role.
This commit is contained in:
dandds 2019-05-03 08:13:56 -04:00
parent a2ebdf78a0
commit 8bd945d0d4
2 changed files with 33 additions and 7 deletions

View File

@ -6,9 +6,7 @@ from atst.domain.application_roles import ApplicationRoles
from atst.domain.environments import Environments
from atst.domain.exceptions import NotFoundError
from atst.domain.users import Users
from atst.models.application import Application
from atst.models.environment import Environment
from atst.models.environment_role import EnvironmentRole
from atst.models import Application, ApplicationRole, ApplicationRoleStatus
class Applications(BaseDomainClass):
@ -31,10 +29,11 @@ class Applications(BaseDomainClass):
def for_user(self, user, portfolio):
return (
db.session.query(Application)
.join(Environment)
.join(EnvironmentRole)
.join(ApplicationRole)
.filter(Application.portfolio_id == portfolio.id)
.filter(EnvironmentRole.user_id == user.id)
.filter(ApplicationRole.application_id == Application.id)
.filter(ApplicationRole.user_id == user.id)
.filter(ApplicationRole.status == ApplicationRoleStatus.ACTIVE)
.all()
)

View File

@ -1,7 +1,7 @@
import pytest
from uuid import uuid4
from atst.models import CSPRole
from atst.models import CSPRole, ApplicationRoleStatus
from atst.domain.applications import Applications
from atst.domain.permission_sets import PermissionSets
from atst.domain.exceptions import NotFoundError
@ -128,3 +128,30 @@ def test_create_member():
env_roles = member_role.user.environment_roles
assert len(env_roles) == 1
assert env_roles[0].environment == env1
def test_for_user():
user = UserFactory.create()
portfolio = PortfolioFactory.create()
for _x in range(4):
ApplicationFactory.create(portfolio=portfolio)
ApplicationRoleFactory.create(
application=portfolio.applications[0],
user=user,
status=ApplicationRoleStatus.ACTIVE,
)
ApplicationRoleFactory.create(
application=portfolio.applications[1],
user=user,
status=ApplicationRoleStatus.ACTIVE,
)
ApplicationRoleFactory.create(
application=portfolio.applications[2],
user=user,
status=ApplicationRoleStatus.PENDING,
)
assert len(portfolio.applications) == 4
user_applications = Applications.for_user(user, portfolio)
assert len(user_applications) == 2