@@ -2,7 +2,7 @@ import pytest
|
||||
|
||||
from atst.domain.audit_log import AuditLog
|
||||
from atst.domain.exceptions import UnauthorizedError
|
||||
from atst.domain.roles import Roles
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
||||
from tests.factories import (
|
||||
UserFactory,
|
||||
@@ -19,7 +19,7 @@ def ccpo():
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def developer():
|
||||
return UserFactory.from_atat_role("default")
|
||||
return UserFactory.create()
|
||||
|
||||
|
||||
def test_non_admin_cannot_view_audit_log(developer):
|
||||
@@ -27,6 +27,7 @@ def test_non_admin_cannot_view_audit_log(developer):
|
||||
AuditLog.get_all_events(developer)
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="no ccpo access yet")
|
||||
def test_ccpo_can_view_audit_log(ccpo):
|
||||
events = AuditLog.get_all_events(ccpo)
|
||||
assert len(events) > 0
|
||||
@@ -41,6 +42,7 @@ def test_paginate_audit_log(ccpo):
|
||||
assert len(events) == 25
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="no ccpo access yet")
|
||||
def test_ccpo_can_view_ws_audit_log(ccpo):
|
||||
portfolio = PortfolioFactory.create()
|
||||
events = AuditLog.get_portfolio_events(ccpo, portfolio)
|
||||
@@ -51,10 +53,7 @@ def test_ws_admin_can_view_ws_audit_log():
|
||||
portfolio = PortfolioFactory.create()
|
||||
admin = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
portfolio=portfolio,
|
||||
user=admin,
|
||||
role=Roles.get("admin"),
|
||||
status=PortfolioRoleStatus.ACTIVE,
|
||||
portfolio=portfolio, user=admin, status=PortfolioRoleStatus.ACTIVE
|
||||
)
|
||||
events = AuditLog.get_portfolio_events(admin, portfolio)
|
||||
assert len(events) > 0
|
||||
@@ -66,6 +65,7 @@ def test_ws_owner_can_view_ws_audit_log():
|
||||
assert len(events) > 0
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="all portfolio users can view audit log")
|
||||
def test_other_users_cannot_view_ws_audit_log():
|
||||
with pytest.raises(UnauthorizedError):
|
||||
portfolio = PortfolioFactory.create()
|
||||
|
@@ -1,8 +1,10 @@
|
||||
import pytest
|
||||
|
||||
from tests.factories import TaskOrderFactory, UserFactory
|
||||
from tests.factories import TaskOrderFactory, UserFactory, PortfolioRoleFactory
|
||||
from atst.domain.authz import Authorization
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.domain.exceptions import UnauthorizedError
|
||||
from atst.models.permissions import Permissions
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -40,3 +42,19 @@ def test_check_is_ko_or_cor(task_order, invalid_user):
|
||||
|
||||
with pytest.raises(UnauthorizedError):
|
||||
Authorization.check_is_ko_or_cor(invalid_user, task_order)
|
||||
|
||||
|
||||
def test_has_portfolio_permission():
|
||||
role_one = PermissionSets.get(PermissionSets.VIEW_PORTFOLIO_FUNDING)
|
||||
role_two = PermissionSets.get(PermissionSets.VIEW_PORTFOLIO_REPORTS)
|
||||
port_role = PortfolioRoleFactory.create(permission_sets=[role_one, role_two])
|
||||
different_user = UserFactory.create()
|
||||
assert Authorization.has_portfolio_permission(
|
||||
port_role.user, port_role.portfolio, Permissions.VIEW_PORTFOLIO_REPORTS
|
||||
)
|
||||
assert not Authorization.has_portfolio_permission(
|
||||
port_role.user, port_role.portfolio, Permissions.CREATE_TASK_ORDER
|
||||
)
|
||||
assert not Authorization.has_portfolio_permission(
|
||||
different_user, port_role.portfolio, Permissions.VIEW_PORTFOLIO_REPORTS
|
||||
)
|
||||
|
@@ -14,7 +14,7 @@ def test_create_environments():
|
||||
|
||||
def test_create_environment_role_creates_cloud_id(session):
|
||||
owner = UserFactory.create()
|
||||
developer = UserFactory.from_atat_role("developer")
|
||||
developer = UserFactory.create()
|
||||
|
||||
portfolio = PortfolioFactory.create(
|
||||
owner=owner,
|
||||
@@ -38,7 +38,7 @@ def test_create_environment_role_creates_cloud_id(session):
|
||||
|
||||
def test_update_environment_roles():
|
||||
owner = UserFactory.create()
|
||||
developer = UserFactory.from_atat_role("developer")
|
||||
developer = UserFactory.create()
|
||||
|
||||
portfolio = PortfolioFactory.create(
|
||||
owner=owner,
|
||||
@@ -81,7 +81,7 @@ def test_update_environment_roles():
|
||||
|
||||
def test_remove_environment_role():
|
||||
owner = UserFactory.create()
|
||||
developer = UserFactory.from_atat_role("developer")
|
||||
developer = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create(
|
||||
owner=owner,
|
||||
members=[{"user": developer, "role_name": "developer"}],
|
||||
@@ -132,7 +132,7 @@ def test_remove_environment_role():
|
||||
|
||||
def test_no_update_to_environment_roles():
|
||||
owner = UserFactory.create()
|
||||
developer = UserFactory.from_atat_role("developer")
|
||||
developer = UserFactory.create()
|
||||
|
||||
portfolio = PortfolioFactory.create(
|
||||
owner=owner,
|
||||
|
32
tests/domain/test_permission_sets.py
Normal file
32
tests/domain/test_permission_sets.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import pytest
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.domain.exceptions import NotFoundError
|
||||
from atst.utils import first_or_none
|
||||
|
||||
|
||||
def test_get_all():
|
||||
roles = PermissionSets.get_all()
|
||||
assert roles
|
||||
|
||||
|
||||
def test_get_existing_permission_set():
|
||||
role = PermissionSets.get("portfolio_poc")
|
||||
assert role.name == "portfolio_poc"
|
||||
|
||||
|
||||
def test_get_nonexistent_permission_set():
|
||||
with pytest.raises(NotFoundError):
|
||||
PermissionSets.get("nonexistent")
|
||||
|
||||
|
||||
def test_get_many():
|
||||
perms_sets = PermissionSets.get_many(
|
||||
[PermissionSets.VIEW_PORTFOLIO_FUNDING, PermissionSets.EDIT_PORTFOLIO_FUNDING]
|
||||
)
|
||||
assert len(perms_sets) == 2
|
||||
assert first_or_none(
|
||||
lambda p: p.name == PermissionSets.VIEW_PORTFOLIO_FUNDING, perms_sets
|
||||
)
|
||||
assert first_or_none(
|
||||
lambda p: p.name == PermissionSets.EDIT_PORTFOLIO_FUNDING, perms_sets
|
||||
)
|
@@ -1,7 +1,7 @@
|
||||
from atst.domain.portfolio_roles import PortfolioRoles
|
||||
from atst.domain.users import Users
|
||||
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
||||
from atst.domain.roles import Roles
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
|
||||
from tests.factories import (
|
||||
PortfolioFactory,
|
||||
@@ -11,55 +11,21 @@ from tests.factories import (
|
||||
)
|
||||
|
||||
|
||||
def test_can_create_new_portfolio_role():
|
||||
def test_add_portfolio_role_with_permission_sets():
|
||||
portfolio = PortfolioFactory.create()
|
||||
new_user = UserFactory.create()
|
||||
|
||||
portfolio_role_dicts = [{"id": new_user.id, "portfolio_role": "owner"}]
|
||||
portfolio_roles = PortfolioRoles.add_many(portfolio.id, portfolio_role_dicts)
|
||||
|
||||
assert portfolio_roles[0].user_id == new_user.id
|
||||
assert portfolio_roles[0].user.atat_role.name == new_user.atat_role.name
|
||||
assert portfolio_roles[0].role.name == new_user.portfolio_roles[0].role.name
|
||||
|
||||
|
||||
def test_can_update_existing_portfolio_role():
|
||||
portfolio = PortfolioFactory.create()
|
||||
new_user = UserFactory.create()
|
||||
|
||||
PortfolioRoles.add_many(
|
||||
portfolio.id, [{"id": new_user.id, "portfolio_role": "owner"}]
|
||||
)
|
||||
portfolio_roles = PortfolioRoles.add_many(
|
||||
portfolio.id, [{"id": new_user.id, "portfolio_role": "developer"}]
|
||||
)
|
||||
|
||||
assert portfolio_roles[0].user.atat_role.name == new_user.atat_role.name
|
||||
assert portfolio_roles[0].role.name == new_user.portfolio_roles[0].role.name
|
||||
|
||||
|
||||
def test_portfolio_role_permissions():
|
||||
portfolio_one = PortfolioFactory.create()
|
||||
portfolio_two = PortfolioFactory.create()
|
||||
new_user = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
portfolio=portfolio_one,
|
||||
user=new_user,
|
||||
role=Roles.get("developer"),
|
||||
status=PortfolioRoleStatus.ACTIVE,
|
||||
)
|
||||
PortfolioRoleFactory.create(
|
||||
portfolio=portfolio_two,
|
||||
user=new_user,
|
||||
role=Roles.get("developer"),
|
||||
status=PortfolioRoleStatus.PENDING,
|
||||
)
|
||||
|
||||
default_perms = set(new_user.atat_role.permissions)
|
||||
assert len(
|
||||
PortfolioRoles.portfolio_role_permissions(portfolio_one, new_user)
|
||||
) > len(default_perms)
|
||||
assert (
|
||||
PortfolioRoles.portfolio_role_permissions(portfolio_two, new_user)
|
||||
== default_perms
|
||||
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
|
||||
|
@@ -6,9 +6,15 @@ from atst.domain.portfolios import Portfolios, PortfolioError
|
||||
from atst.domain.portfolio_roles import PortfolioRoles
|
||||
from atst.domain.applications import Applications
|
||||
from atst.domain.environments import Environments
|
||||
from atst.domain.permission_sets import PermissionSets, PORTFOLIO_PERMISSION_SETS
|
||||
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
||||
|
||||
from tests.factories import UserFactory, PortfolioRoleFactory, PortfolioFactory
|
||||
from tests.factories import (
|
||||
UserFactory,
|
||||
PortfolioRoleFactory,
|
||||
PortfolioFactory,
|
||||
get_all_portfolio_permission_sets,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
@@ -52,7 +58,7 @@ def test_get_for_update_applications_allows_owner(portfolio, portfolio_owner):
|
||||
|
||||
def test_get_for_update_applications_blocks_developer(portfolio):
|
||||
developer = UserFactory.create()
|
||||
PortfolioRoles.add(developer, portfolio.id, "developer")
|
||||
PortfolioRoles.add(developer, portfolio.id)
|
||||
|
||||
with pytest.raises(UnauthorizedError):
|
||||
Portfolios.get_for_update_applications(developer, portfolio.id)
|
||||
@@ -113,13 +119,12 @@ def test_update_portfolio_role_role(portfolio, portfolio_owner):
|
||||
}
|
||||
PortfolioRoleFactory._meta.sqlalchemy_session_persistence = "flush"
|
||||
member = PortfolioRoleFactory.create(portfolio=portfolio)
|
||||
role_name = "admin"
|
||||
permission_sets = [PermissionSets.EDIT_PORTFOLIO_FUNDING]
|
||||
|
||||
updated_member = Portfolios.update_member(
|
||||
portfolio_owner, portfolio, member, role_name
|
||||
portfolio_owner, portfolio, member, permission_sets=permission_sets
|
||||
)
|
||||
assert updated_member.portfolio == portfolio
|
||||
assert updated_member.role_name == role_name
|
||||
|
||||
|
||||
def test_need_permission_to_update_portfolio_role_role(portfolio, portfolio_owner):
|
||||
@@ -144,18 +149,40 @@ def test_owner_can_view_portfolio_members(portfolio, portfolio_owner):
|
||||
assert portfolio
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="no ccpo access yet")
|
||||
def test_ccpo_can_view_portfolio_members(portfolio, portfolio_owner):
|
||||
ccpo = UserFactory.from_atat_role("ccpo")
|
||||
assert Portfolios.get_with_members(ccpo, portfolio.id)
|
||||
|
||||
|
||||
def test_random_user_cannot_view_portfolio_members(portfolio):
|
||||
developer = UserFactory.from_atat_role("developer")
|
||||
developer = UserFactory.create()
|
||||
|
||||
with pytest.raises(UnauthorizedError):
|
||||
portfolio = Portfolios.get_with_members(developer, portfolio.id)
|
||||
|
||||
|
||||
def test_scoped_portfolio_for_admin_missing_view_apps_perms(portfolio_owner, portfolio):
|
||||
Applications.create(
|
||||
portfolio_owner,
|
||||
portfolio,
|
||||
"My Application 2",
|
||||
"My application 2",
|
||||
["dev", "staging", "prod"],
|
||||
)
|
||||
restricted_admin = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
portfolio=portfolio,
|
||||
user=restricted_admin,
|
||||
permission_sets=[PermissionSets.get(PermissionSets.VIEW_PORTFOLIO)],
|
||||
)
|
||||
scoped_portfolio = Portfolios.get(restricted_admin, portfolio.id)
|
||||
assert scoped_portfolio.id == portfolio.id
|
||||
assert len(portfolio.applications) == 1
|
||||
assert len(scoped_portfolio.applications) == 0
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="should be reworked pending application member changes")
|
||||
def test_scoped_portfolio_only_returns_a_users_applications_and_environments(
|
||||
portfolio, portfolio_owner
|
||||
):
|
||||
@@ -173,7 +200,7 @@ def test_scoped_portfolio_only_returns_a_users_applications_and_environments(
|
||||
"My application 2",
|
||||
["dev", "staging", "prod"],
|
||||
)
|
||||
developer = UserFactory.from_atat_role("developer")
|
||||
developer = UserFactory.create()
|
||||
dev_environment = Environments.add_member(
|
||||
new_application.environments[0], developer, "developer"
|
||||
)
|
||||
@@ -198,9 +225,10 @@ def test_scoped_portfolio_returns_all_applications_for_portfolio_admin(
|
||||
["dev", "staging", "prod"],
|
||||
)
|
||||
|
||||
admin = UserFactory.from_atat_role("default")
|
||||
Portfolios._create_portfolio_role(
|
||||
admin, portfolio, "admin", status=PortfolioRoleStatus.ACTIVE
|
||||
admin = UserFactory.create()
|
||||
perm_sets = get_all_portfolio_permission_sets()
|
||||
PortfolioRoleFactory.create(
|
||||
user=admin, portfolio=portfolio, permission_sets=perm_sets
|
||||
)
|
||||
scoped_portfolio = Portfolios.get(admin, portfolio.id)
|
||||
|
||||
@@ -227,7 +255,7 @@ def test_scoped_portfolio_returns_all_applications_for_portfolio_owner(
|
||||
|
||||
|
||||
def test_for_user_returns_active_portfolios_for_user(portfolio, portfolio_owner):
|
||||
bob = UserFactory.from_atat_role("default")
|
||||
bob = UserFactory.create()
|
||||
PortfolioRoleFactory.create(
|
||||
user=bob, portfolio=portfolio, status=PortfolioRoleStatus.ACTIVE
|
||||
)
|
||||
@@ -239,14 +267,15 @@ def test_for_user_returns_active_portfolios_for_user(portfolio, portfolio_owner)
|
||||
|
||||
|
||||
def test_for_user_does_not_return_inactive_portfolios(portfolio, portfolio_owner):
|
||||
bob = UserFactory.from_atat_role("default")
|
||||
Portfolios.add_member(portfolio, bob, "developer")
|
||||
bob = UserFactory.create()
|
||||
Portfolios.add_member(portfolio, bob)
|
||||
PortfolioFactory.create()
|
||||
bobs_portfolios = Portfolios.for_user(bob)
|
||||
|
||||
assert len(bobs_portfolios) == 0
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="CCPO status not fully implemented")
|
||||
def test_for_user_returns_all_portfolios_for_ccpo(portfolio, portfolio_owner):
|
||||
sam = UserFactory.from_atat_role("ccpo")
|
||||
PortfolioFactory.create()
|
||||
@@ -260,16 +289,18 @@ def test_get_for_update_information(portfolio, portfolio_owner):
|
||||
assert portfolio == owner_ws
|
||||
|
||||
admin = UserFactory.create()
|
||||
Portfolios._create_portfolio_role(
|
||||
admin, portfolio, "admin", status=PortfolioRoleStatus.ACTIVE
|
||||
perm_sets = get_all_portfolio_permission_sets()
|
||||
PortfolioRoleFactory.create(
|
||||
user=admin, portfolio=portfolio, permission_sets=perm_sets
|
||||
)
|
||||
admin_ws = Portfolios.get_for_update_information(admin, portfolio.id)
|
||||
assert portfolio == admin_ws
|
||||
|
||||
ccpo = UserFactory.from_atat_role("ccpo")
|
||||
assert Portfolios.get_for_update_information(ccpo, portfolio.id)
|
||||
# TODO: implement ccpo roles
|
||||
# ccpo = UserFactory.from_atat_role("ccpo")
|
||||
# assert Portfolios.get_for_update_information(ccpo, portfolio.id)
|
||||
|
||||
developer = UserFactory.from_atat_role("developer")
|
||||
developer = UserFactory.create()
|
||||
with pytest.raises(UnauthorizedError):
|
||||
Portfolios.get_for_update_information(developer, portfolio.id)
|
||||
|
||||
|
@@ -1,18 +0,0 @@
|
||||
import pytest
|
||||
from atst.domain.roles import Roles
|
||||
from atst.domain.exceptions import NotFoundError
|
||||
|
||||
|
||||
def test_get_all_roles():
|
||||
roles = Roles.get_all()
|
||||
assert roles
|
||||
|
||||
|
||||
def test_get_existing_role():
|
||||
role = Roles.get("developer")
|
||||
assert role.name == "developer"
|
||||
|
||||
|
||||
def test_get_nonexistent_role():
|
||||
with pytest.raises(NotFoundError):
|
||||
Roles.get("nonexistent")
|
@@ -2,6 +2,8 @@ import pytest
|
||||
|
||||
from atst.domain.task_orders import TaskOrders, TaskOrderError, DD254s
|
||||
from atst.domain.exceptions import UnauthorizedError
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
from atst.domain.portfolio_roles import PortfolioRoles
|
||||
from atst.models.attachment import Attachment
|
||||
|
||||
from tests.factories import (
|
||||
@@ -90,7 +92,7 @@ def test_add_officer_who_is_already_portfolio_member():
|
||||
|
||||
assert task_order.contracting_officer == owner
|
||||
member = task_order.portfolio.members[0]
|
||||
assert member.user == owner and member.role_name == "owner"
|
||||
assert member.user == owner
|
||||
|
||||
|
||||
def test_task_order_access():
|
||||
@@ -111,19 +113,26 @@ def test_task_order_access():
|
||||
|
||||
portfolio = PortfolioFactory.create(owner=creator)
|
||||
task_order = TaskOrderFactory.create(creator=creator, portfolio=portfolio)
|
||||
PortfolioRoleFactory.create(user=member, portfolio=task_order.portfolio)
|
||||
PortfolioRoleFactory.create(
|
||||
user=member,
|
||||
portfolio=task_order.portfolio,
|
||||
permission_sets=[
|
||||
PermissionSets.get(prms)
|
||||
for prms in PortfolioRoles.DEFAULT_PORTFOLIO_PERMISSION_SETS
|
||||
],
|
||||
)
|
||||
TaskOrders.add_officer(
|
||||
creator, task_order, "contracting_officer", officer.to_dictionary()
|
||||
)
|
||||
|
||||
check_access([creator, officer], [member, rando], "get", [task_order.id])
|
||||
check_access([creator], [officer, member, rando], "create", [portfolio])
|
||||
check_access([creator, officer, member], [rando], "get", [task_order.id])
|
||||
check_access([creator, officer], [member, rando], "create", [portfolio])
|
||||
check_access([creator, officer], [member, rando], "update", [task_order])
|
||||
check_access(
|
||||
[creator],
|
||||
[officer, member, rando],
|
||||
[creator, officer],
|
||||
[member, rando],
|
||||
"add_officer",
|
||||
[task_order, "contracting_officer", rando.to_dictionary()],
|
||||
[task_order, "contracting_officer", UserFactory.dictionary()],
|
||||
)
|
||||
|
||||
|
||||
|
@@ -8,14 +8,14 @@ DOD_ID = "my_dod_id"
|
||||
|
||||
|
||||
def test_create_user():
|
||||
user = Users.create(DOD_ID, "developer")
|
||||
assert user.atat_role.name == "developer"
|
||||
user = Users.create(DOD_ID, "default")
|
||||
assert user.atat_role.name == "default"
|
||||
|
||||
|
||||
def test_create_user_with_existing_email():
|
||||
Users.create(DOD_ID, "developer", email="thisusersemail@usersRus.com")
|
||||
Users.create(DOD_ID, "default", email="thisusersemail@usersRus.com")
|
||||
with pytest.raises(AlreadyExistsError):
|
||||
Users.create(DOD_ID, "admin", email="thisusersemail@usersRus.com")
|
||||
Users.create(DOD_ID, "ccpo", email="thisusersemail@usersRus.com")
|
||||
|
||||
|
||||
def test_create_user_with_nonexistent_role():
|
||||
@@ -24,61 +24,61 @@ def test_create_user_with_nonexistent_role():
|
||||
|
||||
|
||||
def test_get_or_create_nonexistent_user():
|
||||
user = Users.get_or_create_by_dod_id(DOD_ID, atat_role_name="developer")
|
||||
user = Users.get_or_create_by_dod_id(DOD_ID, atat_role_name="default")
|
||||
assert user.dod_id == DOD_ID
|
||||
|
||||
|
||||
def test_get_or_create_existing_user():
|
||||
Users.get_or_create_by_dod_id(DOD_ID, atat_role_name="developer")
|
||||
user = Users.get_or_create_by_dod_id(DOD_ID, atat_role_name="developer")
|
||||
Users.get_or_create_by_dod_id(DOD_ID, atat_role_name="default")
|
||||
user = Users.get_or_create_by_dod_id(DOD_ID, atat_role_name="default")
|
||||
assert user
|
||||
|
||||
|
||||
def test_get_user():
|
||||
new_user = Users.create(DOD_ID, "developer")
|
||||
new_user = Users.create(DOD_ID, "default")
|
||||
user = Users.get(new_user.id)
|
||||
assert user.id == new_user.id
|
||||
|
||||
|
||||
def test_get_nonexistent_user():
|
||||
Users.create(DOD_ID, "developer")
|
||||
Users.create(DOD_ID, "default")
|
||||
with pytest.raises(NotFoundError):
|
||||
Users.get(uuid4())
|
||||
|
||||
|
||||
def test_get_user_by_dod_id():
|
||||
new_user = Users.create(DOD_ID, "developer")
|
||||
new_user = Users.create(DOD_ID, "default")
|
||||
user = Users.get_by_dod_id(DOD_ID)
|
||||
assert user == new_user
|
||||
|
||||
|
||||
def test_update_role():
|
||||
new_user = Users.create(DOD_ID, "developer")
|
||||
new_user = Users.create(DOD_ID, "default")
|
||||
updated_user = Users.update_role(new_user.id, "ccpo")
|
||||
|
||||
assert updated_user.atat_role.name == "ccpo"
|
||||
|
||||
|
||||
def test_update_role_with_nonexistent_user():
|
||||
Users.create(DOD_ID, "developer")
|
||||
Users.create(DOD_ID, "default")
|
||||
with pytest.raises(NotFoundError):
|
||||
Users.update_role(uuid4(), "ccpo")
|
||||
|
||||
|
||||
def test_update_existing_user_with_nonexistent_role():
|
||||
new_user = Users.create(DOD_ID, "developer")
|
||||
new_user = Users.create(DOD_ID, "default")
|
||||
with pytest.raises(NotFoundError):
|
||||
Users.update_role(new_user.id, "nonexistent")
|
||||
|
||||
|
||||
def test_update_user():
|
||||
new_user = Users.create(DOD_ID, "developer")
|
||||
new_user = Users.create(DOD_ID, "default")
|
||||
updated_user = Users.update(new_user, {"first_name": "Jabba"})
|
||||
assert updated_user.first_name == "Jabba"
|
||||
|
||||
|
||||
def test_update_user_with_dod_id():
|
||||
new_user = Users.create(DOD_ID, "developer")
|
||||
new_user = Users.create(DOD_ID, "default")
|
||||
with pytest.raises(UnauthorizedError) as excinfo:
|
||||
Users.update(new_user, {"dod_id": "1234567890"})
|
||||
|
||||
|
Reference in New Issue
Block a user