- add a base domain class - extract shared model code to mixin - rename invitation classes - invitation model relationship to portfolio_role name is now more generic "role"
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
from atst.domain.permission_sets import PermissionSets
|
|
from atst.domain.portfolio_roles import PortfolioRoles
|
|
from atst.domain.users import Users
|
|
from atst.models.permissions import Permissions
|
|
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
|
|
|
from tests.factories import (
|
|
PortfolioFactory,
|
|
UserFactory,
|
|
PortfolioInvitationFactory,
|
|
PortfolioRoleFactory,
|
|
)
|
|
|
|
|
|
def test_add_portfolio_role_with_permission_sets():
|
|
portfolio = PortfolioFactory.create()
|
|
new_user = UserFactory.create()
|
|
permission_sets = [PermissionSets.EDIT_PORTFOLIO_APPLICATION_MANAGEMENT]
|
|
port_role = PortfolioRoles.add(
|
|
new_user, portfolio.id, permission_sets=permission_sets
|
|
)
|
|
assert len(port_role.permission_sets) == 6
|
|
expected_names = [
|
|
PermissionSets.EDIT_PORTFOLIO_APPLICATION_MANAGEMENT,
|
|
PermissionSets.VIEW_PORTFOLIO_APPLICATION_MANAGEMENT,
|
|
PermissionSets.VIEW_PORTFOLIO_FUNDING,
|
|
PermissionSets.VIEW_PORTFOLIO_REPORTS,
|
|
PermissionSets.VIEW_PORTFOLIO_ADMIN,
|
|
PermissionSets.VIEW_PORTFOLIO,
|
|
]
|
|
actual_names = [prms.name for prms in port_role.permission_sets]
|
|
assert expected_names == expected_names
|
|
|
|
|
|
def test_disable_portfolio_role():
|
|
portfolio_role = PortfolioRoleFactory.create(status=PortfolioRoleStatus.ACTIVE)
|
|
assert portfolio_role.status == PortfolioRoleStatus.ACTIVE
|
|
|
|
PortfolioRoles.disable(portfolio_role=portfolio_role)
|
|
assert portfolio_role.status == PortfolioRoleStatus.DISABLED
|
|
|
|
|
|
def test_revoke_ppoc_permissions():
|
|
portfolio = PortfolioFactory.create()
|
|
portfolio_role = PortfolioRoles.get(
|
|
portfolio_id=portfolio.id, user_id=portfolio.owner.id
|
|
)
|
|
|
|
assert Permissions.EDIT_PORTFOLIO_POC in portfolio_role.permissions
|
|
|
|
PortfolioRoles.revoke_ppoc_permissions(portfolio_role=portfolio_role)
|
|
assert Permissions.EDIT_PORTFOLIO_POC not in portfolio_role.permissions
|
|
|
|
|
|
def test_make_ppoc():
|
|
portfolio = PortfolioFactory.create()
|
|
original_owner = portfolio.owner
|
|
new_owner = UserFactory.create()
|
|
|
|
new_owner_role = PortfolioRoles.add(user=new_owner, portfolio_id=portfolio.id)
|
|
|
|
PortfolioRoles.make_ppoc(portfolio_role=new_owner_role)
|
|
|
|
assert portfolio.owner is new_owner
|
|
assert Permissions.EDIT_PORTFOLIO_POC in new_owner_role.permissions
|
|
assert (
|
|
Permissions.EDIT_PORTFOLIO_POC
|
|
not in PortfolioRoles.get(
|
|
portfolio_id=portfolio.id, user_id=original_owner.id
|
|
).permissions
|
|
)
|