Skip to content

Commit 137eb14

Browse files
committed
unit tests
1 parent 626850d commit 137eb14

2 files changed

Lines changed: 113 additions & 5 deletions

File tree

src/mas/devops/users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,7 @@ def create_initial_user_for_saas(self, user, user_type):
945945
for mas_application_id in self.mas_workspace_application_ids:
946946
self.check_user_sync(user_id, mas_application_id)
947947

948-
if "manage" in self.mas_workspace_application_ids:
948+
if len(manage_security_groups) > 0 and "manage" in self.mas_workspace_application_ids:
949949
maxadmin_manage_api_key = self.create_or_get_manage_api_key_for_user(MASUserUtils.MAXADMIN, temporary=True)
950950
for manage_security_group in manage_security_groups:
951951
self.add_user_to_manage_group(user_id, manage_security_group, maxadmin_manage_api_key)

test/src/test_users.py

Lines changed: 112 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,9 +1617,117 @@ def test_parse_initial_users_from_aws_secret_json(user_utils):
16171617
assert "Unknown user type for user1@example.com: unknown" == str(excinfo.value)
16181618

16191619

1620-
def test_create_initial_user_for_saas(user_utils, requests_mock):
1621-
pass
1620+
def test_create_initial_user_for_saas_no_email(user_utils):
1621+
with pytest.raises(Exception) as excinfo:
1622+
user_utils.create_initial_user_for_saas({"given_name": "asdasd", "family_name": "sdfzsd"}, None)
1623+
assert str(excinfo.value) == "'email' not found in at least one of the user defs"
1624+
1625+
1626+
def test_create_initial_user_for_saas_no_given_name(user_utils):
1627+
with pytest.raises(Exception) as excinfo:
1628+
user_utils.create_initial_user_for_saas({"email": "asda", "family_name": "sdfzsd"}, None)
1629+
assert str(excinfo.value) == "'given_name' not found in at least one of the user defs"
1630+
1631+
1632+
def test_create_initial_user_for_saas_no_family_name(user_utils):
1633+
with pytest.raises(Exception) as excinfo:
1634+
user_utils.create_initial_user_for_saas({"email": "asda", "given_name": "asdasd"}, None)
1635+
assert str(excinfo.value) == "'family_name' not found in at least one of the user defs"
1636+
16221637

1638+
def test_create_initial_user_for_saas_unsupported_type(user_utils):
1639+
with pytest.raises(Exception) as excinfo:
1640+
user_utils.create_initial_user_for_saas({"given_name": "asdasd", "family_name": "sdfzsd", "email": "asdasd"}, "whoknows")
1641+
assert str(excinfo.value) == "Unsupported user_type: whoknows"
1642+
1643+
# Assisted by watsonx Code Assistant
1644+
1645+
1646+
@pytest.mark.parametrize("user_type, permissions, entitlement, is_workspace_admin, application_role, manage_security_groups", [
1647+
(
1648+
"PRIMARY",
1649+
{"systemAdmin": False, "userAdmin": True, "apikeyAdmin": False},
1650+
{"application": "PREMIUM", "admin": "ADMIN_BASE", "alwaysReserveLicense": True},
1651+
True,
1652+
"ADMINISTRATOR",
1653+
["MAXADMIN"]
1654+
),
1655+
(
1656+
"SECONDARY",
1657+
{"systemAdmin": False, "userAdmin": False, "apikeyAdmin": False},
1658+
{"application": "BASE", "admin": "NONE", "alwaysReserveLicense": True},
1659+
False,
1660+
"USER",
1661+
[]
1662+
)
1663+
])
1664+
def test_create_initial_users_for_saas(
1665+
user_type, permissions, entitlement, is_workspace_admin, application_role, manage_security_groups,
1666+
user_utils, requests_mock
1667+
):
1668+
user_utils.get_or_create_user = MagicMock()
1669+
user_utils.link_user_to_local_idp = MagicMock()
1670+
user_utils.add_user_to_workspace = MagicMock()
1671+
mas_workspace_application_ids = ["manage", "iot"]
1672+
user_utils.get_mas_applications_in_workspace = MagicMock(return_value=map(lambda x: {"id": x}, mas_workspace_application_ids))
1673+
user_utils.await_mas_application_availability = MagicMock()
1674+
user_utils.set_user_application_permission = MagicMock()
1675+
user_utils.check_user_sync = MagicMock()
1676+
manage_api_key = "manage_api_key" # pragma: allowlist secret
1677+
user_utils.create_or_get_manage_api_key_for_user = MagicMock(return_value=manage_api_key)
1678+
user_utils.add_user_to_manage_group = MagicMock()
1679+
1680+
user_email = "bill.bob@acme.com"
1681+
user_given_name = "billy"
1682+
user_family_name = "bobby"
1683+
user_id = user_email
1684+
username = user_email
1685+
display_name = f"{user_given_name} {user_family_name}"
1686+
1687+
user_utils.create_initial_user_for_saas({
1688+
"email": user_email,
1689+
"given_name": user_given_name,
1690+
"family_name": user_family_name
1691+
},
1692+
user_type
1693+
)
1694+
1695+
user_utils.get_or_create_user.assert_called_once_with({
1696+
"id": user_id,
1697+
"status": {"active": True},
1698+
"username": username,
1699+
"owner": "local",
1700+
"emails": [
1701+
{
1702+
"value": user_email,
1703+
"type": "Work",
1704+
"primary": True
1705+
}
1706+
],
1707+
"displayName": display_name,
1708+
"issuer": "local",
1709+
"permissions": permissions,
1710+
"entitlement": entitlement,
1711+
"givenName": user_given_name,
1712+
"familyName": user_family_name
1713+
})
1714+
user_utils.link_user_to_local_idp.assert_called_once_with(user_id, email_password=True)
1715+
user_utils.add_user_to_workspace.assert_called_once_with(user_id, is_workspace_admin=is_workspace_admin)
1716+
user_utils.await_mas_application_availability.assert_has_calls([call("manage"), call("iot")])
1717+
user_utils.set_user_application_permission.assert_has_calls([
1718+
call(user_id, "manage", "MANAGEUSER"),
1719+
call(user_id, "iot", application_role),
1720+
])
1721+
user_utils.check_user_sync.assert_has_calls([
1722+
call(user_id, "manage"),
1723+
call(user_id, "iot")
1724+
])
1725+
1726+
if len(manage_security_groups) > 0:
1727+
user_utils.create_or_get_manage_api_key_for_user.assert_called_once_with("MAXADMIN", temporary=True)
1728+
else:
1729+
user_utils.create_or_get_manage_api_key_for_user.assert_not_called()
16231730

1624-
def test_create_initial_users_for_saas(user_utils, requests_mock):
1625-
pass
1731+
user_utils.add_user_to_manage_group.assert_has_calls(
1732+
map(lambda sg: call(user_id, sg, manage_api_key), manage_security_groups)
1733+
)

0 commit comments

Comments
 (0)