[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