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