devtools/test/unittest_testlib.py
changeset 9857 618d45655865
parent 9472 ae97167956b1
child 9864 f60a80592224
equal deleted inserted replaced
9856:156a3fb4a884 9857:618d45655865
     1 # copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     1 # copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     3 #
     3 #
     4 # This file is part of CubicWeb.
     4 # This file is part of CubicWeb.
     5 #
     5 #
     6 # CubicWeb is free software: you can redistribute it and/or modify it under the
     6 # CubicWeb is free software: you can redistribute it and/or modify it under the
    37 
    37 
    38     def test_error_raised(self):
    38     def test_error_raised(self):
    39         class MyWebTest(CubicWebTC):
    39         class MyWebTest(CubicWebTC):
    40 
    40 
    41             def test_error_view(self):
    41             def test_error_view(self):
    42                 self.request().create_entity('Bug', title=u"bt")
    42                 with self.admin_access.web_request() as req:
    43                 self.view('raising', self.execute('Bug B'), template=None)
    43                     req.create_entity('Bug', title=u"bt")
       
    44                     self.view('raising', req.execute('Bug B'), template=None)
    44 
    45 
    45             def test_correct_view(self):
    46             def test_correct_view(self):
    46                 self.view('primary', self.execute('CWUser U'), template=None)
    47                 with self.admin_access.web_request() as req:
       
    48                     self.view('primary', req.execute('CWUser U'), template=None)
    47 
    49 
    48         tests = [MyWebTest('test_error_view'), MyWebTest('test_correct_view')]
    50         tests = [MyWebTest('test_error_view'), MyWebTest('test_correct_view')]
    49         result = self.runner.run(TestSuite(tests))
    51         result = self.runner.run(TestSuite(tests))
    50         self.assertEqual(result.testsRun, 2)
    52         self.assertEqual(result.testsRun, 2)
    51         self.assertEqual(len(result.errors), 0)
    53         self.assertEqual(len(result.errors), 0)
    96 """
    98 """
    97 
    99 
    98 
   100 
    99 class HTMLPageInfoTC(TestCase):
   101 class HTMLPageInfoTC(TestCase):
   100     """test cases for PageInfo"""
   102     """test cases for PageInfo"""
       
   103 
   101     def setUp(self):
   104     def setUp(self):
   102         parser = htmlparser.HTMLValidator()
   105         parser = htmlparser.HTMLValidator()
   103         # disable cleanup that would remove doctype
   106         # disable cleanup that would remove doctype
   104         parser.preprocess_data = lambda data: data
   107         parser.preprocess_data = lambda data: data
   105         self.page_info = parser.parse_string(HTML_PAGE2)
   108         self.page_info = parser.parse_string(HTML_PAGE2)
   110 
   113 
   111     def test_source2(self):
   114     def test_source2(self):
   112         """make sure source is stored correctly - raise exception"""
   115         """make sure source is stored correctly - raise exception"""
   113         parser = htmlparser.DTDValidator()
   116         parser = htmlparser.DTDValidator()
   114         self.assertRaises(AssertionError, parser.parse_string, HTML_PAGE_ERROR)
   117         self.assertRaises(AssertionError, parser.parse_string, HTML_PAGE_ERROR)
   115 
       
   116 
   118 
   117     def test_has_title_no_level(self):
   119     def test_has_title_no_level(self):
   118         """tests h? tags information"""
   120         """tests h? tags information"""
   119         self.assertEqual(self.page_info.has_title('Test'), True)
   121         self.assertEqual(self.page_info.has_title('Test'), True)
   120         self.assertEqual(self.page_info.has_title('Test '), False)
   122         self.assertEqual(self.page_info.has_title('Test '), False)
   158         self.assertEqual(self.page_info.has_link_regexp('L[oi]gilab'), True)
   160         self.assertEqual(self.page_info.has_link_regexp('L[oi]gilab'), True)
   159         self.assertEqual(self.page_info.has_link_regexp('L[ai]gilab'), False)
   161         self.assertEqual(self.page_info.has_link_regexp('L[ai]gilab'), False)
   160 
   162 
   161 
   163 
   162 class CWUtilitiesTC(CubicWebTC):
   164 class CWUtilitiesTC(CubicWebTC):
       
   165 
   163     def test_temporary_permissions_eschema(self):
   166     def test_temporary_permissions_eschema(self):
   164         eschema = self.schema['CWUser']
   167         eschema = self.schema['CWUser']
   165         with self.temporary_permissions(CWUser={'read': ()}):
   168         with self.temporary_permissions(CWUser={'read': ()}):
   166             self.assertEqual(eschema.permissions['read'], ())
   169             self.assertEqual(eschema.permissions['read'], ())
   167             self.assertTrue(eschema.permissions['add'])
   170             self.assertTrue(eschema.permissions['add'])
   173             self.assertEqual(rdef.permissions['read'], ())
   176             self.assertEqual(rdef.permissions['read'], ())
   174             self.assertTrue(rdef.permissions['add'])
   177             self.assertTrue(rdef.permissions['add'])
   175         self.assertTrue(rdef.permissions['read'], ())
   178         self.assertTrue(rdef.permissions['read'], ())
   176 
   179 
   177     def test_temporary_appobjects_registered(self):
   180     def test_temporary_appobjects_registered(self):
       
   181 
   178         class AnAppobject(object):
   182         class AnAppobject(object):
   179             __registries__ = ('hip',)
   183             __registries__ = ('hip',)
   180             __regid__ = 'hop'
   184             __regid__ = 'hop'
   181             __select__ = yes()
   185             __select__ = yes()
   182             registered = None
   186             registered = None
       
   187 
   183             @classmethod
   188             @classmethod
   184             def __registered__(cls, reg):
   189             def __registered__(cls, reg):
   185                 cls.registered = reg
   190                 cls.registered = reg
   186 
   191 
   187         with self.temporary_appobjects(AnAppobject):
   192         with self.temporary_appobjects(AnAppobject):
   188             self.assertEqual(self.vreg['hip'], AnAppobject.registered)
   193             self.assertEqual(self.vreg['hip'], AnAppobject.registered)
   189             self.assertIn(AnAppobject, self.vreg['hip']['hop'])
   194             self.assertIn(AnAppobject, self.vreg['hip']['hop'])
   190         self.assertNotIn(AnAppobject, self.vreg['hip']['hop'])
   195         self.assertNotIn(AnAppobject, self.vreg['hip']['hop'])
   191 
   196 
   192     def test_login(self):
   197     def test_login(self):
   193         """Calling login should not break self.session hook control"""
   198         """Calling login should not break hook control"""
   194         self.hook_executed = False
   199         with self.admin_access.repo_cnx() as cnx:
   195         babar = self.create_user(self.request(), 'babar')
   200             self.hook_executed = False
   196         self.commit()
   201             self.create_user(cnx, 'babar')
       
   202             cnx.commit()
   197 
   203 
   198         from cubicweb.server import hook
   204         from cubicweb.server import hook
   199         from cubicweb.predicates import is_instance
   205         from cubicweb.predicates import is_instance
   200 
   206 
   201         class MyHook(hook.Hook):
   207         class MyHook(hook.Hook):
   206             test = self
   212             test = self
   207 
   213 
   208             def __call__(self):
   214             def __call__(self):
   209                 self.test.hook_executed = True
   215                 self.test.hook_executed = True
   210 
   216 
   211         self.login('babar')
   217         with self.new_access('babar').repo_cnx() as cnx:
   212         with self.temporary_appobjects(MyHook):
   218             with self.temporary_appobjects(MyHook):
   213             with self.session.allow_all_hooks_but('test-hook'):
   219                 with cnx.allow_all_hooks_but('test-hook'):
   214                 req = self.request()
   220                     prop = cnx.create_entity('CWProperty', pkey=u'ui.language', value=u'en')
   215                 prop = req.create_entity('CWProperty', pkey=u'ui.language', value=u'en')
   221                     cnx.commit()
   216                 self.commit()
   222                     self.assertFalse(self.hook_executed)
   217                 self.assertFalse(self.hook_executed)
       
   218 
   223 
   219 
   224 
   220 class RepoAccessTC(CubicWebTC):
   225 class RepoAccessTC(CubicWebTC):
       
   226 
   221     def test_repo_connection(self):
   227     def test_repo_connection(self):
   222         acc = self.new_access('admin')
   228         acc = self.new_access('admin')
   223         with  acc.repo_cnx() as cnx:
   229         with acc.repo_cnx() as cnx:
   224             rset = cnx.execute('Any X WHERE X is CWUser')
   230             rset = cnx.execute('Any X WHERE X is CWUser')
   225             self.assertTrue(rset)
   231             self.assertTrue(rset)
   226 
   232 
   227     def test_client_connection(self):
   233     def test_client_connection(self):
   228         acc = self.new_access('admin')
   234         acc = self.new_access('admin')
   229         with  acc.client_cnx() as cnx:
   235         with acc.client_cnx() as cnx:
   230             rset = cnx.execute('Any X WHERE X is CWUser')
   236             rset = cnx.execute('Any X WHERE X is CWUser')
   231             self.assertTrue(rset)
   237             self.assertTrue(rset)
   232 
   238 
   233     def test_web_request(self):
   239     def test_web_request(self):
   234         acc = self.new_access('admin')
   240         acc = self.new_access('admin')
   235         with  acc.web_request(elephant='babar') as req:
   241         with acc.web_request(elephant='babar') as req:
   236             rset = req.execute('Any X WHERE X is CWUser')
   242             rset = req.execute('Any X WHERE X is CWUser')
   237             self.assertTrue(rset)
   243             self.assertTrue(rset)
   238             self.assertEqual('babar', req.form['elephant'])
   244             self.assertEqual('babar', req.form['elephant'])
   239 
   245 
   240     def test_close(self):
   246     def test_close(self):