Merge pull request #730 from dod-ccpo/archive-portfolio-member
Remove Portfolio User
This commit is contained in:
@@ -11,6 +11,7 @@ from atst.domain.authz.decorator import user_can_access_decorator
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.domain.exceptions import UnauthorizedError
|
||||
from atst.models.permissions import Permissions
|
||||
from atst.domain.portfolio_roles import PortfolioRoles
|
||||
|
||||
from tests.utils import FakeLogger
|
||||
|
||||
@@ -75,7 +76,7 @@ def test_user_can_access():
|
||||
|
||||
portfolio = PortfolioFactory.create(owner=edit_admin)
|
||||
# factory gives view perms by default
|
||||
PortfolioRoleFactory.create(user=view_admin, portfolio=portfolio)
|
||||
view_admin_pr = PortfolioRoleFactory.create(user=view_admin, portfolio=portfolio)
|
||||
|
||||
# check a site-wide permission
|
||||
assert user_can_access(ccpo, Permissions.VIEW_AUDIT_LOG)
|
||||
@@ -101,6 +102,13 @@ def test_user_can_access():
|
||||
view_admin, Permissions.EDIT_PORTFOLIO_NAME, portfolio=portfolio
|
||||
)
|
||||
|
||||
# check when portfolio_role is disabled
|
||||
PortfolioRoles.disable(portfolio_role=view_admin_pr)
|
||||
with pytest.raises(UnauthorizedError):
|
||||
user_can_access(
|
||||
view_admin, Permissions.EDIT_PORTFOLIO_NAME, portfolio=portfolio
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def set_current_user(request_ctx):
|
||||
|
@@ -29,3 +29,11 @@ def test_add_portfolio_role_with_permission_sets():
|
||||
]
|
||||
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
|
||||
|
@@ -2,6 +2,8 @@ from flask import url_for
|
||||
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.models.permissions import Permissions
|
||||
from atst.domain.portfolio_roles import PortfolioRoles
|
||||
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
||||
|
||||
from tests.factories import (
|
||||
random_future_date,
|
||||
@@ -81,6 +83,54 @@ def test_portfolio_admin_screen_when_not_ppoc(client, user_session):
|
||||
assert translate("fragments.ppoc.update_btn").encode("utf8") not in response.data
|
||||
|
||||
|
||||
def test_remove_portfolio_member(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
|
||||
user = UserFactory.create()
|
||||
PortfolioRoleFactory.create(portfolio=portfolio, user=user)
|
||||
|
||||
user_session(portfolio.owner)
|
||||
|
||||
response = client.post(
|
||||
url_for("portfolios.remove_member", portfolio_id=portfolio.id, user_id=user.id),
|
||||
follow_redirects=False,
|
||||
)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.headers["Location"] == url_for(
|
||||
"portfolios.portfolio_admin",
|
||||
portfolio_id=portfolio.id,
|
||||
_anchor="portfolio-members",
|
||||
fragment="portfolio-members",
|
||||
_external=True,
|
||||
)
|
||||
assert (
|
||||
PortfolioRoles.get(portfolio_id=portfolio.id, user_id=user.id).status
|
||||
== PortfolioRoleStatus.DISABLED
|
||||
)
|
||||
|
||||
|
||||
def test_remove_portfolio_member_self(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
|
||||
user_session(portfolio.owner)
|
||||
|
||||
response = client.post(
|
||||
url_for(
|
||||
"portfolios.remove_member",
|
||||
portfolio_id=portfolio.id,
|
||||
user_id=portfolio.owner.id,
|
||||
),
|
||||
follow_redirects=False,
|
||||
)
|
||||
|
||||
assert response.status_code == 404
|
||||
assert (
|
||||
PortfolioRoles.get(portfolio_id=portfolio.id, user_id=portfolio.owner.id).status
|
||||
== PortfolioRoleStatus.ACTIVE
|
||||
)
|
||||
|
||||
|
||||
def test_portfolio_reports(client, user_session):
|
||||
portfolio = PortfolioFactory.create(
|
||||
applications=[
|
||||
|
Reference in New Issue
Block a user