cubicweb/pyramid/test/test_core.py
changeset 11631 faf279e33298
parent 11630 1400aee10df4
child 12088 477a59a45786
equal deleted inserted replaced
11478:1817f8946c22 11631:faf279e33298
       
     1 from cubicweb.pyramid.test import PyramidCWTest
       
     2 
       
     3 from cubicweb.view import View
       
     4 from cubicweb.web import Redirect
       
     5 from cubicweb import ValidationError
       
     6 
       
     7 
       
     8 class Redirector(View):
       
     9     __regid__ = 'redirector'
       
    10 
       
    11     def call(self, rset=None):
       
    12         self._cw.set_header('Cache-Control', 'no-cache')
       
    13         raise Redirect('http://example.org')
       
    14 
       
    15 
       
    16 def put_in_uncommitable_state(request):
       
    17     try:
       
    18         request.cw_cnx.execute('SET U login NULL WHERE U login "anon"')
       
    19     except ValidationError:
       
    20         pass
       
    21     request.response.body = b'OK'
       
    22     return request.response
       
    23 
       
    24 
       
    25 class CoreTest(PyramidCWTest):
       
    26     anonymous_allowed = True
       
    27 
       
    28     def includeme(self, config):
       
    29         config.add_route('uncommitable', '/uncommitable')
       
    30         config.add_view(put_in_uncommitable_state, route_name='uncommitable')
       
    31 
       
    32     def test_cw_to_pyramid_copy_headers_on_redirect(self):
       
    33         self.vreg.register(Redirector)
       
    34         try:
       
    35             res = self.webapp.get('/?vid=redirector', expect_errors=True)
       
    36             self.assertEqual(res.status_int, 303)
       
    37             self.assertEqual(res.headers['Cache-Control'], 'no-cache')
       
    38         finally:
       
    39             self.vreg.unregister(Redirector)
       
    40 
       
    41     def test_uncommitable_cnx(self):
       
    42         res = self.webapp.get('/uncommitable')
       
    43         self.assertEqual(res.text, 'OK')
       
    44         self.assertEqual(res.status_int, 200)
       
    45 
       
    46 
       
    47 if __name__ == '__main__':
       
    48     from unittest import main
       
    49     main()