|
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() |