test/unittest_dbapi.py
changeset 9068 86dcc29740e0
parent 8694 d901c36bcfce
child 9469 032825bbacab
equal deleted inserted replaced
9067:262d7874c6c7 9068:86dcc29740e0
    20 from copy import copy
    20 from copy import copy
    21 
    21 
    22 from logilab.common import tempattr
    22 from logilab.common import tempattr
    23 
    23 
    24 from cubicweb import ConnectionError, cwconfig, NoSelectableObject
    24 from cubicweb import ConnectionError, cwconfig, NoSelectableObject
    25 from cubicweb.dbapi import ProgrammingError
    25 from cubicweb.dbapi import ProgrammingError, _repo_connect
    26 from cubicweb.devtools.testlib import CubicWebTC
    26 from cubicweb.devtools.testlib import CubicWebTC
    27 
    27 
    28 
    28 
    29 class DBAPITC(CubicWebTC):
    29 class DBAPITC(CubicWebTC):
    30 
    30 
    31     def test_public_repo_api(self):
    31     def test_public_repo_api(self):
    32         cnx = self.login('anon')
    32         cnx = _repo_connect(self.repo, login='anon', password='anon')
    33         self.assertEqual(cnx.get_schema(), self.repo.schema)
    33         self.assertEqual(cnx.get_schema(), self.repo.schema)
    34         self.assertEqual(cnx.source_defs(), {'system': {'type': 'native', 'uri': 'system',
    34         self.assertEqual(cnx.source_defs(), {'system': {'type': 'native', 'uri': 'system',
    35                                                         'use-cwuri-as-url': False}})
    35                                                         'use-cwuri-as-url': False}})
    36         self.restore_connection() # proper way to close cnx
    36         cnx.close()
    37         self.assertRaises(ProgrammingError, cnx.get_schema)
    37         self.assertRaises(ProgrammingError, cnx.get_schema)
    38         self.assertRaises(ProgrammingError, cnx.source_defs)
    38         self.assertRaises(ProgrammingError, cnx.source_defs)
    39 
    39 
    40     def test_db_api(self):
    40     def test_db_api(self):
    41         cnx = self.login('anon')
    41         cnx = _repo_connect(self.repo, login='anon', password='anon')
    42         self.assertEqual(cnx.rollback(), None)
    42         self.assertEqual(cnx.rollback(), None)
    43         self.assertEqual(cnx.commit(), None)
    43         self.assertEqual(cnx.commit(), None)
    44         self.restore_connection() # proper way to close cnx
    44         cnx.close()
    45         #self.assertEqual(cnx.close(), None)
       
    46         self.assertRaises(ProgrammingError, cnx.rollback)
    45         self.assertRaises(ProgrammingError, cnx.rollback)
    47         self.assertRaises(ProgrammingError, cnx.commit)
    46         self.assertRaises(ProgrammingError, cnx.commit)
    48         self.assertRaises(ProgrammingError, cnx.close)
    47         self.assertRaises(ProgrammingError, cnx.close)
    49 
    48 
    50     def test_api(self):
    49     def test_api(self):
    51         cnx = self.login('anon')
    50         cnx = _repo_connect(self.repo, login='anon', password='anon')
    52         self.assertEqual(cnx.user(None).login, 'anon')
    51         self.assertEqual(cnx.user(None).login, 'anon')
    53         self.assertEqual(cnx.describe(1), (u'CWSource', u'system', None))
    52         self.assertEqual(cnx.describe(1), (u'CWSource', u'system', None))
    54         self.restore_connection() # proper way to close cnx
    53         cnx.close()
    55         self.assertRaises(ProgrammingError, cnx.user, None)
    54         self.assertRaises(ProgrammingError, cnx.user, None)
    56         self.assertRaises(ProgrammingError, cnx.describe, 1)
    55         self.assertRaises(ProgrammingError, cnx.describe, 1)
    57 
    56 
    58     def test_shared_data_api(self):
    57     def test_shared_data_api(self):
    59         cnx = self.login('anon')
    58         cnx = _repo_connect(self.repo, login='anon', password='anon')
    60         self.assertEqual(cnx.get_shared_data('data'), None)
    59         self.assertEqual(cnx.get_shared_data('data'), None)
    61         cnx.set_shared_data('data', 4)
    60         cnx.set_shared_data('data', 4)
    62         self.assertEqual(cnx.get_shared_data('data'), 4)
    61         self.assertEqual(cnx.get_shared_data('data'), 4)
    63         cnx.get_shared_data('data', pop=True)
    62         cnx.get_shared_data('data', pop=True)
    64         cnx.get_shared_data('whatever', pop=True)
    63         cnx.get_shared_data('whatever', pop=True)
    65         self.assertEqual(cnx.get_shared_data('data'), None)
    64         self.assertEqual(cnx.get_shared_data('data'), None)
    66         cnx.set_shared_data('data', 4)
    65         cnx.set_shared_data('data', 4)
    67         self.assertEqual(cnx.get_shared_data('data'), 4)
    66         self.assertEqual(cnx.get_shared_data('data'), 4)
    68         self.restore_connection() # proper way to close cnx
    67         cnx.close()
    69         self.assertRaises(ProgrammingError, cnx.check)
    68         self.assertRaises(ProgrammingError, cnx.check)
    70         self.assertRaises(ProgrammingError, cnx.set_shared_data, 'data', 0)
    69         self.assertRaises(ProgrammingError, cnx.set_shared_data, 'data', 0)
    71         self.assertRaises(ProgrammingError, cnx.get_shared_data, 'data')
    70         self.assertRaises(ProgrammingError, cnx.get_shared_data, 'data')
    72 
    71 
    73     def test_web_compatible_request(self):
    72     def test_web_compatible_request(self):
    74         config = cwconfig.CubicWebNoAppConfiguration()
    73         config = cwconfig.CubicWebNoAppConfiguration()
    75         with tempattr(self.cnx.vreg, 'config', config):
    74         cnx = _repo_connect(self.repo, login='admin', password='gingkow')
    76             self.cnx.use_web_compatible_requests('http://perdu.com')
    75         with tempattr(cnx.vreg, 'config', config):
    77             req = self.cnx.request()
    76             cnx.use_web_compatible_requests('http://perdu.com')
       
    77             req = cnx.request()
    78             self.assertEqual(req.base_url(), 'http://perdu.com')
    78             self.assertEqual(req.base_url(), 'http://perdu.com')
    79             self.assertEqual(req.from_controller(), 'view')
    79             self.assertEqual(req.from_controller(), 'view')
    80             self.assertEqual(req.relative_path(), '')
    80             self.assertEqual(req.relative_path(), '')
    81             req.ajax_replace_url('domid') # don't crash
    81             req.ajax_replace_url('domid') # don't crash
    82             req.user.cw_adapt_to('IBreadCrumbs') # don't crash
    82             req.user.cw_adapt_to('IBreadCrumbs') # don't crash