[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