diff -r 1817f8946c22 -r faf279e33298 cubicweb/pyramid/test/test_core.py --- /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()