[Checkins] SVN: zope.authentication/trunk/src/zope/authentication/ Improve test coverage.

Dan Korostelev nadako at gmail.com
Wed Mar 11 18:44:45 EDT 2009


Log message for revision 97937:
  Improve test coverage.

Changed:
  U   zope.authentication/trunk/src/zope/authentication/logout.txt
  U   zope.authentication/trunk/src/zope/authentication/principal.py
  U   zope.authentication/trunk/src/zope/authentication/tests/test_ftpauth.py
  U   zope.authentication/trunk/src/zope/authentication/tests/test_principal.py
  D   zope.authentication/trunk/src/zope/authentication/tests/test_principalterms.py

-=-
Modified: zope.authentication/trunk/src/zope/authentication/logout.txt
===================================================================
--- zope.authentication/trunk/src/zope/authentication/logout.txt	2009-03-11 22:34:40 UTC (rev 97936)
+++ zope.authentication/trunk/src/zope/authentication/logout.txt	2009-03-11 22:44:45 UTC (rev 97937)
@@ -71,3 +71,7 @@
   >>> from zope.authentication.interfaces import ILogoutSupported
   >>> ILogoutSupported.implementedBy(LogoutSupported)
   True
+
+  >>> request = object()
+  >>> ILogoutSupported.providedBy(LogoutSupported(request))
+  True

Modified: zope.authentication/trunk/src/zope/authentication/principal.py
===================================================================
--- zope.authentication/trunk/src/zope/authentication/principal.py	2009-03-11 22:34:40 UTC (rev 97936)
+++ zope.authentication/trunk/src/zope/authentication/principal.py	2009-03-11 22:44:45 UTC (rev 97937)
@@ -26,7 +26,34 @@
 
 
 def checkPrincipal(context, principal_id):
-    """An utility function to check if there's a principal for given principal id"""
+    """An utility function to check if there's a principal for given principal id.
+    
+    Raises ValueError when principal doesn't exists for given context and
+    principal id.
+
+    To test it, let's create and register a dummy authentication utility.
+    
+      >>> class DummyUtility:
+      ...
+      ...     implements(IAuthentication)
+      ...
+      ...     def getPrincipal(self, id):
+      ...         if id == 'bob':
+      ...             return id
+      ...         raise PrincipalLookupError(id)
+
+      >>> from zope.component import provideUtility
+      >>> provideUtility(DummyUtility())
+
+    Now, let's the behaviour of this function.
+    
+      >>> checkPrincipal(None, 'bob')
+      >>> checkPrincipal(None, 'dan')
+      Traceback (most recent call last):
+      ...
+      ValueError: ('Undefined principal id', 'dan')
+    
+    """
     auth = getUtility(IAuthentication, context=context)
     try:
         if auth.getPrincipal(principal_id):
@@ -60,9 +87,7 @@
         ...             return id
         ...         raise PrincipalLookupError(id)
 
-        Since we do not want to bring up the entire component architecture, we
-        simply monkey patch the `getUtility()` method to always return our
-        dummy authentication utility.
+        Let's register our dummy auth utility.
 
         >>> from zope.component import provideUtility
         >>> provideUtility(DummyUtility())
@@ -157,6 +182,7 @@
         principal = auth.getPrincipal(principal_id)
 
         if principal is None:
+            # TODO: is this a possible case?
             raise LookupError(principal_id)
 
         return PrincipalTerm(principal_id.encode('base64').strip().replace('=', '_'),

Modified: zope.authentication/trunk/src/zope/authentication/tests/test_ftpauth.py
===================================================================
--- zope.authentication/trunk/src/zope/authentication/tests/test_ftpauth.py	2009-03-11 22:34:40 UTC (rev 97936)
+++ zope.authentication/trunk/src/zope/authentication/tests/test_ftpauth.py	2009-03-11 22:44:45 UTC (rev 97937)
@@ -49,6 +49,11 @@
         auth.needLogin('xxx')
         self.assertEqual(request.unauth, unauth+1)
 
+        request = FTPCredentials(None)
+        auth = FTPAuth(request)
+        self.assertEqual(auth.getLogin(), None)
+        self.assertEqual(auth.getPassword(), None)
+
 def test_suite():
     return TestSuite((
         makeSuite(Test),

Modified: zope.authentication/trunk/src/zope/authentication/tests/test_principal.py
===================================================================
--- zope.authentication/trunk/src/zope/authentication/tests/test_principal.py	2009-03-11 22:34:40 UTC (rev 97936)
+++ zope.authentication/trunk/src/zope/authentication/tests/test_principal.py	2009-03-11 22:44:45 UTC (rev 97937)
@@ -16,13 +16,11 @@
 $Id$
 """
 import unittest
-from zope.testing.doctestunit import DocTestSuite
+from zope.testing import doctest
 
 
 def test_suite():
     return unittest.TestSuite((
-        DocTestSuite('zope.authentication.principal'),
+        doctest.DocTestSuite('zope.authentication.principal'),
+        doctest.DocFileSuite('../principalterms.txt'),
         ))
-
-if __name__ == '__main__':
-    unittest.main(defaultTest='test_suite')

Deleted: zope.authentication/trunk/src/zope/authentication/tests/test_principalterms.py
===================================================================
--- zope.authentication/trunk/src/zope/authentication/tests/test_principalterms.py	2009-03-11 22:34:40 UTC (rev 97936)
+++ zope.authentication/trunk/src/zope/authentication/tests/test_principalterms.py	2009-03-11 22:44:45 UTC (rev 97937)
@@ -1,26 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2009 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Tests for PrincipalTerms
-
-$Id$
-"""
-__docformat__ = "reStructuredText"
-import unittest
-from zope.testing import doctest
-
-
-def test_suite():
-    return unittest.TestSuite((
-        doctest.DocFileSuite('../principalterms.txt'),
-        ))



More information about the Checkins mailing list