summaryrefslogtreecommitdiff
path: root/pecan/tests/test_hooks.py
diff options
context:
space:
mode:
Diffstat (limited to 'pecan/tests/test_hooks.py')
-rw-r--r--pecan/tests/test_hooks.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/pecan/tests/test_hooks.py b/pecan/tests/test_hooks.py
index 0bfd216..d3fe05b 100644
--- a/pecan/tests/test_hooks.py
+++ b/pecan/tests/test_hooks.py
@@ -1656,3 +1656,43 @@ class TestRequestViewerHook(PecanTestCase):
viewer = RequestViewerHook(conf)
assert viewer.items == ['url']
+
+
+class TestRestControllerWithHooks(PecanTestCase):
+
+ def test_restcontroller_with_hooks(self):
+
+ class SomeHook(PecanHook):
+
+ def before(self, state):
+ state.response.headers['X-Testing'] = 'XYZ'
+
+ class BaseController(rest.RestController):
+
+ @expose()
+ def delete(self, _id):
+ return 'Deleting %s' % _id
+
+ class RootController(BaseController, HookController):
+
+ __hooks__ = [SomeHook()]
+
+ @expose()
+ def get_all(self):
+ return 'Hello, World!'
+
+ app = TestApp(
+ make_app(
+ RootController()
+ )
+ )
+
+ response = app.get('/')
+ assert response.status_int == 200
+ assert response.body == b_('Hello, World!')
+ assert response.headers['X-Testing'] == 'XYZ'
+
+ response = app.delete('/100/')
+ assert response.status_int == 200
+ assert response.body == b_('Deleting 100')
+ assert response.headers['X-Testing'] == 'XYZ'