[Checkins] SVN: Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/ Add PAS helper method _get_login_transform_method.
Maurits van Rees
cvs-admin at zope.org
Thu Jan 3 12:58:28 UTC 2013
Log message for revision 128992:
Add PAS helper method _get_login_transform_method.
Changed:
U Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/PluggableAuthService.py
U Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/tests/test_PluggableAuthService.py
-=-
Modified: Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/PluggableAuthService.py
===================================================================
--- Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/PluggableAuthService.py 2013-01-03 12:48:05 UTC (rev 128991)
+++ Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/PluggableAuthService.py 2013-01-03 12:58:28 UTC (rev 128992)
@@ -1075,17 +1075,26 @@
TODO: maybe allow lists/tuples/sets and iterate over them.
"""
+ if not value:
+ return value
+ transform = self._get_login_transform_method()
+ if not transform:
+ return value
+ return transform(value)
+
+ security.declarePrivate( '_get_login_transform_method' )
+ def _get_login_transform_method( self ):
+ """ Get the transform method for the login name or None.
+ """
login_transform = getattr(self, 'login_transform', None)
if not login_transform:
- return value
- if not value:
- return value
+ return
transform = getattr(self, login_transform.strip(), None)
if transform is None:
logger.debug("Transform method %r not found in plugin %r.",
self.login_transform, self)
- return value
- return transform(value)
+ return
+ return transform
security.declarePublic( 'lower' )
def lower( self, value ):
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-03 12:48:05 UTC (rev 128991)
+++ Products.PluggableAuthService/branches/maurits-login-transform/Products/PluggableAuthService/tests/test_PluggableAuthService.py 2013-01-03 12:58:28 UTC (rev 128992)
@@ -2546,7 +2546,27 @@
zcuf.login_transform = 'nonexisting'
self.assertEqual(zcuf.applyTransform(' User '), ' User ')
+ def test_get_login_transform_method( self ):
+ zcuf = self._makeOne()
+ self.assertEqual(zcuf._get_login_transform_method(), None)
+ zcuf.login_transform = 'lower'
+ self.assertEqual(zcuf._get_login_transform_method(), zcuf.lower)
+ zcuf.login_transform = 'upper'
+ self.assertEqual(zcuf._get_login_transform_method(), zcuf.upper)
+ # Let's not fail just because a user has accidentally left a
+ # space at the end of the login_transform name. That could
+ # lead to hard-to-debug behaviour.
+ zcuf.login_transform = ' upper '
+ self.assertEqual(zcuf._get_login_transform_method(), zcuf.upper)
+ # We would want to test what happens when the login_transform
+ # attribute is not there, but the following only removes it
+ # from the instance, not the class. Oh well.
+ del zcuf.login_transform
+ self.assertEqual(zcuf._get_login_transform_method(), None)
+ zcuf.login_transform = 'nonexisting'
+ self.assertEqual(zcuf._get_login_transform_method(), None)
+
if __name__ == "__main__":
unittest.main()
More information about the checkins
mailing list