cubicweb/test/unittest_req.py
changeset 11794 d8830e2bd2e0
parent 11057 0b59724cb3f2
child 11799 1bdfe9d4ab83
equal deleted inserted replaced
11793:b455460630a0 11794:d8830e2bd2e0
    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):
   147                 req.find('CWUser', reverse_buddy=users[0])
   180                 req.find('CWUser', reverse_buddy=users[0])
   148 
   181 
   149             with self.assertRaises(NotImplementedError):
   182             with self.assertRaises(NotImplementedError):
   150                 req.find('CWUser', in_group=[1, 2])
   183                 req.find('CWUser', in_group=[1, 2])
   151 
   184 
       
   185 
   152 if __name__ == '__main__':
   186 if __name__ == '__main__':
   153     unittest_main()
   187     unittest_main()