remove portfolio_role direct relationship to role
This commit is contained in:
@@ -29,7 +29,7 @@ def test_user_without_permission_has_no_budget_report_link(client, user_session)
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create()
|
||||
Portfolios._create_portfolio_role(
|
||||
user, portfolio, "developer", status=PortfolioRoleStatus.ACTIVE
|
||||
user, portfolio, status=PortfolioRoleStatus.ACTIVE
|
||||
)
|
||||
user_session(user)
|
||||
response = client.get("/portfolios/{}/applications".format(portfolio.id))
|
||||
@@ -45,10 +45,7 @@ def test_user_with_permission_has_activity_log_link(client, user_session):
|
||||
ccpo = UserFactory.from_atat_role("ccpo")
|
||||
admin = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
portfolio=portfolio,
|
||||
user=admin,
|
||||
role=Roles.get("admin"),
|
||||
status=PortfolioRoleStatus.ACTIVE,
|
||||
portfolio=portfolio, user=admin, status=PortfolioRoleStatus.ACTIVE
|
||||
)
|
||||
|
||||
user_session(portfolio.owner)
|
||||
@@ -103,7 +100,7 @@ def test_user_with_permission_has_add_application_link(client, user_session):
|
||||
def test_user_without_permission_has_no_add_application_link(client, user_session):
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create()
|
||||
Portfolios._create_portfolio_role(user, portfolio, "developer")
|
||||
Portfolios._create_portfolio_role(user, portfolio)
|
||||
user_session(user)
|
||||
response = client.get("/portfolios/{}/applications".format(portfolio.id))
|
||||
assert (
|
||||
|
@@ -45,6 +45,7 @@ def test_user_with_permission_has_add_member_link(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
user_session(portfolio.owner)
|
||||
response = client.get("/portfolios/{}/members".format(portfolio.id))
|
||||
assert response.status_code == 200
|
||||
assert (
|
||||
'href="/portfolios/{}/members/new"'.format(portfolio.id).encode()
|
||||
in response.data
|
||||
@@ -54,7 +55,7 @@ def test_user_with_permission_has_add_member_link(client, user_session):
|
||||
def test_user_without_permission_has_no_add_member_link(client, user_session):
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create()
|
||||
Portfolios._create_portfolio_role(user, portfolio, "developer")
|
||||
Portfolios._create_portfolio_role(user, portfolio)
|
||||
user_session(user)
|
||||
response = client.get("/portfolios/{}/members".format(portfolio.id))
|
||||
assert (
|
||||
@@ -66,8 +67,8 @@ def test_user_without_permission_has_no_add_member_link(client, user_session):
|
||||
def test_permissions_for_view_member(client, user_session):
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create()
|
||||
Portfolios._create_portfolio_role(user, portfolio, "developer")
|
||||
member = PortfolioRoles.add(user, portfolio.id, "developer")
|
||||
Portfolios._create_portfolio_role(user, portfolio)
|
||||
member = PortfolioRoles.add(user, portfolio.id)
|
||||
user_session(user)
|
||||
response = client.get(
|
||||
url_for("portfolios.view_member", portfolio_id=portfolio.id, member_id=user.id)
|
||||
@@ -106,11 +107,12 @@ def test_create_member(client, user_session):
|
||||
assert len(portfolio_role.permission_sets) == 4
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="permission set display not implemented")
|
||||
def test_view_member_shows_role(client, user_session):
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create()
|
||||
Portfolios._create_portfolio_role(user, portfolio, "developer")
|
||||
member = PortfolioRoles.add(user, portfolio.id, "developer")
|
||||
Portfolios._create_portfolio_role(user, portfolio)
|
||||
member = PortfolioRoles.add(user, portfolio.id)
|
||||
user_session(portfolio.owner)
|
||||
response = client.get(
|
||||
url_for("portfolios.view_member", portfolio_id=portfolio.id, member_id=user.id)
|
||||
@@ -119,10 +121,11 @@ def test_view_member_shows_role(client, user_session):
|
||||
assert "initial-choice='developer'".encode() in response.data
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="need to re-implement for permission set changes")
|
||||
def test_update_member_portfolio_role(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
user = UserFactory.create()
|
||||
member = PortfolioRoles.add(user, portfolio.id, "developer")
|
||||
member = PortfolioRoles.add(user, portfolio.id)
|
||||
user_session(portfolio.owner)
|
||||
response = client.post(
|
||||
url_for(
|
||||
@@ -136,10 +139,11 @@ def test_update_member_portfolio_role(client, user_session):
|
||||
assert member.role_name == "security_auditor"
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="update member permission sets not implemented")
|
||||
def test_update_member_portfolio_role_with_no_data(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
user = UserFactory.create()
|
||||
member = PortfolioRoles.add(user, portfolio.id, "developer")
|
||||
member = PortfolioRoles.add(user, portfolio.id)
|
||||
user_session(portfolio.owner)
|
||||
response = client.post(
|
||||
url_for(
|
||||
@@ -152,10 +156,11 @@ def test_update_member_portfolio_role_with_no_data(client, user_session):
|
||||
assert member.role_name == "developer"
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="update member permission sets not implemented")
|
||||
def test_update_member_environment_role(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
user = UserFactory.create()
|
||||
member = PortfolioRoles.add(user, portfolio.id, "developer")
|
||||
member = PortfolioRoles.add(user, portfolio.id)
|
||||
application = Applications.create(
|
||||
portfolio.owner,
|
||||
portfolio,
|
||||
@@ -173,7 +178,6 @@ def test_update_member_environment_role(client, user_session):
|
||||
"portfolios.update_member", portfolio_id=portfolio.id, member_id=user.id
|
||||
),
|
||||
data={
|
||||
"portfolio_role": "developer",
|
||||
"env_" + str(env1_id): "security_auditor",
|
||||
"env_" + str(env2_id): "devops",
|
||||
},
|
||||
@@ -189,7 +193,7 @@ def test_update_member_environment_role(client, user_session):
|
||||
def test_update_member_environment_role_with_no_data(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
user = UserFactory.create()
|
||||
member = PortfolioRoles.add(user, portfolio.id, "developer")
|
||||
member = PortfolioRoles.add(user, portfolio.id)
|
||||
application = Applications.create(
|
||||
portfolio.owner,
|
||||
portfolio,
|
||||
@@ -263,6 +267,7 @@ def test_only_shows_revoke_access_button_if_active(client, user_session):
|
||||
member_id=member.user.id,
|
||||
)
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert "Remove Portfolio Access" in response.data.decode()
|
||||
assert "Revoke Invitation" not in response.data.decode()
|
||||
assert "Resend Invitation" not in response.data.decode()
|
||||
|
@@ -230,10 +230,13 @@ class TestTaskOrderInvitations:
|
||||
|
||||
def test_ko_can_view_task_order(client, user_session, portfolio, user):
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("owner"),
|
||||
portfolio=portfolio,
|
||||
user=user,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
task_order = TaskOrderFactory.create(portfolio=portfolio, contracting_officer=user)
|
||||
user_session(user)
|
||||
@@ -294,16 +297,22 @@ def test_ko_can_view_ko_review_page(client, user_session):
|
||||
cor = UserFactory.create()
|
||||
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("officer"),
|
||||
portfolio=portfolio,
|
||||
user=ko,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("officer"),
|
||||
portfolio=portfolio,
|
||||
user=cor,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
task_order = TaskOrderFactory.create(
|
||||
portfolio=portfolio,
|
||||
@@ -365,10 +374,13 @@ def test_mo_redirected_to_build_page(client, user_session, portfolio):
|
||||
def test_cor_redirected_to_build_page(client, user_session, portfolio):
|
||||
cor = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("officer"),
|
||||
portfolio=portfolio,
|
||||
user=cor,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
task_order = TaskOrderFactory.create(
|
||||
portfolio=portfolio, contracting_officer_representative=cor
|
||||
@@ -384,10 +396,13 @@ def test_submit_completed_ko_review_page_as_cor(
|
||||
client, user_session, pdf_upload, portfolio, user
|
||||
):
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("officer"),
|
||||
portfolio=portfolio,
|
||||
user=user,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
|
||||
task_order = TaskOrderFactory.create(
|
||||
@@ -429,10 +444,13 @@ def test_submit_completed_ko_review_page_as_ko(
|
||||
ko = UserFactory.create()
|
||||
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("officer"),
|
||||
portfolio=portfolio,
|
||||
user=ko,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
|
||||
task_order = TaskOrderFactory.create(portfolio=portfolio, contracting_officer=ko)
|
||||
@@ -470,10 +488,13 @@ def test_submit_completed_ko_review_page_as_ko(
|
||||
def test_so_review_page(app, client, user_session, portfolio):
|
||||
so = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("officer"),
|
||||
portfolio=portfolio,
|
||||
user=so,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
task_order = TaskOrderFactory.create(portfolio=portfolio, security_officer=so)
|
||||
|
||||
@@ -508,10 +529,13 @@ def test_so_review_page(app, client, user_session, portfolio):
|
||||
def test_submit_so_review(app, client, user_session, portfolio):
|
||||
so = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
role=Roles.get("officer"),
|
||||
portfolio=portfolio,
|
||||
user=so,
|
||||
status=PortfolioStatus.ACTIVE,
|
||||
permission_sets=[
|
||||
Roles.get("view_portfolio"),
|
||||
Roles.get("view_portfolio_funding"),
|
||||
],
|
||||
)
|
||||
task_order = TaskOrderFactory.create(portfolio=portfolio, security_officer=so)
|
||||
dd_254_data = DD254Factory.dictionary()
|
||||
|
@@ -28,9 +28,6 @@ def test_invite_officers_to_task_order(client, user_session, queue):
|
||||
|
||||
# owner and three officers are portfolio members
|
||||
assert len(portfolio.members) == 4
|
||||
roles = [member.role.name for member in portfolio.members]
|
||||
# officers exist in roles
|
||||
assert roles.count("officer") == 3
|
||||
# email invitations are enqueued
|
||||
assert len(queue.get_queue()) == 3
|
||||
# task order has relationship to user for each officer role
|
||||
|
@@ -33,7 +33,7 @@ def test_non_owner_user_with_one_portfolio_redirected_to_portfolio_applications(
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create()
|
||||
Portfolios._create_portfolio_role(
|
||||
user, portfolio, "developer", status=PortfolioRoleStatus.ACTIVE
|
||||
user, portfolio, status=PortfolioRoleStatus.ACTIVE
|
||||
)
|
||||
|
||||
user_session(user)
|
||||
@@ -51,7 +51,7 @@ def test_non_owner_user_with_mulitple_portfolios_redirected_to_portfolios(
|
||||
portfolio = PortfolioFactory.create()
|
||||
portfolios.append(portfolio)
|
||||
role = Portfolios._create_portfolio_role(
|
||||
user, portfolio, "developer", status=PortfolioRoleStatus.ACTIVE
|
||||
user, portfolio, status=PortfolioRoleStatus.ACTIVE
|
||||
)
|
||||
|
||||
user_session(user)
|
||||
|
Reference in New Issue
Block a user