pyramid_cubicweb/tests/test_core.py
changeset 11568 a9940c6cd693
parent 11556 1eeba41a2e95
child 11611 9d2bb6bdb5c8
equal deleted inserted replaced
11567:4f8aa5fcd5da 11568:a9940c6cd693
     1 from pyramid_cubicweb.tests import PyramidCWTest
     1 from pyramid_cubicweb.tests import PyramidCWTest
     2 
     2 
     3 from cubicweb.view import View
     3 from cubicweb.view import View
     4 from cubicweb.web import Redirect
     4 from cubicweb.web import Redirect
       
     5 from cubicweb import ValidationError
     5 
     6 
     6 
     7 
     7 class Redirector(View):
     8 class Redirector(View):
     8     __regid__ = 'redirector'
     9     __regid__ = 'redirector'
     9 
    10 
    10     def call(self, rset=None):
    11     def call(self, rset=None):
    11         self._cw.set_header('Cache-Control', 'no-cache')
    12         self._cw.set_header('Cache-Control', 'no-cache')
    12         raise Redirect('http://example.org')
    13         raise Redirect('http://example.org')
    13 
    14 
    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 = 'OK'
       
    22     return request.response
       
    23 
       
    24 
    15 class CoreTest(PyramidCWTest):
    25 class CoreTest(PyramidCWTest):
    16     anonymous_allowed = True
    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')
    17 
    31 
    18     def test_cw_to_pyramid_copy_headers_on_redirect(self):
    32     def test_cw_to_pyramid_copy_headers_on_redirect(self):
    19         self.vreg.register(Redirector)
    33         self.vreg.register(Redirector)
    20         try:
    34         try:
    21             res = self.webapp.get('/?vid=redirector', expect_errors=True)
    35             res = self.webapp.get('/?vid=redirector', expect_errors=True)
    22             self.assertEqual(res.status_int, 303)
    36             self.assertEqual(res.status_int, 303)
    23             self.assertEqual(res.headers['Cache-Control'], 'no-cache')
    37             self.assertEqual(res.headers['Cache-Control'], 'no-cache')
    24         finally:
    38         finally:
    25             self.vreg.unregister(Redirector)
    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)