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:
parent
a2ebdf78a0
commit
8bd945d0d4
@ -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()
|
||||
)
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user