summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_router.py
diff options
context:
space:
mode:
Diffstat (limited to 'repoze/bfg/tests/test_router.py')
-rw-r--r--repoze/bfg/tests/test_router.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index c243d739e..fafe88d4a 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -126,6 +126,21 @@ class TestRouter(unittest.TestCase):
router = self._makeOne()
self.assertEqual(router.request_factory, DummyRequestFactory)
+ def test_call_request_factory_raises_finished_request_catches(self):
+ from repoze.bfg.interfaces import IFinishedRequest
+ finished_events = self._registerEventListener(IFinishedRequest)
+ environ = self._makeEnviron()
+ logger = self._registerLogger()
+ router = self._makeOne()
+ def dummy_request_factory(environ):
+ raise NotImplementedError
+ router.request_factory = dummy_request_factory
+ start_response = DummyStartResponse()
+ exc_raised(NotImplementedError, router, environ, start_response)
+ self.assertEqual(len(logger.messages), 0)
+ self.assertEqual(len(finished_events), 1)
+ self.assertEqual(finished_events[0].request, None)
+
def test_call_traverser_default(self):
from repoze.bfg.exceptions import NotFound
environ = self._makeEnviron()
@@ -399,7 +414,8 @@ class TestRouter(unittest.TestCase):
def test_call_eventsends(self):
from repoze.bfg.interfaces import INewRequest
from repoze.bfg.interfaces import INewResponse
- from repoze.bfg.interfaces import IAfterTraversal
+ from repoze.bfg.interfaces import IContextFound
+ from repoze.bfg.interfaces import IFinishedRequest
from repoze.bfg.interfaces import IViewClassifier
context = DummyContext()
self._registerTraverserFactory(context)
@@ -409,8 +425,9 @@ class TestRouter(unittest.TestCase):
environ = self._makeEnviron()
self._registerView(view, '', IViewClassifier, None, None)
request_events = self._registerEventListener(INewRequest)
- aftertraversal_events = self._registerEventListener(IAfterTraversal)
+ aftertraversal_events = self._registerEventListener(IContextFound)
response_events = self._registerEventListener(INewResponse)
+ finished_events = self._registerEventListener(IFinishedRequest)
router = self._makeOne()
start_response = DummyStartResponse()
result = router(environ, start_response)
@@ -420,6 +437,8 @@ class TestRouter(unittest.TestCase):
self.assertEqual(aftertraversal_events[0].request.environ, environ)
self.assertEqual(len(response_events), 1)
self.assertEqual(response_events[0].response, response)
+ self.assertEqual(len(finished_events), 1)
+ self.assertEqual(finished_events[0].request.environ, environ)
self.assertEqual(result, response.app_iter)
def test_call_pushes_and_pops_threadlocal_manager(self):