summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
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
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')
-rw-r--r--repoze/bfg/tests/test_authentication.py3
-rw-r--r--repoze/bfg/tests/test_request.py22
-rw-r--r--repoze/bfg/tests/test_router.py52
-rw-r--r--repoze/bfg/tests/test_traversal.py33
-rw-r--r--repoze/bfg/tests/test_view.py10
5 files changed, 41 insertions, 79 deletions
diff --git a/repoze/bfg/tests/test_authentication.py b/repoze/bfg/tests/test_authentication.py
index 6546fd672..7b20e647c 100644
--- a/repoze/bfg/tests/test_authentication.py
+++ b/repoze/bfg/tests/test_authentication.py
@@ -420,8 +420,7 @@ class TestAuthTktCookieHelper(unittest.TestCase):
request = self._makeRequest({'HTTP_COOKIE':'auth_tkt=bogus'})
result = plugin.identify(request)
self.failUnless(result)
- attrs = request.environ['webob.adhoc_attrs']
- response_headers = attrs['global_response_headers']
+ response_headers = request.global_response_headers
self.assertEqual(len(response_headers), 3)
self.assertEqual(response_headers[0][0], 'Set-Cookie')
diff --git a/repoze/bfg/tests/test_request.py b/repoze/bfg/tests/test_request.py
index 78564e57e..8c868fcf5 100644
--- a/repoze/bfg/tests/test_request.py
+++ b/repoze/bfg/tests/test_request.py
@@ -78,14 +78,18 @@ class TestRequestFactory(unittest.TestCase):
sm = getSiteManager()
sm.registerUtility(DummyRequest, IRouteRequest, 'routename')
route = DummyRoute('routename')
- result = self._callFUT({'bfg.routes.route':route})
+ result = self._callFUT({'bfg.routes.route':route,
+ 'bfg.routes.matchdict':{'match':'1'}})
self.assertEqual(result.__class__, DummyRequest)
+ self.assertEqual(result.matchdict, {'match':'1'})
def test_it_with_route_notfound(self):
from repoze.bfg.request import Request
route = DummyRoute('routename')
- result = self._callFUT({'bfg.routes.route':route})
+ result = self._callFUT({'bfg.routes.route':route,
+ 'bfg.routes.matchdict':{'match':'1'}})
self.assertEqual(result.__class__, Request)
+ self.failIf(getattr(result, 'matchdict', None) is not None)
class Test_create_route_request_factory(unittest.TestCase):
def _callFUT(self, name):
@@ -104,20 +108,12 @@ class Test_add_global_response_headers(unittest.TestCase):
from repoze.bfg.request import add_global_response_headers
return add_global_response_headers(request, headerlist)
- def test_no_adhoc_attrs(self):
- request = DummyRequest()
- headers = [('a', 1), ('b', 2)]
- self._callFUT(request, headers)
- attrs = request.environ['webob.adhoc_attrs']
- self.assertEqual(attrs['global_response_headers'], headers)
-
- def test_with_adhoc_attrs(self):
+ def test_it(self):
request = DummyRequest()
headers = [('a', 1), ('b', 2)]
- attrs = request.environ['webob.adhoc_attrs'] = {}
- attrs['global_response_headers'] = headers[:]
+ request.global_response_headers = headers[:]
self._callFUT(request, [('c', 1)])
- self.assertEqual(attrs['global_response_headers'], headers + [('c', 1)])
+ self.assertEqual(request.global_response_headers, headers + [('c', 1)])
class DummyRoute:
def __init__(self, name):
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')
diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py
index 8337385c4..451642e8c 100644
--- a/repoze/bfg/tests/test_traversal.py
+++ b/repoze/bfg/tests/test_traversal.py
@@ -964,35 +964,12 @@ class TraverseTests(unittest.TestCase):
self.assertEqual(model.wascontext, True)
self.assertEqual(model.environ['PATH_INFO'], '')
-class UnderTraverseTests(unittest.TestCase):
- def setUp(self):
- cleanUp()
-
- def tearDown(self):
- cleanUp()
-
- def _callFUT(self, context, environ):
- from repoze.bfg.traversal import _traverse
- return _traverse(context, environ)
-
- def _registerTraverser(self, traverser):
- import zope.component
- sm = zope.component.getSiteManager()
- from repoze.bfg.interfaces import ITraverser
- from zope.interface import Interface
- sm.registerAdapter(traverser, (Interface,), ITraverser)
-
- def test_default_traverser_factory(self):
- context = DummyContext()
- result = self._callFUT(context, {})
+ def test_default_traverser(self):
+ model = DummyContext()
+ result = self._callFUT(model, '')
self.assertEqual(result['view_name'], '')
-
- def test_isdict(self):
- traverser = make_traverser({})
- self._registerTraverser(traverser)
- context = DummyContext()
- result = self._callFUT(context, None)
- self.assertEqual(result, {})
+ self.assertEqual(result['context'], model)
+
def make_traverser(result):
class DummyTraverser(object):
diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py
index bbef24359..14923f5b8 100644
--- a/repoze/bfg/tests/test_view.py
+++ b/repoze/bfg/tests/test_view.py
@@ -1255,7 +1255,7 @@ class Test_rendered_response(unittest.TestCase):
response = {'a':'1'}
request = DummyRequest()
attrs = {'response_content_type':'text/nonsense'}
- request.environ['webob.adhoc_attrs'] = attrs
+ request.__dict__.update(attrs)
result = self._callFUT(renderer, response, request=request)
self.assertEqual(result.content_type, 'text/nonsense')
@@ -1264,7 +1264,7 @@ class Test_rendered_response(unittest.TestCase):
response = {'a':'1'}
request = DummyRequest()
attrs = {'response_headerlist':[('a', '1'), ('b', '2')]}
- request.environ['webob.adhoc_attrs'] = attrs
+ request.__dict__.update(attrs)
result = self._callFUT(renderer, response, request=request)
self.assertEqual(result.headerlist,
[('Content-Type', 'text/html; charset=UTF-8'),
@@ -1277,7 +1277,7 @@ class Test_rendered_response(unittest.TestCase):
response = {'a':'1'}
request = DummyRequest()
attrs = {'response_status':'406 You Lose'}
- request.environ['webob.adhoc_attrs'] = attrs
+ request.__dict__.update(attrs)
result = self._callFUT(renderer, response, request=request)
self.assertEqual(result.status, '406 You Lose')
@@ -1286,7 +1286,7 @@ class Test_rendered_response(unittest.TestCase):
response = {'a':'1'}
request = DummyRequest()
attrs = {'response_charset':'UTF-16'}
- request.environ['webob.adhoc_attrs'] = attrs
+ request.__dict__.update(attrs)
result = self._callFUT(renderer, response, request=request)
self.assertEqual(result.charset, 'UTF-16')
@@ -1295,7 +1295,7 @@ class Test_rendered_response(unittest.TestCase):
response = {'a':'1'}
request = DummyRequest()
attrs = {'response_cache_for':100}
- request.environ['webob.adhoc_attrs'] = attrs
+ request.__dict__.update(attrs)
result = self._callFUT(renderer, response, request=request)
self.assertEqual(result.cache_control.max_age, 100)