closes #601987
1) sqlutils.restore_from_file have to use its confirm argument when
a command fail, to propose to continue there (this can't be handled
by the caller)
2) source.restore method hence needs to take this confirmation callback
as argument
3) properly fix places where 'drop' was given instead of 'confirm'
"""
:organization: Logilab
:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
from cubicweb import ConnectionError
from cubicweb.dbapi import ProgrammingError
from cubicweb.devtools.apptest import EnvBasedTC
class DBAPITC(EnvBasedTC):
@property
def cnx(self):
return self.login('anon')
def test_public_repo_api(self):
cnx = self.cnx
self.assertEquals(cnx.get_schema(), self.env.repo.schema)
self.assertEquals(cnx.source_defs(), {'system': {'adapter': 'native', 'uri': 'system'}})
self.restore_connection() # proper way to close cnx
self.assertRaises(ProgrammingError, cnx.get_schema)
self.assertRaises(ProgrammingError, cnx.source_defs)
def test_db_api(self):
cnx = self.cnx
self.assertEquals(cnx.rollback(), None)
self.assertEquals(cnx.commit(), None)
self.restore_connection() # proper way to close cnx
#self.assertEquals(cnx.close(), None)
self.assertRaises(ProgrammingError, cnx.rollback)
self.assertRaises(ProgrammingError, cnx.commit)
self.assertRaises(ProgrammingError, cnx.close)
def test_api(self):
cnx = self.cnx
self.assertEquals(cnx.user(None).login, 'anon')
self.assertEquals(cnx.describe(1), (u'CWGroup', u'system', None))
self.restore_connection() # proper way to close cnx
self.assertRaises(ConnectionError, cnx.user, None)
self.assertRaises(ConnectionError, cnx.describe, 1)
def test_session_data_api(self):
cnx = self.cnx
self.assertEquals(cnx.get_session_data('data'), None)
self.assertEquals(cnx.session_data(), {})
cnx.set_session_data('data', 4)
self.assertEquals(cnx.get_session_data('data'), 4)
self.assertEquals(cnx.session_data(), {'data': 4})
cnx.del_session_data('data')
cnx.del_session_data('whatever')
self.assertEquals(cnx.get_session_data('data'), None)
self.assertEquals(cnx.session_data(), {})
cnx.session_data()['data'] = 4
self.assertEquals(cnx.get_session_data('data'), 4)
self.assertEquals(cnx.session_data(), {'data': 4})
def test_shared_data_api(self):
cnx = self.cnx
self.assertEquals(cnx.get_shared_data('data'), None)
cnx.set_shared_data('data', 4)
self.assertEquals(cnx.get_shared_data('data'), 4)
cnx.get_shared_data('data', pop=True)
cnx.get_shared_data('whatever', pop=True)
self.assertEquals(cnx.get_shared_data('data'), None)
cnx.set_shared_data('data', 4)
self.assertEquals(cnx.get_shared_data('data'), 4)
self.restore_connection() # proper way to close cnx
self.assertRaises(ConnectionError, cnx.check)
self.assertRaises(ConnectionError, cnx.set_shared_data, 'data', 0)
self.assertRaises(ConnectionError, cnx.get_shared_data, 'data')
# class DBAPICursorTC(EnvBasedTC):
# @property
# def cursor(self):
# return self.env.cnx.cursor()
# def test_api(self):
# cu = self.cursor
# self.assertEquals(cu.describe(1), (u'CWGroup', u'system', None))
# #cu.close()
# #self.assertRaises(ConnectionError, cu.describe, 1)
if __name__ == '__main__':
from logilab.common.testlib import unittest_main
unittest_main()