summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_router.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-10-29 23:07:48 +0000
committerChris McDonough <chrism@agendaless.com>2009-10-29 23:07:48 +0000
commit1646770c4eee27f37e53dcb50f8a271d5c278abf (patch)
tree9021b72a986148b17b4eb74c66ccacbe00be2b55 /repoze/bfg/tests/test_router.py
parentd8c776df0ff6a194be696c95d921caf2084194c6 (diff)
downloadpyramid-1646770c4eee27f37e53dcb50f8a271d5c278abf.tar.gz
pyramid-1646770c4eee27f37e53dcb50f8a271d5c278abf.tar.bz2
pyramid-1646770c4eee27f37e53dcb50f8a271d5c278abf.zip
- The ``repoze.bfg.request.Request`` class, which is a subclass of
``webob.Request`` now defines its own ``__setattr__``, ``__getattr__`` and ``__delattr__`` methods, which override the default WebOb behavior. The default WebOb behavior stores attributes of the request in ``self.environ['webob.adhoc_attrs']``, and retrieves them from that dictionary during a ``__getattr__``. This behavior was undesirable for speed and "expectation" reasons. Now attributes of the ``request`` are stored in ``request.__dict__`` (as you otherwise might expect from an object that did not override these methods). - The router no longer calls ``repoze.bfg.traversal._traverse`` and does its work "inline" (speed).
Diffstat (limited to 'repoze/bfg/tests/test_router.py')
-rw-r--r--repoze/bfg/tests/test_router.py52
1 files changed, 21 insertions, 31 deletions
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index 13a5bd11a..d2fbf4b2d 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -147,22 +147,6 @@ class TestRouter(unittest.TestCase):
self.failIf('debug_notfound' in result[0])
self.assertEqual(len(logger.messages), 0)
- def test_has_webob_adhoc_attrs(self):
- environ = self._makeEnviron()
- environ['webob.adhoc_attrs'] = {}
- context = DummyContext()
- logger = self._registerLogger()
- router = self._makeOne()
- start_response = DummyStartResponse()
- result = router(environ, start_response)
- headers = start_response.headers
- self.assertEqual(len(headers), 2)
- status = start_response.status
- self.assertEqual(status, '404 Not Found')
- self.failUnless('<code>/</code>' in result[0], result)
- self.failIf('debug_notfound' in result[0])
- self.assertEqual(len(logger.messages), 0)
-
def test_call_no_view_registered_no_isettings(self):
environ = self._makeEnviron()
context = DummyContext()
@@ -260,10 +244,11 @@ class TestRouter(unittest.TestCase):
self.assertEqual(result, ['Hello world'])
self.assertEqual(start_response.headers, ())
self.assertEqual(start_response.status, '200 OK')
- self.assertEqual(environ['webob.adhoc_attrs']['view_name'], '')
- self.assertEqual(environ['webob.adhoc_attrs']['subpath'], [])
- self.assertEqual(environ['webob.adhoc_attrs']['context'], context)
- self.assertEqual(environ['webob.adhoc_attrs']['root'], context)
+ request = view.request
+ self.assertEqual(request.view_name, '')
+ self.assertEqual(request.subpath, [])
+ self.assertEqual(request.context, context)
+ self.assertEqual(request.root, context)
def test_call_view_registered_nonspecific_nondefault_path_and_subpath(self):
context = DummyContext()
@@ -282,10 +267,11 @@ class TestRouter(unittest.TestCase):
self.assertEqual(result, ['Hello world'])
self.assertEqual(start_response.headers, ())
self.assertEqual(start_response.status, '200 OK')
- self.assertEqual(environ['webob.adhoc_attrs']['view_name'], 'foo')
- self.assertEqual(environ['webob.adhoc_attrs']['subpath'], ['bar'])
- self.assertEqual(environ['webob.adhoc_attrs']['context'], context)
- self.assertEqual(environ['webob.adhoc_attrs']['root'], context)
+ request = view.request
+ self.assertEqual(request.view_name, 'foo')
+ self.assertEqual(request.subpath, ['bar'])
+ self.assertEqual(request.context, context)
+ self.assertEqual(request.root, context)
def test_call_view_registered_specific_success(self):
from zope.interface import Interface
@@ -308,10 +294,11 @@ class TestRouter(unittest.TestCase):
self.assertEqual(result, ['Hello world'])
self.assertEqual(start_response.headers, ())
self.assertEqual(start_response.status, '200 OK')
- self.assertEqual(environ['webob.adhoc_attrs']['view_name'], '')
- self.assertEqual(environ['webob.adhoc_attrs']['subpath'], [])
- self.assertEqual(environ['webob.adhoc_attrs']['context'], context)
- self.assertEqual(environ['webob.adhoc_attrs']['root'], context)
+ request = view.request
+ self.assertEqual(request.view_name, '')
+ self.assertEqual(request.subpath, [])
+ self.assertEqual(request.context, context)
+ self.assertEqual(request.root, context)
def test_call_view_registered_specific_fail(self):
from zope.interface import Interface
@@ -383,13 +370,14 @@ class TestRouter(unittest.TestCase):
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse('200 OK')
response.headerlist = [('a', 1)]
- view = DummyView(response)
+ def view(context, request):
+ request.global_response_headers = [('b', 2)]
+ return response
environ = self._makeEnviron()
- environ['webob.adhoc_attrs'] = {'global_response_headers':[('b', 2)]}
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
start_response = DummyStartResponse()
- response = router(environ, start_response)
+ router(environ, start_response)
self.assertEqual(start_response.status, '200 OK')
self.assertEqual(start_response.headers, [('a', 1), ('b', 2)])
@@ -493,6 +481,8 @@ class DummyView:
self.raise_notfound = raise_notfound
def __call__(self, context, request):
+ self.context = context
+ self.request = request
if self.raise_unauthorized:
from repoze.bfg.exceptions import Forbidden
raise Forbidden('unauthorized')