cubicweb/pyramid/test/test_core.py
changeset 11631 faf279e33298
parent 11630 1400aee10df4
child 12088 477a59a45786
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/pyramid/test/test_core.py	Mon Sep 26 14:52:12 2016 +0200
@@ -0,0 +1,49 @@
+from cubicweb.pyramid.test import PyramidCWTest
+
+from cubicweb.view import View
+from cubicweb.web import Redirect
+from cubicweb import ValidationError
+
+
+class Redirector(View):
+    __regid__ = 'redirector'
+
+    def call(self, rset=None):
+        self._cw.set_header('Cache-Control', 'no-cache')
+        raise Redirect('http://example.org')
+
+
+def put_in_uncommitable_state(request):
+    try:
+        request.cw_cnx.execute('SET U login NULL WHERE U login "anon"')
+    except ValidationError:
+        pass
+    request.response.body = b'OK'
+    return request.response
+
+
+class CoreTest(PyramidCWTest):
+    anonymous_allowed = True
+
+    def includeme(self, config):
+        config.add_route('uncommitable', '/uncommitable')
+        config.add_view(put_in_uncommitable_state, route_name='uncommitable')
+
+    def test_cw_to_pyramid_copy_headers_on_redirect(self):
+        self.vreg.register(Redirector)
+        try:
+            res = self.webapp.get('/?vid=redirector', expect_errors=True)
+            self.assertEqual(res.status_int, 303)
+            self.assertEqual(res.headers['Cache-Control'], 'no-cache')
+        finally:
+            self.vreg.unregister(Redirector)
+
+    def test_uncommitable_cnx(self):
+        res = self.webapp.get('/uncommitable')
+        self.assertEqual(res.text, 'OK')
+        self.assertEqual(res.status_int, 200)
+
+
+if __name__ == '__main__':
+    from unittest import main
+    main()