diff --git a/product/ERP5Security/ERP5UserManager.py b/product/ERP5Security/ERP5UserManager.py index bb8f9077e40ac4e1df844841b4e251d7ec5ee6fa..649d933861edd00032617b513a042e868b208967 100644 --- a/product/ERP5Security/ERP5UserManager.py +++ b/product/ERP5Security/ERP5UserManager.py @@ -192,6 +192,10 @@ class ERP5UserManager(BasePlugin): def _getUserByLogin(login, exact_match): # because we aren't logged in, we have to create our own # SecurityManager to be able to access the Catalog + if isinstance(login, list): + login = tuple(login) + elif not isinstance(login, tuple): + login = (str(login),) sm = getSecurityManager() if sm.getUser().getId() != SUPER_USER: newSecurityManager(self, self.getUser(SUPER_USER)) diff --git a/product/ERP5Security/tests/testERP5Security.py b/product/ERP5Security/tests/testERP5Security.py index 0ab6ff23d4fb983964d08c36a46fa5cafa6dcbba..5b20d50b908bd70fe703e64dcd88343ab1af2427 100644 --- a/product/ERP5Security/tests/testERP5Security.py +++ b/product/ERP5Security/tests/testERP5Security.py @@ -405,6 +405,40 @@ class TestLocalRoleManagement(ERP5TypeTestCase): getSecurityManager().getUser().getRolesInContext(module)) self.failIf('Assignor' in getSecurityManager().getUser().getRolesInContext(obj)) + + def testGetUserByLogin(self): + """Test getUserByLogin method + """ + self.loginAsUser(self.username) + + # getUserByLogin accept login as a string + self.portal.portal_caches.clearAllCache() + get_transaction().commit() + person_list = self.portal.acl_users.erp5_users.getUserByLogin(self.username) + self.assertEquals(1, len(person_list)) + self.assertEquals(self.username, person_list[0].getReference()) + + # getUserByLogin accept login as a list + self.portal.portal_caches.clearAllCache() + get_transaction().commit() + person_list = self.portal.acl_users.erp5_users.getUserByLogin([self.username]) + self.assertEquals(1, len(person_list)) + self.assertEquals(self.username, person_list[0].getReference()) + + # getUserByLogin accept login as a tuple + self.portal.portal_caches.clearAllCache() + get_transaction().commit() + person_list = self.portal.acl_users.erp5_users.getUserByLogin((self.username,)) + self.assertEquals(1, len(person_list)) + self.assertEquals(self.username, person_list[0].getReference()) + + # PreferenceTool pass a user as parameter + user = getSecurityManager().getUser() + self.portal.portal_caches.clearAllCache() + get_transaction().commit() + person_list = self.portal.acl_users.erp5_users.getUserByLogin(user) + self.assertEquals(1, len(person_list)) + self.assertEquals(self.username, person_list[0].getReference()) def test_suite(): suite = unittest.TestSuite()