@@ -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