[Repoze-checkins] r1270 - in repoze.whozope/trunk: . repoze/whozope

Philipp von Weitershausen philipp at weitershausen.de
Thu Jul 10 20:31:26 EDT 2008


Author: Philipp von Weitershausen <philipp at weitershausen.de>
Date: Thu Jul 10 20:31:26 2008
New Revision: 1270

Log:
Integration tests.


Added:
   repoze.whozope/trunk/repoze/whozope/integration.zcml   (contents, props changed)
   repoze.whozope/trunk/repoze/whozope/overrides.zcml   (contents, props changed)
Modified:
   repoze.whozope/trunk/repoze/whozope/auth.py
   repoze.whozope/trunk/repoze/whozope/tests.py
   repoze.whozope/trunk/setup.py

Modified: repoze.whozope/trunk/repoze/whozope/auth.py
==============================================================================
--- repoze.whozope/trunk/repoze/whozope/auth.py	(original)
+++ repoze.whozope/trunk/repoze/whozope/auth.py	Thu Jul 10 20:31:26 2008
@@ -5,8 +5,8 @@
 
 class UnauthenticatedPrincipal(object):
     implements(IUnauthenticatedPrincipal)
-    id = 'Unauthenticated'
-    title = description = u'Unauthenticated principal'
+    id = 'zope.anybody'
+    title = description = u'Unauthenticated User'
 
 class WhoPrincipal(object):
     implements(IPrincipal)
@@ -19,7 +19,9 @@
     implements(IAuthentication)
 
     def authenticate(self, request):
-        identity = request.get('repoze.who.identity', {})
+        identity = request.get('repoze.who.identity')
+        if identity is None:
+            return self.unauthenticatedPrincipal()
         userid = identity['repoze.who.userid']
         title = identity.get('title')
         description = identity.get('description')
@@ -33,4 +35,5 @@
         request.response.setStatus(401)
 
     def getPrincipal(self, id):
-        pass
+        # Repeat after me: I'm a lame API, I'm a lame API, ...
+        return WhoPrincipal(id, '', '')

Added: repoze.whozope/trunk/repoze/whozope/integration.zcml
==============================================================================
--- (empty file)
+++ repoze.whozope/trunk/repoze/whozope/integration.zcml	Thu Jul 10 20:31:26 2008
@@ -0,0 +1,45 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+           xmlns:meta="http://namespaces.zope.org/meta"
+           xmlns:browser="http://namespaces.zope.org/browser"
+           i18n_domain="meeee">
+
+  <include package="zope.app.zcmlfiles" file="meta.zcml" />
+  <include package="zope.securitypolicy" file="meta.zcml" />
+
+  <include package="zope.publisher" />
+  <include package="zope.traversing" />
+  <include package="zope.traversing.browser" />
+  <include package="zope.securitypolicy" />
+  <include package="zope.app.zcmlfiles" />
+
+  <includeOverrides package="repoze.whozope" file="overrides.zcml" />
+
+  <securityPolicy
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
+
+  <browser:page
+      for="*"
+      name="public.html"
+      class="repoze.whozope.tests.SomePage"
+      permission="zope.Public"
+      />
+
+  <browser:page
+      for="*"
+      name="protected.html"
+      class="repoze.whozope.tests.SomePage"
+      permission="zope.ManageContent"
+      />
+
+  <browser:page
+      for="*"
+      name="principal.html"
+      class="repoze.whozope.tests.PrincipalPage"
+      permission="zope.Public"
+      />
+
+  <grant permission="zope.View" principal="zope.anybody" />
+  <grant permission="zope.View" principal="testing.somedude" />
+  <grantAll principal="testing.somemanager" />
+
+</configure>

Added: repoze.whozope/trunk/repoze/whozope/overrides.zcml
==============================================================================
--- (empty file)
+++ repoze.whozope/trunk/repoze/whozope/overrides.zcml	Thu Jul 10 20:31:26 2008
@@ -0,0 +1,6 @@
+<configure xmlns="http://namespaces.zope.org/zope">
+  <utility
+      provides="zope.app.security.interfaces.IAuthentication"
+      factory="repoze.whozope.auth.WhoAuthentication"
+      />
+</configure>

Modified: repoze.whozope/trunk/repoze/whozope/tests.py
==============================================================================
--- repoze.whozope/trunk/repoze/whozope/tests.py	(original)
+++ repoze.whozope/trunk/repoze/whozope/tests.py	Thu Jul 10 20:31:26 2008
@@ -1,4 +1,8 @@
+import os.path
 import unittest
+from zope.publisher.browser import BrowserPage
+from zope.app.testing.functional import BrowserTestCase
+from zope.app.testing.functional import FunctionalTestSetup
 
 class TestWhoPrincipal(unittest.TestCase):
     def _getTargetClass(self):
@@ -14,3 +18,56 @@
         self.assertEqual(principal.id, 'id')
         self.assertEqual(principal.title, 'title')
         self.assertEqual(principal.description, 'description')
+
+integration_zcml = os.path.join(os.path.dirname(__file__), 'integration.zcml')
+
+class SomePage(BrowserPage):
+
+    def __call__(self):
+        return 'Some page'
+
+class PrincipalPage(BrowserPage):
+
+    def __call__(self):
+        return self.request.principal.title
+
+class TestWhoAuthenticationIntegration(BrowserTestCase):
+
+    def setUp(self):
+        FunctionalTestSetup(integration_zcml).setUp()
+
+    def test_public(self):
+        env = {'repoze.who.identity': {'repoze.who.userid': 'testing.somedude',
+                                       'title': 'Some Dude',
+                                       'description': 'Just some dude'}}
+        response = self.publish('/public.html', env=env)
+        self.assertEquals(response.getStatus(), 200)
+
+    def test_unauthorized(self):
+        env = {'repoze.who.identity': {'repoze.who.userid': 'testing.somedude',
+                                       'title': 'Some Dude',
+                                       'description': 'Just some dude'}}
+        response = self.publish('/protected.html', env=env, handle_errors=True)
+        self.assertEquals(response.getStatus(), 401)
+
+    def test_authorized(self):
+        env = {'repoze.who.identity': {'repoze.who.userid': 'testing.somemanager',
+                                       'title': 'Some Manager',
+                                       'description': "It's the manager, dude"}}
+        response = self.publish('/protected.html', env=env)
+        self.assertEquals(response.getStatus(), 200)
+
+    def test_unauthenticated(self):
+        response = self.publish('/principal.html')
+        self.assertEquals(response.getBody(), 'Unauthenticated User')
+
+    def test_principal(self):
+        env = {'repoze.who.identity': {'repoze.who.userid': 'testing.somedude',
+                                       'title': 'Some Dude',
+                                       'description': 'Just some dude'}}
+        response = self.publish('/principal.html', env=env)
+        self.assertEquals(response.getBody(), 'Some Dude')
+
+def test_suite():
+    import sys
+    return unittest.findTestCases(sys.modules[__name__])

Modified: repoze.whozope/trunk/setup.py
==============================================================================
--- repoze.whozope/trunk/setup.py	(original)
+++ repoze.whozope/trunk/setup.py	Thu Jul 10 20:31:26 2008
@@ -14,7 +14,7 @@
 
 __version__ = '0.1'
 
-import os
+import os, sys
 
 from ez_setup import use_setuptools
 use_setuptools()
@@ -25,6 +25,21 @@
 README = open(os.path.join(here, 'README.txt')).read()
 CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
 
+def alltests():
+    # use the zope.testing testrunner machinery to find all the
+    # test suites we've put under ourselves
+    from zope.testing.testrunner import get_options
+    from zope.testing.testrunner import find_suites
+    from zope.testing.testrunner import configure_logging
+    configure_logging()
+    from unittest import TestSuite
+    here = os.path.abspath(os.path.dirname(sys.argv[0]))
+    args = sys.argv[:]
+    defaults = ['--test-path', here]
+    options = get_options(args, defaults)
+    suites = list(find_suites(options))
+    return TestSuite(suites)
+
 setup(name='repoze.whozope',
       version=__version__,
       description='A repoze.who IAuthentication plugin for Z3',
@@ -49,14 +64,19 @@
       tests_require = [
           'zope.interface',
           'zope.security',
+          'zope.testing',
+          'zope.publisher',
+          'zope.traversing',
+          'zope.securitypolicy',
           'zope.app.security',
+          'zope.app.zcmlfiles',
           ],
       install_requires=[
           'zope.interface',
           'zope.security',
           'zope.app.security',
           ],
-      test_suite="repoze.whozope.tests",
+      test_suite="__main__.alltests",
       entry_points = """\
       """
       )


More information about the Repoze-checkins mailing list