[Repoze-checkins] r1283 - in repoze.whooze/trunk: . repoze/whooze
Chris McDonough
chrism at agendaless.com
Fri Jul 11 11:02:35 EDT 2008
Author: Chris McDonough <chrism at agendaless.com>
Date: Fri Jul 11 11:02:35 2008
New Revision: 1283
Log:
Add group support; support zope 3.6.0 testrunner.
Modified:
repoze.whooze/trunk/ (props changed)
repoze.whooze/trunk/repoze/whooze/auth.py
repoze.whooze/trunk/repoze/whooze/tests.py
repoze.whooze/trunk/setup.py
Modified: repoze.whooze/trunk/repoze/whooze/auth.py
==============================================================================
--- repoze.whooze/trunk/repoze/whooze/auth.py (original)
+++ repoze.whooze/trunk/repoze/whooze/auth.py Fri Jul 11 11:02:35 2008
@@ -1,5 +1,6 @@
from zope.interface import implements
-from zope.security.interfaces import IPrincipal
+from zope.security.interfaces import IGroupAwarePrincipal
+from zope.security.interfaces import IGroup
from zope.app.security.interfaces import IAuthentication
from zope.app.security.interfaces import IUnauthenticatedPrincipal
@@ -8,12 +9,20 @@
id = 'zope.anybody'
title = description = u'Unauthenticated User'
+class WhoGroup(object):
+ implements(IGroup)
+ def __init__(self, id):
+ self.id = id
+ self.title = id
+ self.description = id
+
class WhoPrincipal(object):
- implements(IPrincipal)
- def __init__(self, id, title, description):
+ implements(IGroupAwarePrincipal)
+ def __init__(self, id, title, description, groups):
self.id = id
self.title = title
self.description = description
+ self.groups = [ WhoGroup(group_id) for group_id in groups ]
class WhoAuthentication(object):
implements(IAuthentication)
@@ -25,7 +34,8 @@
userid = identity['repoze.who.userid']
title = identity.get('title')
description = identity.get('description')
- principal = WhoPrincipal(userid, title, description)
+ groups = identity.get('groups', ())
+ principal = WhoPrincipal(userid, title, description, groups)
return principal
def unauthenticatedPrincipal(self):
@@ -36,4 +46,4 @@
def getPrincipal(self, id):
# Repeat after me: I'm a lame API, I'm a lame API, ...
- return WhoPrincipal(id, '', '')
+ return WhoPrincipal(id, '', '', ())
Modified: repoze.whooze/trunk/repoze/whooze/tests.py
==============================================================================
--- repoze.whooze/trunk/repoze/whooze/tests.py (original)
+++ repoze.whooze/trunk/repoze/whooze/tests.py Fri Jul 11 11:02:35 2008
@@ -14,10 +14,12 @@
return klass(*arg, **kw)
def test_ctor(self):
- principal = self._makeOne('id', 'title', 'description')
+ principal = self._makeOne('id', 'title', 'description', ('Foo',))
self.assertEqual(principal.id, 'id')
self.assertEqual(principal.title, 'title')
self.assertEqual(principal.description, 'description')
+ self.assertEqual(len(principal.groups), 1)
+ self.assertEqual(principal.groups[0].id, 'Foo')
integration_zcml = os.path.join(os.path.dirname(__file__), 'integration.zcml')
@@ -39,21 +41,29 @@
def test_public(self):
env = {'repoze.who.identity': {'repoze.who.userid': 'testing.somedude',
'title': 'Some Dude',
- 'description': 'Just some dude'}}
+ 'description': 'Just some dude',
+ 'groups':('foo',),
+ }
+ }
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'}}
+ 'description': 'Just some dude',
+ 'groups':('foo',),
+ }}
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"}}
+ 'description': "It's the manager, dude",
+ 'groups':('foo',),
+ }
+ }
response = self.publish('/protected.html', env=env)
self.assertEquals(response.getStatus(), 200)
@@ -64,7 +74,10 @@
def test_principal(self):
env = {'repoze.who.identity': {'repoze.who.userid': 'testing.somedude',
'title': 'Some Dude',
- 'description': 'Just some dude'}}
+ 'description': 'Just some dude',
+ 'groups':('foo',),
+ }
+ }
response = self.publish('/principal.html', env=env)
self.assertEquals(response.getBody(), 'Some Dude')
Modified: repoze.whooze/trunk/setup.py
==============================================================================
--- repoze.whooze/trunk/setup.py (original)
+++ repoze.whooze/trunk/setup.py Fri Jul 11 11:02:35 2008
@@ -28,10 +28,19 @@
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()
+ try:
+ from zope.testing.testrunner import get_options
+ except ImportError:
+ from zope.testing.testrunner.options import get_options
+ try:
+ from zope.testing.testrunner import find_suites
+ except ImportError:
+ from zope.testing.testrunner.find import find_suites
+ try:
+ from zope.testing.testrunner import configure_logging
+ configure_logging()
+ except ImportError:
+ pass
from unittest import TestSuite
here = os.path.abspath(os.path.dirname(sys.argv[0]))
args = sys.argv[:]
More information about the Repoze-checkins
mailing list