summaryrefslogtreecommitdiff
path: root/tests/test_tweens.py
diff options
context:
space:
mode:
authorMichael Merickel <github@m.merickel.org>2018-10-15 09:03:53 -0500
committerGitHub <noreply@github.com>2018-10-15 09:03:53 -0500
commit81576ee51564c49d5ff3c1c07f214f22a8438231 (patch)
tree5b3fe0b39a0fc33d545733d821738845909f638c /tests/test_tweens.py
parent433efe06191a7007ca8c5bf8fafee5c7c1439ebb (diff)
parent17e3abf320f6d9cd90f7e5a0352280c2fef584af (diff)
downloadpyramid-81576ee51564c49d5ff3c1c07f214f22a8438231.tar.gz
pyramid-81576ee51564c49d5ff3c1c07f214f22a8438231.tar.bz2
pyramid-81576ee51564c49d5ff3c1c07f214f22a8438231.zip
Merge pull request #3387 from mmerickel/src-folder-refactor
refactor pyramid tests into a tests folder and package into a src folder
Diffstat (limited to 'tests/test_tweens.py')
-rw-r--r--tests/test_tweens.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/tests/test_tweens.py b/tests/test_tweens.py
new file mode 100644
index 000000000..2e74ad7cf
--- /dev/null
+++ b/tests/test_tweens.py
@@ -0,0 +1,88 @@
+import unittest
+from pyramid import testing
+
+class Test_excview_tween_factory(unittest.TestCase):
+ def setUp(self):
+ self.config = testing.setUp()
+
+ def tearDown(self):
+ testing.tearDown()
+
+ def _makeOne(self, handler, registry=None):
+ from pyramid.tweens import excview_tween_factory
+ if registry is None:
+ registry = self.config.registry
+ return excview_tween_factory(handler, registry)
+
+ def test_it_passthrough_no_exception(self):
+ dummy_response = DummyResponse()
+ def handler(request):
+ return dummy_response
+ tween = self._makeOne(handler)
+ request = DummyRequest()
+ result = tween(request)
+ self.assertTrue(result is dummy_response)
+ self.assertIsNone(request.exception)
+ self.assertIsNone(request.exc_info)
+
+ def test_it_catches_notfound(self):
+ from pyramid.request import Request
+ from pyramid.httpexceptions import HTTPNotFound
+ self.config.add_notfound_view(lambda exc, request: exc)
+ def handler(request):
+ raise HTTPNotFound
+ tween = self._makeOne(handler)
+ request = Request.blank('/')
+ request.registry = self.config.registry
+ result = tween(request)
+ self.assertEqual(result.status, '404 Not Found')
+ self.assertIsInstance(request.exception, HTTPNotFound)
+ self.assertEqual(request.exception, request.exc_info[1])
+
+ def test_it_catches_with_predicate(self):
+ from pyramid.request import Request
+ from pyramid.response import Response
+ def excview(request):
+ return Response('foo')
+ self.config.add_view(excview, context=ValueError, request_method='GET')
+ def handler(request):
+ raise ValueError
+ tween = self._makeOne(handler)
+ request = Request.blank('/')
+ request.registry = self.config.registry
+ result = tween(request)
+ self.assertTrue(b'foo' in result.body)
+ self.assertIsInstance(request.exception, ValueError)
+ self.assertEqual(request.exception, request.exc_info[1])
+
+ def test_it_reraises_on_mismatch(self):
+ from pyramid.request import Request
+ def excview(request): pass
+ self.config.add_view(excview, context=ValueError, request_method='GET')
+ def handler(request):
+ raise ValueError
+ tween = self._makeOne(handler)
+ request = Request.blank('/')
+ request.registry = self.config.registry
+ request.method = 'POST'
+ self.assertRaises(ValueError, lambda: tween(request))
+ self.assertIsNone(request.exception)
+ self.assertIsNone(request.exc_info)
+
+ def test_it_reraises_on_no_match(self):
+ from pyramid.request import Request
+ def handler(request):
+ raise ValueError
+ tween = self._makeOne(handler)
+ request = Request.blank('/')
+ request.registry = self.config.registry
+ self.assertRaises(ValueError, lambda: tween(request))
+ self.assertIsNone(request.exception)
+ self.assertIsNone(request.exc_info)
+
+class DummyRequest:
+ exception = None
+ exc_info = None
+
+class DummyResponse:
+ pass