summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_router.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-06 03:36:59 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-06 03:36:59 +0000
commitd66bfb5d1f1aef5cce4941b49740dbd136c95605 (patch)
tree0204e233befdb8ad99332e498308468015f3558e /repoze/bfg/tests/test_router.py
parent50df953770409dc9c9558c77bd5c0bbb17ac54f6 (diff)
downloadpyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.tar.gz
pyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.tar.bz2
pyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.zip
Merge multiview2 branch to HEAD.
Diffstat (limited to 'repoze/bfg/tests/test_router.py')
-rw-r--r--repoze/bfg/tests/test_router.py292
1 files changed, 19 insertions, 273 deletions
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index 566ffe4f1..a96765a01 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -33,12 +33,6 @@ class RouterTests(unittest.TestCase):
settings = Settings(**defaultkw)
self.registry.registerUtility(settings, ISettings)
- def _registerAuthenticationPolicy(self):
- from repoze.bfg.interfaces import IAuthenticationPolicy
- policy = DummyAuthenticationPolicy()
- self.registry.registerUtility(policy, IAuthenticationPolicy)
- return policy
-
def _registerTraverserFactory(self, context, view_name='', subpath=None,
traversed=None, virtual_root=None,
virtual_root_path=None, **kw):
@@ -75,20 +69,6 @@ class RouterTests(unittest.TestCase):
from repoze.bfg.interfaces import IView
self.registry.registerAdapter(app, for_, IView, name)
- def _registerViewPermission(self, view_name, allow=True):
- from zope.interface import Interface
- from repoze.bfg.interfaces import IViewPermission
- class Checker(object):
- def __call__(self, context, request):
- self.context = context
- self.request = request
- return allow
- checker = Checker()
- self.registry.registerAdapter(checker, (Interface, Interface),
- IViewPermission,
- view_name)
- return checker
-
def _registerEventListener(self, iface):
L = []
def listener(event):
@@ -239,31 +219,6 @@ class RouterTests(unittest.TestCase):
start_response = DummyStartResponse()
self.assertRaises(ValueError, router, environ, start_response)
- def test_iforbiddenview_returns_nonresponse(self):
- from repoze.bfg.interfaces import IForbiddenView
- from zope.interface import Interface
- from zope.interface import directlyProvides
- class IContext(Interface):
- pass
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- directlyProvides(context, IContext)
- self._registerTraverserFactory(context)
- self._registerAuthenticationPolicy()
- response = DummyResponse()
- view = DummyView(response)
- from repoze.bfg.security import ACLDenied
- denied = ACLDenied('ace', 'acl', 'permission', ['principals'], context)
- environ = self._makeEnviron()
- self._registerView(view, '', IContext, IRequest)
- checker = self._registerViewPermission('', denied)
- def app(context, request):
- """ """
- self.registry.registerUtility(app, IForbiddenView)
- router = self._makeOne()
- start_response = DummyStartResponse()
- self.assertRaises(ValueError, router, environ, start_response)
-
def test_call_view_registered_nonspecific_default_path(self):
context = DummyContext()
self._registerTraverserFactory(context)
@@ -369,72 +324,7 @@ class RouterTests(unittest.TestCase):
self.assertEqual(start_response.status, '404 Not Found')
self.failUnless('404' in result[0])
- def test_call_view_permission_none(self):
- from zope.interface import Interface
- from zope.interface import directlyProvides
- class IContext(Interface):
- pass
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- directlyProvides(context, IContext)
- self._registerTraverserFactory(context, subpath=[''])
- response = DummyResponse()
- view = DummyView(response)
- environ = self._makeEnviron()
- self._registerView(view, '', IContext, IRequest)
- router = self._makeOne()
- start_response = DummyStartResponse()
- result = router(environ, start_response)
- self.assertEqual(start_response.status, '200 OK')
-
- def test_call_view_no_authentication_policy_debug_authorization(self):
- logger = self._registerLogger()
- from zope.interface import Interface
- from zope.interface import directlyProvides
- class IContext(Interface):
- pass
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- directlyProvides(context, IContext)
- self._registerTraverserFactory(context, subpath=[''])
- response = DummyResponse()
- view = DummyView(response)
- environ = self._makeEnviron()
- self._registerView(view, '', IContext, IRequest)
- router = self._makeOne()
- router.debug_authorization = True
- start_response = DummyStartResponse()
- result = router(environ, start_response)
- self.assertEqual(start_response.status, '200 OK')
- self.assertEqual(len(logger.messages), 1)
- self.failUnless('no authentication policy' in logger.messages[0])
-
- def test_call_view_no_permission_registered_debug_authorization(self):
- self._registerAuthenticationPolicy()
- logger = self._registerLogger()
- from zope.interface import Interface
- from zope.interface import directlyProvides
- class IContext(Interface):
- pass
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- directlyProvides(context, IContext)
- self._registerTraverserFactory(context, subpath=[''])
- response = DummyResponse()
- view = DummyView(response)
- environ = self._makeEnviron()
- self._registerView(view, '', IContext, IRequest)
- router = self._makeOne()
- router.debug_authorization = True
- start_response = DummyStartResponse()
- result = router(environ, start_response)
- self.assertEqual(start_response.status, '200 OK')
- self.assertEqual(len(logger.messages), 1)
- self.failUnless('no permission registered' in logger.messages[0])
-
- def test_call_view_no_permission_registered_no_debug(self):
- self._registerAuthenticationPolicy()
- logger = self._registerLogger()
+ def test_call_view_raises_unauthorized(self):
from zope.interface import Interface
from zope.interface import directlyProvides
class IContext(Interface):
@@ -444,63 +334,16 @@ class RouterTests(unittest.TestCase):
directlyProvides(context, IContext)
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse()
- view = DummyView(response)
+ view = DummyView(response, raise_unauthorized=True)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
- router.debug_authorization = False
start_response = DummyStartResponse()
- result = router(environ, start_response)
- self.assertEqual(start_response.status, '200 OK')
- self.assertEqual(len(logger.messages), 0)
-
- def test_call_view_permission_succeeds(self):
- from zope.interface import Interface
- from zope.interface import directlyProvides
- class IContext(Interface):
- pass
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- directlyProvides(context, IContext)
- self._registerTraverserFactory(context, subpath=[''])
- self._registerAuthenticationPolicy()
- response = DummyResponse()
- view = DummyView(response)
- environ = self._makeEnviron()
- self._registerView(view, '', IContext, IRequest)
- checker = self._registerViewPermission('', True)
- router = self._makeOne()
- start_response = DummyStartResponse()
- result = router(environ, start_response)
- self.assertEqual(start_response.status, '200 OK')
- self.assertEqual(checker.context, context)
-
- def test_call_view_permission_fails_nosettings(self):
- from zope.interface import Interface
- from zope.interface import directlyProvides
- class IContext(Interface):
- pass
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- directlyProvides(context, IContext)
- self._registerTraverserFactory(context, subpath=[''])
- self._registerAuthenticationPolicy()
- response = DummyResponse()
- view = DummyView(response)
- from repoze.bfg.security import ACLDenied
- denied = ACLDenied('ace', 'acl', 'permission', ['principals'], context)
- environ = self._makeEnviron()
- self._registerView(view, '', IContext, IRequest)
- checker = self._registerViewPermission('', denied)
- router = self._makeOne()
- start_response = DummyStartResponse()
- result = router(environ, start_response)
+ response = router(environ, start_response)
self.assertEqual(start_response.status, '401 Unauthorized')
- message = environ['repoze.bfg.message']
- self.assertEqual(message, 'Unauthorized: failed security policy check')
- self.assertEqual(checker.context, context)
+ self.assertEqual(environ['repoze.bfg.message'], 'unauthorized')
- def test_call_view_permission_fails_no_debug_auth(self):
+ def test_call_view_raises_notfound(self):
from zope.interface import Interface
from zope.interface import directlyProvides
class IContext(Interface):
@@ -509,62 +352,15 @@ class RouterTests(unittest.TestCase):
context = DummyContext()
directlyProvides(context, IContext)
self._registerTraverserFactory(context, subpath=[''])
- self._registerAuthenticationPolicy()
response = DummyResponse()
- view = DummyView(response)
- from repoze.bfg.security import ACLDenied
- denied = ACLDenied('ace', 'acl', 'permission', ['principals'], context)
+ view = DummyView(response, raise_notfound=True)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
- checker = self._registerViewPermission('', denied)
- self._registerSettings(debug_authorization=False)
router = self._makeOne()
start_response = DummyStartResponse()
- result = router(environ, start_response)
- self.assertEqual(start_response.status, '401 Unauthorized')
- message = environ['repoze.bfg.message']
- self.failUnless('failed security policy check' in message)
- self.assertEqual(checker.context, context)
-
- def test_call_view_permission_fails_with_debug_auth(self):
- from zope.interface import Interface
- from zope.interface import directlyProvides
- class IContext(Interface):
- pass
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- directlyProvides(context, IContext)
- self._registerAuthenticationPolicy()
- self._registerTraverserFactory(context, subpath=[''])
- response = DummyResponse()
- view = DummyView(response)
- from repoze.bfg.security import ACLDenied
- environ = self._makeEnviron()
- self._registerView(view, '', IContext, IRequest)
- allowed = ACLDenied('ace', 'acl', 'permission', ['principals'], context)
- checker = self._registerViewPermission('', allowed)
- self._registerSettings(debug_authorization=True)
- logger = self._registerLogger()
- router = self._makeOne()
- start_response = DummyStartResponse()
- result = router(environ, start_response)
- self.assertEqual(start_response.status, '401 Unauthorized')
- message = environ['repoze.bfg.message']
- self.failUnless(
- "ACLDenied permission 'permission' via ACE 'ace' in ACL 'acl' "
- "on context" in message)
- self.failUnless("for principals ['principals']" in message)
- self.assertEqual(checker.context, context)
- self.assertEqual(len(logger.messages), 1)
- logged = logger.messages[0]
- self.failUnless(
- "debug_authorization of url http://localhost:8080/ (view name "
- "'' against context" in logged)
- self.failUnless(
- "ACLDenied permission 'permission' via ACE 'ace' in ACL 'acl' on "
- "context" in logged)
- self.failUnless(
- "for principals ['principals']" in logged)
+ response = router(environ, start_response)
+ self.assertEqual(start_response.status, '404 Not Found')
+ self.assertEqual(environ['repoze.bfg.message'], 'notfound')
def test_call_eventsends(self):
context = DummyContext()
@@ -601,65 +397,6 @@ class RouterTests(unittest.TestCase):
self.assertEqual(len(router.threadlocal_manager.pushed), 1)
self.assertEqual(len(router.threadlocal_manager.popped), 1)
- def test_call_post_method(self):
- from repoze.bfg.interfaces import INewRequest
- from repoze.bfg.interfaces import IPOSTRequest
- from repoze.bfg.interfaces import IPUTRequest
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- self._registerTraverserFactory(context)
- response = DummyResponse()
- response.app_iter = ['Hello world']
- view = DummyView(response)
- environ = self._makeEnviron(REQUEST_METHOD='POST')
- self._registerView(view, '', None, None)
- router = self._makeOne()
- start_response = DummyStartResponse()
- request_events = self._registerEventListener(INewRequest)
- result = router(environ, start_response)
- request = request_events[0].request
- self.failUnless(IPOSTRequest.providedBy(request))
- self.failIf(IPUTRequest.providedBy(request))
- self.failUnless(IRequest.providedBy(request))
-
- def test_call_put_method(self):
- from repoze.bfg.interfaces import INewRequest
- from repoze.bfg.interfaces import IPUTRequest
- from repoze.bfg.interfaces import IPOSTRequest
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- self._registerTraverserFactory(context)
- response = DummyResponse()
- response.app_iter = ['Hello world']
- view = DummyView(response)
- environ = self._makeEnviron(REQUEST_METHOD='PUT')
- self._registerView(view, '', None, None)
- router = self._makeOne()
- start_response = DummyStartResponse()
- request_events = self._registerEventListener(INewRequest)
- result = router(environ, start_response)
- request = request_events[0].request
- self.failUnless(IPUTRequest.providedBy(request))
- self.failIf(IPOSTRequest.providedBy(request))
- self.failUnless(IRequest.providedBy(request))
-
- def test_call_unknown_method(self):
- from repoze.bfg.interfaces import INewRequest
- from repoze.bfg.interfaces import IRequest
- context = DummyContext()
- self._registerTraverserFactory(context)
- response = DummyResponse()
- response.app_iter = ['Hello world']
- view = DummyView(response)
- environ = self._makeEnviron(REQUEST_METHOD='UNKNOWN')
- self._registerView(view, '', None, None)
- router = self._makeOne()
- start_response = DummyStartResponse()
- request_events = self._registerEventListener(INewRequest)
- result = router(environ, start_response)
- request = request_events[0].request
- self.failUnless(IRequest.providedBy(request))
-
class MakeAppTests(unittest.TestCase):
def setUp(self):
cleanUp()
@@ -917,10 +654,19 @@ class DummyContext:
pass
class DummyView:
- def __init__(self, response):
+ def __init__(self, response, raise_unauthorized=False,
+ raise_notfound=False):
self.response = response
+ self.raise_unauthorized = raise_unauthorized
+ self.raise_notfound = raise_notfound
def __call__(self, context, request):
+ if self.raise_unauthorized:
+ from repoze.bfg.security import Unauthorized
+ raise Unauthorized('unauthorized')
+ if self.raise_notfound:
+ from repoze.bfg.view import NotFound
+ raise NotFound('notfound')
return self.response
class DummyRootFactory: