17 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
17 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
18 |
18 |
19 from logilab.common.testlib import TestCase, unittest_main |
19 from logilab.common.testlib import TestCase, unittest_main |
20 from cubicweb import ObjectNotFound |
20 from cubicweb import ObjectNotFound |
21 from cubicweb.req import RequestSessionBase, FindEntityError |
21 from cubicweb.req import RequestSessionBase, FindEntityError |
|
22 from cubicweb.devtools import ApptestConfiguration |
22 from cubicweb.devtools.testlib import CubicWebTC |
23 from cubicweb.devtools.testlib import CubicWebTC |
23 from cubicweb import Unauthorized |
24 from cubicweb import Unauthorized |
24 |
25 |
25 class RequestTC(TestCase): |
26 class RequestTC(TestCase): |
26 def test_rebuild_url(self): |
27 def test_rebuild_url(self): |
42 self.assertEqual(req.build_url('one'), u'http://testing.fr/cubicweb/one') |
43 self.assertEqual(req.build_url('one'), u'http://testing.fr/cubicweb/one') |
43 self.assertEqual(req.build_url(param='ok'), u'http://testing.fr/cubicweb/view?param=ok') |
44 self.assertEqual(req.build_url(param='ok'), u'http://testing.fr/cubicweb/view?param=ok') |
44 self.assertRaises(AssertionError, req.build_url, 'one', 'two not allowed') |
45 self.assertRaises(AssertionError, req.build_url, 'one', 'two not allowed') |
45 self.assertRaises(AssertionError, req.build_url, 'view', test=None) |
46 self.assertRaises(AssertionError, req.build_url, 'view', test=None) |
46 |
47 |
|
48 def test_build_url_language_from_url(self): |
|
49 # need req.vreg.config to exist because lang is read in it at set_language() call |
|
50 vreg = MockVReg() |
|
51 vreg.config.global_set_option('language-mode', 'url-prefix') |
|
52 req = RequestSessionBase(vreg) |
|
53 req.base_url = lambda secure=None: 'http://testing.fr/cubicweb/' |
|
54 self.assertIsNone(req.lang) # language unset yet. |
|
55 self.assertEqual(req.build_url(), 'http://testing.fr/cubicweb/view') |
|
56 self.assertEqual(req.build_url('foo'), 'http://testing.fr/cubicweb/foo') |
|
57 req.set_language('fr') |
|
58 self.assertEqual(req.lang, 'fr') |
|
59 self.assertEqual(req.build_url(), 'http://testing.fr/cubicweb/fr/view') |
|
60 self.assertEqual(req.build_url('foo'), 'http://testing.fr/cubicweb/fr/foo') |
|
61 req.set_language('en') |
|
62 self.assertEqual(req.lang, 'en') |
|
63 self.assertEqual(req.build_url(), 'http://testing.fr/cubicweb/en/view') |
|
64 self.assertEqual(req.build_url('foo'), 'http://testing.fr/cubicweb/en/foo') |
|
65 # no language prefix in URL |
|
66 vreg.config.global_set_option('language-mode', '') |
|
67 self.assertEqual(req.build_url(), 'http://testing.fr/cubicweb/view') |
|
68 self.assertEqual(req.build_url('foo'), 'http://testing.fr/cubicweb/foo') |
|
69 req.set_language('fr') |
|
70 self.assertEqual(req.build_url(), 'http://testing.fr/cubicweb/view') |
|
71 self.assertEqual(req.build_url('foo'), 'http://testing.fr/cubicweb/foo') |
|
72 |
47 def test_ensure_no_rql(self): |
73 def test_ensure_no_rql(self): |
48 req = RequestSessionBase(None) |
74 req = RequestSessionBase(None) |
49 self.assertEqual(req.ensure_ro_rql('Any X WHERE X is CWUser'), None) |
75 self.assertEqual(req.ensure_ro_rql('Any X WHERE X is CWUser'), None) |
50 self.assertEqual(req.ensure_ro_rql(' Any X WHERE X is CWUser '), None) |
76 self.assertEqual(req.ensure_ro_rql(' Any X WHERE X is CWUser '), None) |
51 self.assertRaises(Unauthorized, req.ensure_ro_rql, 'SET X login "toto" WHERE X is CWUser') |
77 self.assertRaises(Unauthorized, req.ensure_ro_rql, 'SET X login "toto" WHERE X is CWUser') |
52 self.assertRaises(Unauthorized, req.ensure_ro_rql, ' SET X login "toto" WHERE X is CWUser ') |
78 self.assertRaises(Unauthorized, req.ensure_ro_rql, ' SET X login "toto" WHERE X is CWUser ') |
|
79 |
|
80 |
|
81 class MockVReg(object): |
|
82 """Fake VReg with just a basic config in it. |
|
83 """ |
|
84 def __init__(self): |
|
85 self.config = ApptestConfiguration('data', __file__) |
53 |
86 |
54 |
87 |
55 class RequestCWTC(CubicWebTC): |
88 class RequestCWTC(CubicWebTC): |
56 |
89 |
57 def test_base_url(self): |
90 def test_base_url(self): |