Skip to content

Commit be9b0d3

Browse files
committed
unit tests for facilities support
1 parent 5789867 commit be9b0d3

1 file changed

Lines changed: 67 additions & 17 deletions

File tree

test/src/test_users.py

Lines changed: 67 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,7 +1573,8 @@ def test_parse_initial_users_from_aws_secret_json(user_utils):
15731573
{
15741574
"user1@example.com": "primary,joe,bloggs",
15751575
"user2@example.com": " primary , ben , bob ",
1576-
"user3@example.com": "secondary ,bill, bibb"
1576+
"user3@example.com": "secondary ,bill, bibb",
1577+
"user4@example.com": "primary ,bab, bub,user4"
15771578
}
15781579
)
15791580

@@ -1583,19 +1584,28 @@ def test_parse_initial_users_from_aws_secret_json(user_utils):
15831584
{
15841585
"email": "user1@example.com",
15851586
"given_name": "joe",
1586-
"family_name": "bloggs"
1587+
"family_name": "bloggs",
1588+
"id": "user1@example.com",
15871589
},
15881590
{
15891591
"email": "user2@example.com",
15901592
"given_name": "ben",
1591-
"family_name": "bob"
1593+
"family_name": "bob",
1594+
"id": "user2@example.com",
1595+
},
1596+
{
1597+
"email": "user4@example.com",
1598+
"given_name": "bab",
1599+
"family_name": "bub",
1600+
"id": "user4",
15921601
}
15931602
],
15941603
"secondary": [
15951604
{
15961605
"email": "user3@example.com",
15971606
"given_name": "bill",
1598-
"family_name": "bibb"
1607+
"family_name": "bibb",
1608+
"id": "user3@example.com",
15991609
}
16001610
]
16011611
}
@@ -1607,7 +1617,7 @@ def test_parse_initial_users_from_aws_secret_json(user_utils):
16071617
user_utils.parse_initial_users_from_aws_secret_json({
16081618
"user1@example.com": "primary"
16091619
})
1610-
assert "Wrong number of CSV values for user1@example.com (expected 3 but got 1)" == str(excinfo.value)
1620+
assert "Wrong number of CSV values for user1@example.com (expected 3 or 4 but got 1)" == str(excinfo.value)
16111621

16121622
with pytest.raises(Exception) as excinfo:
16131623
user_utils.parse_initial_users_from_aws_secret_json({
@@ -1642,32 +1652,64 @@ def test_create_initial_user_for_saas_unsupported_type(user_utils):
16421652
# Assisted by watsonx Code Assistant
16431653

16441654

1645-
@pytest.mark.parametrize("user_type, permissions, entitlement, is_workspace_admin, application_role, manage_security_groups", [
1655+
@pytest.mark.parametrize("user_type, user_id, user_email, permissions, entitlement, is_workspace_admin, application_role, manage_role, facilities_role, manage_security_groups", [
16461656
(
16471657
"PRIMARY",
1658+
None,
1659+
"bill.bob@acme.com",
16481660
{"systemAdmin": False, "userAdmin": True, "apikeyAdmin": False},
16491661
{"application": "PREMIUM", "admin": "ADMIN_BASE", "alwaysReserveLicense": True},
16501662
True,
16511663
"ADMIN",
1664+
"MANAGEUSER",
1665+
"PREMIUM",
16521666
["MAXADMIN"]
16531667
),
1668+
(
1669+
"PRIMARY",
1670+
"billbob",
1671+
"bill.bob@acme.com",
1672+
{"systemAdmin": False, "userAdmin": True, "apikeyAdmin": False},
1673+
{"application": "PREMIUM", "admin": "ADMIN_BASE", "alwaysReserveLicense": True},
1674+
True,
1675+
"ADMIN",
1676+
"MANAGEUSER",
1677+
"PREMIUM",
1678+
["MAXADMIN"]
1679+
),
1680+
(
1681+
"SECONDARY",
1682+
None,
1683+
"bab.bon@acme.com",
1684+
{"systemAdmin": False, "userAdmin": False, "apikeyAdmin": False},
1685+
{"application": "BASE", "admin": "NONE", "alwaysReserveLicense": True},
1686+
False,
1687+
"USER",
1688+
"MANAGEUSER",
1689+
"BASE",
1690+
[]
1691+
),
16541692
(
16551693
"SECONDARY",
1694+
"babbon",
1695+
"bab.bon@acme.com",
16561696
{"systemAdmin": False, "userAdmin": False, "apikeyAdmin": False},
16571697
{"application": "BASE", "admin": "NONE", "alwaysReserveLicense": True},
16581698
False,
16591699
"USER",
1700+
"MANAGEUSER",
1701+
"BASE",
16601702
[]
16611703
)
16621704
])
16631705
def test_create_initial_user_for_saas(
1664-
user_type, permissions, entitlement, is_workspace_admin, application_role, manage_security_groups,
1706+
user_type, user_id, user_email, permissions, entitlement, is_workspace_admin, application_role, manage_role, facilities_role, manage_security_groups,
16651707
user_utils, requests_mock
16661708
):
16671709
user_utils.get_or_create_user = MagicMock()
16681710
user_utils.link_user_to_local_idp = MagicMock()
16691711
user_utils.add_user_to_workspace = MagicMock()
1670-
mas_workspace_application_ids = ["manage", "iot"]
1712+
mas_workspace_application_ids = ["manage", "iot", "facilities"]
16711713
user_utils.get_mas_applications_in_workspace = MagicMock(return_value=map(lambda x: {"id": x}, mas_workspace_application_ids))
16721714
user_utils.await_mas_application_availability = MagicMock()
16731715
user_utils.set_user_application_permission = MagicMock()
@@ -1676,20 +1718,24 @@ def test_create_initial_user_for_saas(
16761718
user_utils.create_or_get_manage_api_key_for_user = MagicMock(return_value=manage_api_key)
16771719
user_utils.add_user_to_manage_group = MagicMock()
16781720

1679-
user_email = "bill.bob@acme.com"
16801721
user_given_name = "billy"
16811722
user_family_name = "bobby"
1682-
user_id = user_email
1683-
username = user_email
16841723
display_name = f"{user_given_name} {user_family_name}"
16851724

1686-
user_utils.create_initial_user_for_saas({
1725+
initial_users = {
16871726
"email": user_email,
16881727
"given_name": user_given_name,
16891728
"family_name": user_family_name
1690-
},
1691-
user_type
1692-
)
1729+
}
1730+
1731+
if user_id is None:
1732+
user_id = user_email
1733+
else:
1734+
initial_users["id"] = user_id
1735+
1736+
username = user_id
1737+
1738+
user_utils.create_initial_user_for_saas(initial_users, user_type)
16931739

16941740
user_utils.get_or_create_user.assert_called_once_with({
16951741
"id": user_id,
@@ -1703,6 +1749,8 @@ def test_create_initial_user_for_saas(
17031749
"primary": True
17041750
}
17051751
],
1752+
"phoneNumbers": [],
1753+
"addresses": [],
17061754
"displayName": display_name,
17071755
"issuer": "local",
17081756
"permissions": permissions,
@@ -1714,12 +1762,14 @@ def test_create_initial_user_for_saas(
17141762
user_utils.add_user_to_workspace.assert_called_once_with(user_id, is_workspace_admin=is_workspace_admin)
17151763
user_utils.await_mas_application_availability.assert_has_calls([call("manage"), call("iot")])
17161764
user_utils.set_user_application_permission.assert_has_calls([
1717-
call(user_id, "manage", "MANAGEUSER"),
1765+
call(user_id, "manage", manage_role),
17181766
call(user_id, "iot", application_role),
1767+
call(user_id, "facilities", facilities_role),
17191768
])
17201769
user_utils.check_user_sync.assert_has_calls([
17211770
call(user_id, "manage"),
1722-
call(user_id, "iot")
1771+
call(user_id, "iot"),
1772+
call(user_id, "facilities")
17231773
])
17241774

17251775
if len(manage_security_groups) > 0:

0 commit comments

Comments
 (0)