[Erp5-report] r21240 - in /erp5/trunk/products/ERP5Security: ./ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri May 30 13:55:20 CEST 2008


Author: romain
Date: Fri May 30 13:55:19 2008
New Revision: 21240

URL: http://svn.erp5.org?rev=21240&view=rev
Log:
Check the method getUserByLogin.
Keep compatibility with previous implementation in order to accept non iterable
parameter as login.

Modified:
    erp5/trunk/products/ERP5Security/ERP5UserManager.py
    erp5/trunk/products/ERP5Security/tests/testERP5Security.py

Modified: erp5/trunk/products/ERP5Security/ERP5UserManager.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Security/ERP5UserManager.py?rev=21240&r1=21239&r2=21240&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Security/ERP5UserManager.py (original)
+++ erp5/trunk/products/ERP5Security/ERP5UserManager.py Fri May 30 13:55:19 2008
@@ -192,6 +192,10 @@
         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))

Modified: erp5/trunk/products/ERP5Security/tests/testERP5Security.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Security/tests/testERP5Security.py?rev=21240&r1=21239&r2=21240&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Security/tests/testERP5Security.py (original)
+++ erp5/trunk/products/ERP5Security/tests/testERP5Security.py Fri May 30 13:55:19 2008
@@ -405,6 +405,40 @@
             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()




More information about the Erp5-report mailing list