[Repoze-checkins] r1619 - in repoze.who/trunk: . docs repoze/who

Chris McDonough chrism at agendaless.com
Sat Aug 16 16:08:32 EDT 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Sat Aug 16 16:08:32 2008
New Revision: 1619

Log:
 - A bug in the middleware's ``authenticate`` method made it
   impossible to authenticate a user with a userid that was null
   (e.g. 0, False), which are valid identifiers.  The only invalid
   userid is now None.




Modified:
   repoze.who/trunk/CHANGES.txt
   repoze.who/trunk/docs/conf.py
   repoze.who/trunk/repoze/who/middleware.py
   repoze.who/trunk/repoze/who/tests.py
   repoze.who/trunk/repoze/who/version.txt

Modified: repoze.who/trunk/CHANGES.txt
==============================================================================
--- repoze.who/trunk/CHANGES.txt	(original)
+++ repoze.who/trunk/CHANGES.txt	Sat Aug 16 16:08:32 2008
@@ -1,7 +1,12 @@
 repoze.who changes
 ==================
 
-After 1.0.2
+1.0.3 (2008/08/16)
+
+ - A bug in the middleware's ``authenticate`` method made it
+   impossible to authenticate a user with a userid that was null
+   (e.g. 0, False), which are valid identifiers.  The only invalid
+   userid is now None.
 
  - Applied patch from Olaf Conradi which logs an error when an invalid
    filename is passed to the HTPasswdPlugin.

Modified: repoze.who/trunk/docs/conf.py
==============================================================================
--- repoze.who/trunk/docs/conf.py	(original)
+++ repoze.who/trunk/docs/conf.py	Sat Aug 16 16:08:32 2008
@@ -51,9 +51,9 @@
 # other places throughout the built documents.
 #
 # The short X.Y version.
-version = '1.0.2'
+version = '1.0.3'
 # The full version, including alpha/beta/rc tags.
-release = '1.0.2'
+release = '1.0.3'
 
 # There are two options for replacing |today|: either, you set today to some
 # non-false value, then it is used:

Modified: repoze.who/trunk/repoze/who/middleware.py
==============================================================================
--- repoze.who/trunk/repoze/who/middleware.py	(original)
+++ repoze.who/trunk/repoze/who/middleware.py	Sat Aug 16 16:08:32 2008
@@ -189,7 +189,7 @@
             identifier_rank = id_rank_start
             for identifier, identity in identities:
                 userid = plugin.authenticate(environ, identity)
-                if userid:
+                if userid is not None:
                     logger and logger.debug(
                         'userid returned from %s: "%s"' % (plugin, userid))
 

Modified: repoze.who/trunk/repoze/who/tests.py
==============================================================================
--- repoze.who/trunk/repoze/who/tests.py	(original)
+++ repoze.who/trunk/repoze/who/tests.py	Sat Aug 16 16:08:32 2008
@@ -266,6 +266,23 @@
         self.assertEqual(creds['password'], 'password')
         self.assertEqual(userid, 'chris_id2')
 
+    def test_authenticate_user_null_but_not_none(self):
+        environ = self._makeEnviron()
+        plugin1 = DummyAuthenticator(0)
+        plugins = [ ('identifier1', plugin1) ]
+        mw = self._makeOne(authenticators=plugins)
+        identities = [ (None, {'login':'chris', 'password':'password'}) ]
+        results = mw.authenticate(environ, None, identities)
+        self.assertEqual(len(results), 1)
+        result = results[0]
+        rank, authenticator, identifier, creds, userid = result
+        self.assertEqual(rank, (0,0))
+        self.assertEqual(authenticator, plugin1)
+        self.assertEqual(identifier, None)
+        self.assertEqual(creds['login'], 'chris')
+        self.assertEqual(creds['password'], 'password')
+        self.assertEqual(userid, 0)
+
     def test_challenge_noidentifier_noapp(self):
         environ = self._makeEnviron()
         challenger = DummyChallenger()

Modified: repoze.who/trunk/repoze/who/version.txt
==============================================================================
--- repoze.who/trunk/repoze/who/version.txt	(original)
+++ repoze.who/trunk/repoze/who/version.txt	Sat Aug 16 16:08:32 2008
@@ -1 +1 @@
-1.0.2
+1.0.3


More information about the Repoze-checkins mailing list