[Checkins] SVN: Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/tests/test_PluggableAuthService.py Test PAS.updateAllLoginNames and PAS.updateOwnLoginName.

Maurits van Rees cvs-admin at zope.org
Fri Jan 18 23:55:49 UTC 2013


Log message for revision 129053:
  Test PAS.updateAllLoginNames and PAS.updateOwnLoginName.
  
  And improve test of PAS.updateLoginName.

Changed:
  U   Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/tests/test_PluggableAuthService.py

-=-
Modified: Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/tests/test_PluggableAuthService.py
===================================================================
--- Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/tests/test_PluggableAuthService.py	2013-01-18 23:13:27 UTC (rev 129052)
+++ Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/tests/test_PluggableAuthService.py	2013-01-18 23:55:48 UTC (rev 129053)
@@ -158,15 +158,18 @@
         self.identifier = None
 
 
-class DummyLoginNameUpdater(DummyUserEnumerator):
+class DummyLoginNameUpdater(DummyMultiUserEnumerator):
 
     def updateUser(self, user_id, login_name):
-        if user_id == self._user_id:
-            self._login = login_name
+        for info in self.users:
+            if info['id'] == user_id:
+                info['login'] = login_name
+                return
 
     def updateAllLoginNames(self, quit_on_first_error=True):
         # Let's lowercase all login names.
-        self.login = self._login.lower()
+        for info in self.users:
+            info['login'] = info['login'].lower()
         
 
 class DummyGroupPlugin(DummyPlugin):
@@ -539,14 +542,17 @@
         directlyProvides( cp, IChallengePlugin )
         return cp
 
-    def _makeLoginNameUpdater( self, user_id, login_name ):
+    def _makeLoginNameUpdater( self, *users ):
+        # users should be something like this:
+        # [{'id': 'Foo', 'login': 'foobar'},
+        #  {'id': 'Bar', 'login': 'BAR'}]
 
         from Products.PluggableAuthService.interfaces.plugins \
              import IUserEnumerationPlugin
         from Products.PluggableAuthService.interfaces.plugins \
              import IUpdateLoginNamePlugin
 
-        updater = DummyLoginNameUpdater( user_id, login_name )
+        updater = DummyLoginNameUpdater('updater', *users)
         directlyProvides( updater, IUserEnumerationPlugin, IUpdateLoginNamePlugin )
 
         return updater
@@ -2457,22 +2463,131 @@
         plugins = self._makePlugins()
         zcuf = self._makeOne( plugins )
 
-        foo = self._makeLoginNameUpdater( user_id='JOE', login_name='Joe' )
+        foo = self._makeLoginNameUpdater(
+            {'id': 'JOE', 'login': 'Joe'},
+            {'id': 'BART', 'login': 'Bart'})
         zcuf._setObject( 'foo', foo )
 
         plugins = zcuf._getOb( 'plugins' )
         plugins.activatePlugin( IUserEnumerationPlugin, 'foo' )
         plugins.activatePlugin( IUpdateLoginNamePlugin, 'foo' )
 
-        self.assertEqual(foo._login, 'Joe')
+        users = zcuf.searchUsers(login='Joe')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'JOE')
+        self.assertEqual(users[0]['login'], 'Joe')
+
+        # Change the login name.
         zcuf.updateLoginName('JOE', 'James')
-        self.assertEqual(foo._login, 'James')
+        users = zcuf.searchUsers(login='James')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'JOE')
+        self.assertEqual(users[0]['login'], 'James')
 
         # Try lowercase
         zcuf.login_transform = 'lower'
         zcuf.updateLoginName('JOE', 'James')
-        self.assertEqual(foo._login, 'james')
 
+        users = zcuf.searchUsers(login='James')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'JOE')
+        self.assertEqual(users[0]['login'], 'james')
+
+        users = zcuf.searchUsers(login='james')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'JOE')
+        self.assertEqual(users[0]['login'], 'james')
+
+    def test_updateOwnLoginName( self ):
+
+        from Products.PluggableAuthService.interfaces.plugins \
+             import IUserEnumerationPlugin
+        from Products.PluggableAuthService.interfaces.plugins \
+             import IUpdateLoginNamePlugin
+
+        plugins = self._makePlugins()
+        zcuf = self._makeOne( plugins )
+
+        foo = self._makeLoginNameUpdater(
+            {'id': 'bart', 'login': 'bart'},
+            {'id': 'joe', 'login': 'joe'})
+        zcuf._setObject( 'foo', foo )
+
+        plugins = zcuf._getOb( 'plugins' )
+        plugins.activatePlugin( IUserEnumerationPlugin, 'foo' )
+        plugins.activatePlugin( IUpdateLoginNamePlugin, 'foo' )
+
+        users = zcuf.searchUsers(login='joe')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'joe')
+        self.assertEqual(users[0]['login'], 'joe')
+        users = zcuf.searchUsers(login='bart')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'bart')
+        self.assertEqual(users[0]['login'], 'bart')
+
+        # Changing the login name will not work when you are not logged in.
+        zcuf.updateOwnLoginName('james')
+        users = zcuf.searchUsers(login='james')
+        self.assertEqual(len(users), 0)
+
+        # Fake a login.
+        newSecurityManager(None, FauxUser('joe', 'joe'))
+        zcuf.updateOwnLoginName('james')
+
+        users = zcuf.searchUsers(login='james')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'joe')
+        self.assertEqual(users[0]['login'], 'james')
+
+        # The login for bart has not changed.
+        users = zcuf.searchUsers(login='bart')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'bart')
+        self.assertEqual(users[0]['login'], 'bart')
+
+    def test_updateAllLoginNames( self ):
+
+        from Products.PluggableAuthService.interfaces.plugins \
+             import IUserEnumerationPlugin
+        from Products.PluggableAuthService.interfaces.plugins \
+             import IUpdateLoginNamePlugin
+
+        plugins = self._makePlugins()
+        zcuf = self._makeOne( plugins )
+
+        foo = self._makeLoginNameUpdater(
+            {'id': 'JOE', 'login': 'Joe'},
+            {'id': 'BART', 'login': 'Bart'})
+        zcuf._setObject( 'foo', foo )
+
+        plugins = zcuf._getOb( 'plugins' )
+        plugins.activatePlugin( IUserEnumerationPlugin, 'foo' )
+        plugins.activatePlugin( IUpdateLoginNamePlugin, 'foo' )
+
+        users = foo.enumerateUsers(login='Joe')
+        self.assertEqual(len(users), 1)
+        self.assertEqual(users[0]['id'], 'JOE')
+        self.assertEqual(users[0]['login'], 'Joe')
+        users = foo.enumerateUsers(login='Bart')
+        self.assertEqual(len(users), 1)
+
+        # Update all login names.  The dummy updater makes every login
+        # name lowercase.
+        zcuf.updateAllLoginNames()
+
+        self.assertEqual(len(foo.enumerateUsers(login='Joe')), 0)
+        self.assertEqual(len(foo.enumerateUsers(login='joe')), 1)
+        self.assertEqual(len(foo.enumerateUsers(login='Bart')), 0)
+        self.assertEqual(len(foo.enumerateUsers(login='bart')), 1)
+
+        # PAS applies the login_transform when searching for users.
+        zcuf.login_transform = 'lower'
+        self.assertEqual(len(zcuf.searchUsers(login='Joe')), 1)
+        self.assertEqual(len(zcuf.searchUsers(login='joe')), 1)
+        self.assertEqual(len(zcuf.searchUsers(login='Bart')), 1)
+        self.assertEqual(len(zcuf.searchUsers(login='bart')), 1)
+
     def test_no_challenger(self):
         # make sure that the response's _unauthorized gets propogated
         # if no challengers exist (or have fired)



More information about the checkins mailing list