@@ -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])
16631705def 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