From 83e0c7f15de774a3bd783cb4562a2ba73ba07a92 Mon Sep 17 00:00:00 2001 From: Shanmugam Date: Thu, 29 Apr 2021 11:41:38 +0530 Subject: [PATCH 1/6] added_exception_to_username --- examples/user.py | 8 +++++--- hpeOneView/resources/security/users.py | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/examples/user.py b/examples/user.py index 696bc1b22..287580ca4 100644 --- a/examples/user.py +++ b/examples/user.py @@ -143,7 +143,8 @@ # Get user by name user = users.get_by_userName(options['userName']) -print("\nFound user by uri = '%s'\n" % user.data['uri']) +if user: + print("\nFound user by uri = '%s'\n" % user.data['uri']) # Get all users print("\nGet all users") @@ -170,8 +171,9 @@ # Remove single user user_to_delete = users.get_by_userName("testUser") -user_to_delete.delete() -print("\nSuccessfully deleted the testuser2 user.....\n") +if user_to_delete: + user_to_delete.delete() + print("\nSuccessfully deleted the testuser2 user.....\n") # Remove Multiple users user_name = ["testUser1", "testUser2"] diff --git a/hpeOneView/resources/security/users.py b/hpeOneView/resources/security/users.py index 0e4c4ec5c..0e5e535cf 100644 --- a/hpeOneView/resources/security/users.py +++ b/hpeOneView/resources/security/users.py @@ -27,6 +27,7 @@ from hpeOneView.resources.resource import Resource +from hpeOneView.exceptions import HPEOneViewException class Users(Resource): @@ -124,7 +125,12 @@ def get_by_userName(self, name): """ uri = self._helper.build_uri(name) - return self.get_by_uri(uri) + try: + resource = self.get_by_uri(uri) + except HPEOneViewException: + resource = None + + return resource def get_user_by_role(self, rolename): """ From 1d9a584cde33b92992ffbb8257a6c335befd8110 Mon Sep 17 00:00:00 2001 From: Shanmugam Date: Thu, 29 Apr 2021 11:49:54 +0530 Subject: [PATCH 2/6] fixed_flake8 --- hpeOneView/resources/security/users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hpeOneView/resources/security/users.py b/hpeOneView/resources/security/users.py index 0e5e535cf..adba2044a 100644 --- a/hpeOneView/resources/security/users.py +++ b/hpeOneView/resources/security/users.py @@ -129,7 +129,7 @@ def get_by_userName(self, name): resource = self.get_by_uri(uri) except HPEOneViewException: resource = None - + return resource def get_user_by_role(self, rolename): From 6310fd35f6acad35eeb130dcf32191974f3254c2 Mon Sep 17 00:00:00 2001 From: Shanmugam M <77977266+SHANDCRUZ@users.noreply.github.com> Date: Thu, 29 Apr 2021 14:33:42 +0530 Subject: [PATCH 3/6] Update test_users.py --- tests/unit/resources/security/test_users.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/unit/resources/security/test_users.py b/tests/unit/resources/security/test_users.py index 30db57b64..537a309db 100644 --- a/tests/unit/resources/security/test_users.py +++ b/tests/unit/resources/security/test_users.py @@ -78,6 +78,12 @@ def test_get_by_called_with_userName(self, mock_get): mock_get.assert_called_once_with('/rest/users/testUser') self.assertEqual(result, response) + @mock.patch.object(Resource, 'get_by_uri') + def test_get_by_called_with_userName_with_exception(self, mock_get): + mock_get.side_effect = HPEOneViewException("username is not found") + result = self._users.get_by_userName('testUser') + self.assertIsNone(result) + @mock.patch.object(Resource, 'create') def test_validate_full_name_called_once(self, mock_post): From 9b48cee6c1977acc57e4f06cf8cc45256aed2a98 Mon Sep 17 00:00:00 2001 From: Shanmugam M <77977266+SHANDCRUZ@users.noreply.github.com> Date: Thu, 29 Apr 2021 14:36:52 +0530 Subject: [PATCH 4/6] Update test_users.py --- tests/unit/resources/security/test_users.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/resources/security/test_users.py b/tests/unit/resources/security/test_users.py index 537a309db..6704100ff 100644 --- a/tests/unit/resources/security/test_users.py +++ b/tests/unit/resources/security/test_users.py @@ -22,6 +22,7 @@ from hpeOneView.connection import connection from hpeOneView.resources.security.users import Users from hpeOneView.resources.resource import Resource, ResourceHelper +from hpeOneView.exceptions import HPEOneViewException class UsersTest(unittest.TestCase): From ed49f30072b6e331e11f15299abede02ecf4ad7c Mon Sep 17 00:00:00 2001 From: Shanmugam Date: Mon, 3 May 2021 13:33:53 +0530 Subject: [PATCH 5/6] modified_rm_role --- examples/user.py | 8 ++++++-- hpeOneView/resources/security/users.py | 20 ++++++++++++++++---- tests/unit/resources/security/test_users.py | 7 +++++++ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/examples/user.py b/examples/user.py index 287580ca4..a100b62c3 100644 --- a/examples/user.py +++ b/examples/user.py @@ -129,6 +129,9 @@ }, { "roleName": "Backup administrator" + }, + { + "roleName": "Infrastructure administrator" } ] @@ -136,8 +139,9 @@ print("\nSuccessfully updated the role to the username....\n") print(role) -# Remove a role from the user -role = users.remove_role_from_username("testUser1", "Scope administrator") +# Remove mulitple role from the user +# If a single role is to be removed, just specifiy ["role_name"] or "role_name" instead of list. +role = users.remove_role_from_username("testUser1", ["Scope administrator", "Backup administrator"]) print("\nRemoved role from the user successfully...\n") print(role) diff --git a/hpeOneView/resources/security/users.py b/hpeOneView/resources/security/users.py index adba2044a..7707f5959 100644 --- a/hpeOneView/resources/security/users.py +++ b/hpeOneView/resources/security/users.py @@ -218,20 +218,20 @@ def update_role_to_userName(self, username, data): uri = self.URI + '/' + username + '/roles?multiResource=true' return self._helper.update(data, uri) - def remove_role_from_username(self, username, rolename): + def remove_role_from_username(self, username, data): """ Removes a specified role from the username Args: username (str): username of the user - rolename (str): role to be removed from user + data (str/list): list role to be removed from user Return: boolean """ - rolename = quote(rolename) - uri = self.URI + '/roles?filter' + '="userName=\'{}\'"&filter="roleName=\'{}\'"'.format(username, rolename) + rolelist_query = self.query_filter(data) + uri = self.URI + '/roles?filter' + '="userName=\'{}\'{}'.format(username, rolelist_query) return self._helper.delete(uri) def delete_multiple_user(self, data): @@ -253,3 +253,15 @@ def delete_multiple_user(self, data): break uri = uri + quote(' or ') self._helper.delete(uri) + + def query_filter(self, filters): + + formated_filter = '' + base_query = "\"&filter=\"roleName=\'{}\'\"" + if isinstance(filters, list): + for role in filters: + formated_filter += base_query.format(quote(role)) + return formated_filter + + if isinstance(filters, str): + return base_query.format(quote(filters)) \ No newline at end of file diff --git a/tests/unit/resources/security/test_users.py b/tests/unit/resources/security/test_users.py index 6704100ff..406b868c3 100644 --- a/tests/unit/resources/security/test_users.py +++ b/tests/unit/resources/security/test_users.py @@ -275,6 +275,13 @@ def test_update_role_to_userName(self, mock_put): @mock.patch.object(ResourceHelper, 'delete') def test_remove_role_to_userName(self, mock_delete): + mock_delete.return_value = True + self._users.remove_role_from_username("testUser", ["Read only"]) + uri = "/rest/users/roles?filter=\"userName='testUser'\"&filter=\"roleName='Read%20only'\"" + mock_delete.assert_called_once_with(uri) + + @mock.patch.object(ResourceHelper, 'delete') + def test_remove_role_to_userName_with_string(self, mock_delete): mock_delete.return_value = True self._users.remove_role_from_username("testUser", "Read only") uri = "/rest/users/roles?filter=\"userName='testUser'\"&filter=\"roleName='Read%20only'\"" From 4c4735e61cafc707d693f653775cc6010491af64 Mon Sep 17 00:00:00 2001 From: Shanmugam Date: Mon, 3 May 2021 13:39:37 +0530 Subject: [PATCH 6/6] fixed_flake8 --- hpeOneView/resources/security/users.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hpeOneView/resources/security/users.py b/hpeOneView/resources/security/users.py index 7707f5959..20f563b14 100644 --- a/hpeOneView/resources/security/users.py +++ b/hpeOneView/resources/security/users.py @@ -260,8 +260,8 @@ def query_filter(self, filters): base_query = "\"&filter=\"roleName=\'{}\'\"" if isinstance(filters, list): for role in filters: - formated_filter += base_query.format(quote(role)) + formated_filter += base_query.format(quote(role)) return formated_filter - + if isinstance(filters, str): - return base_query.format(quote(filters)) \ No newline at end of file + return base_query.format(quote(filters))