[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