summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_request.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-09-05 04:58:23 +0000
committerChris McDonough <chrism@agendaless.com>2010-09-05 04:58:23 +0000
commit844e98b01c5c6aa1585a76ac77f92bb8c1ef9d90 (patch)
treed88407f6af193047b4892b328cbd76c101d2300d /repoze/bfg/tests/test_request.py
parent2d4f61826a0ebc5330b869713abf7a36a69c0e6a (diff)
downloadpyramid-844e98b01c5c6aa1585a76ac77f92bb8c1ef9d90.tar.gz
pyramid-844e98b01c5c6aa1585a76ac77f92bb8c1ef9d90.tar.bz2
pyramid-844e98b01c5c6aa1585a76ac77f92bb8c1ef9d90.zip
Documentation
------------- - Add an API chapter for the ``repoze.bfg.request`` module, which includes documentation for the ``repoze.bfg.request.Request`` class (the "request object"). - Modify the "Request and Response" narrative chapter to reference the new ``repoze.bfg.request`` API chapter. Some content was moved from this chapter into the API documentation itself. Features -------- - A new ``repoze.bfg.request.Request.add_response_callback`` API has been added. This method is documented in the new ``repoze.bfg.request`` API chapter. It can be used to influence response values before a concrete response object has been created. Internal -------- - The (internal) feature which made it possible to attach a ``global_response_headers`` attribute to the request (which was assumed to contain a sequence of header key/value pairs which would later be added to the response by the router), has been removed. The functionality of ``repoze.bfg.request.Request.add_response_callback`` takes its place.
Diffstat (limited to 'repoze/bfg/tests/test_request.py')
-rw-r--r--repoze/bfg/tests/test_request.py47
1 files changed, 43 insertions, 4 deletions
diff --git a/repoze/bfg/tests/test_request.py b/repoze/bfg/tests/test_request.py
index 7b3d0ce7b..8d23e360f 100644
--- a/repoze/bfg/tests/test_request.py
+++ b/repoze/bfg/tests/test_request.py
@@ -157,6 +157,33 @@ class TestRequest(unittest.TestCase):
result = inst.values()
self.assertEqual(result, environ.values())
+ def test_add_response_callback(self):
+ inst = self._makeOne({})
+ self.assertEqual(inst.response_callbacks, ())
+ def callback(request, response):
+ """ """
+ inst.add_response_callback(callback)
+ self.assertEqual(inst.response_callbacks, [callback])
+ inst.add_response_callback(callback)
+ self.assertEqual(inst.response_callbacks, [callback, callback])
+
+ def test__process_response_callbacks(self):
+ inst = self._makeOne({})
+ def callback1(request, response):
+ request.called1 = True
+ response.called1 = True
+ def callback2(request, response):
+ request.called2 = True
+ response.called2 = True
+ inst.response_callbacks = [callback1, callback2]
+ response = DummyResponse()
+ inst._process_response_callbacks(response)
+ self.assertEqual(inst.called1, True)
+ self.assertEqual(inst.called2, True)
+ self.assertEqual(response.called1, True)
+ self.assertEqual(response.called2, True)
+ self.assertEqual(inst.response_callbacks, ())
+
class Test_route_request_iface(unittest.TestCase):
def _callFUT(self, name):
from repoze.bfg.request import route_request_iface
@@ -175,10 +202,11 @@ class Test_add_global_response_headers(unittest.TestCase):
def test_it(self):
request = DummyRequest()
- headers = [('a', 1), ('b', 2)]
- request.global_response_headers = headers[:]
+ response = DummyResponse()
self._callFUT(request, [('c', 1)])
- self.assertEqual(request.global_response_headers, headers + [('c', 1)])
+ self.assertEqual(len(request.response_callbacks), 1)
+ request.response_callbacks[0](None, response)
+ self.assertEqual(response.headers.added, [('c', 1)] )
class DummyRequest:
def __init__(self, environ=None):
@@ -186,10 +214,21 @@ class DummyRequest:
environ = {}
self.environ = environ
+ def add_response_callback(self, callback):
+ self.response_callbacks = [callback]
+
class DummyNewRequestEvent:
def __init__(self, request):
self.request = request
-
+class DummyHeaders:
+ def __init__(self):
+ self.added = []
+ def add(self, k, v):
+ self.added.append((k, v))
+
+class DummyResponse:
+ def __init__(self):
+ self.headers = DummyHeaders()