[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/Security/tests - testPrincipalRegistry.py:1.1.2.5

Guido van Rossum guido@python.org
Thu, 13 Dec 2001 15:47:09 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/App/Security/tests
In directory cvs.zope.org:/tmp/cvs-serv28624/tests

Modified Files:
      Tag: Zope-3x-branch
	testPrincipalRegistry.py 
Log Message:
Added implementation to unauthorized() method:
if no authenticated user, send login challenge.

=== Zope3/lib/python/Zope/App/Security/tests/testPrincipalRegistry.py 1.1.2.4 => 1.1.2.5 ===
 from Zope.Exceptions import NotFoundError
 from Zope.ComponentArchitecture import _clear as clearCA
+from Zope.Publisher.HTTP.IHTTPCredentials import IHTTPCredentials
+
+class Request:
+
+    __implements__ = IHTTPCredentials
+
+    def __init__(self, lpw):
+        self.__lpw = lpw
+
+    def _authUserPW(self):
+        return self.__lpw
+
+    challenge = None
+    def unauthorized(self, challenge):
+        self.challenge = challenge
+
 
 class Test(unittest.TestCase):
 
     def setUp(self):
         clearCA()
+
+        from Zope.ComponentArchitecture import provideAdapter
+        from Zope.App.Security.BasicAuthAdapter import BasicAuthAdapter
+        from Zope.App.Security.ILoginPassword import ILoginPassword
+        provideAdapter(IHTTPCredentials, ILoginPassword, BasicAuthAdapter)
+
         self.reg = PrincipalRegistry()
 
         self.reg.definePrincipal('1', 'Tim Peters', 'Sir Tim Peters',
@@ -79,17 +101,6 @@
         self.failIf(tim.validate('12'))
 
     def testAuthenticate(self):
-        from Zope.Publisher.HTTP.IHTTPCredentials import IHTTPCredentials
-        from Zope.ComponentArchitecture import provideAdapter
-        class Request:
-            __implements__ = IHTTPCredentials
-            def __init__(self, lpw):
-                self.__lpw = lpw
-            def _authUserPW(self):
-                return self.__lpw
-        from Zope.App.Security.BasicAuthAdapter import BasicAuthAdapter
-        from Zope.App.Security.ILoginPassword import ILoginPassword
-        provideAdapter(IHTTPCredentials, ILoginPassword, BasicAuthAdapter)
         req = Request(('tim', '123'))
         pid = self.reg.authenticate(req)
         self.assertEquals(pid, '1')
@@ -99,6 +110,17 @@
         req = Request(('kim', '123'))
         pid = self.reg.authenticate(req)
         self.assertEquals(pid, None)
+
+    def testUnauthorized(self):
+        request = Request(None)
+        self.reg.unauthorized(self.reg.defaultPrincipal(), request)
+        self.assertEquals(request.challenge, "basic realm=zope")
+        request = Request(None)
+        self.reg.unauthorized(None, request)
+        self.assertEquals(request.challenge, "basic realm=zope")
+        request = Request(None)
+        self.reg.unauthorized("1", request)
+        self.assertEquals(request.challenge, None)
 
     def testDefaultPrincipal(self):
         self.assertEquals(self.reg.defaultPrincipal(), None)