Skip to content

Commit 01c8d5d

Browse files
Chinmay PandeyChinmay Pandey
authored andcommitted
fix: init
1 parent da32dd4 commit 01c8d5d

2 files changed

Lines changed: 69 additions & 1 deletion

File tree

‎src/mas/devops/users.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1712,7 +1712,7 @@ def create_initial_user_for_saas_post_9_1(
17121712
resource_id=resource_id,
17131713
)
17141714

1715-
if len(manage_security_groups) > 0 and "manage" in self.mas_workspace_application_ids:
1715+
if len(manage_security_groups) > 0 and ("manage" in self.mas_workspace_application_ids or "facilities" in self.mas_workspace_application_ids):
17161716
if user_type == "PRIMARY" and groupreassign is not None:
17171717
if resource_id and mxintadm_manage_api_key:
17181718
self.set_user_group_reassignment_auth(user_id, resource_id, groupreassign, mxintadm_manage_api_key)

‎test/src/test_users.py‎

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2530,3 +2530,71 @@ def fail_for_users_b_and_e(user, user_type, groupreassign=None):
25302530
}
25312531

25322532
user_utils.await_mas_application_availability.assert_has_calls([call("manage"), call("iot")])
2533+
2534+
2535+
def _setup_post_9_1_user_utils(user_utils, user_id, mas_workspace_application_ids):
2536+
"""Helper: wire up mocks for a post-9.1 create_initial_user_for_saas call."""
2537+
resource_id = f"_{user_id}_resource_id"
2538+
user_utils.get_or_create_user = MagicMock(return_value=(resource_id, {}))
2539+
user_utils.link_user_to_local_idp = MagicMock()
2540+
user_utils.get_mas_applications_in_workspace = MagicMock(return_value=list(map(lambda x: {"id": x}, mas_workspace_application_ids)))
2541+
user_utils.await_mas_application_availability = MagicMock()
2542+
user_utils.set_user_application_permission = MagicMock()
2543+
user_utils.check_user_sync = MagicMock()
2544+
manage_api_key = "manage_api_key" # pragma: allowlist secret
2545+
user_utils.create_or_get_manage_api_key_for_user = MagicMock(return_value=manage_api_key)
2546+
user_utils.add_user_to_manage_group = MagicMock()
2547+
user_utils.set_user_group_reassignment_auth = MagicMock()
2548+
return resource_id, manage_api_key
2549+
2550+
2551+
def test_create_initial_user_for_saas_post_9_1_manage_primary(user_utils):
2552+
"""Post-9.1 PRIMARY user: reassignment fires when workspace contains 'manage'."""
2553+
if Version(user_utils.mas_version) < Version("9.1"):
2554+
pytest.skip("post-9.1 only")
2555+
2556+
user_id = "primaryuser"
2557+
resource_id, manage_api_key = _setup_post_9_1_user_utils(user_utils, user_id, ["manage", "iot"])
2558+
groupreassign = [{"groupname": "USERMANAGEMENT"}]
2559+
2560+
user_utils.create_initial_user_for_saas(
2561+
{"email": f"{user_id}@acme.com", "given_name": "Primary", "family_name": "User", "id": user_id},
2562+
"PRIMARY",
2563+
groupreassign,
2564+
)
2565+
2566+
user_utils.set_user_group_reassignment_auth.assert_called_once_with(user_id, resource_id, groupreassign, manage_api_key)
2567+
2568+
2569+
def test_create_initial_user_for_saas_post_9_1_facilities_primary(user_utils):
2570+
"""Post-9.1 PRIMARY user: reassignment fires when workspace contains 'facilities' (no 'manage')."""
2571+
if Version(user_utils.mas_version) < Version("9.1"):
2572+
pytest.skip("post-9.1 only")
2573+
2574+
user_id = "primaryuser"
2575+
resource_id, manage_api_key = _setup_post_9_1_user_utils(user_utils, user_id, ["facilities", "iot"])
2576+
groupreassign = [{"groupname": "USERMANAGEMENT"}]
2577+
2578+
user_utils.create_initial_user_for_saas(
2579+
{"email": f"{user_id}@acme.com", "given_name": "Primary", "family_name": "User", "id": user_id},
2580+
"PRIMARY",
2581+
groupreassign,
2582+
)
2583+
2584+
user_utils.set_user_group_reassignment_auth.assert_called_once_with(user_id, resource_id, groupreassign, manage_api_key)
2585+
2586+
2587+
def test_create_initial_user_for_saas_post_9_1_facilities_secondary(user_utils):
2588+
"""Post-9.1 SECONDARY user: reassignment is NOT called even when workspace contains 'facilities'."""
2589+
if Version(user_utils.mas_version) < Version("9.1"):
2590+
pytest.skip("post-9.1 only")
2591+
2592+
user_id = "secondaryuser"
2593+
_setup_post_9_1_user_utils(user_utils, user_id, ["facilities", "iot"])
2594+
2595+
user_utils.create_initial_user_for_saas(
2596+
{"email": f"{user_id}@acme.com", "given_name": "Secondary", "family_name": "User", "id": user_id},
2597+
"SECONDARY",
2598+
)
2599+
2600+
user_utils.set_user_group_reassignment_auth.assert_not_called()

0 commit comments

Comments
 (0)