test/unittest_dbapi.py
author Florent <florent@secondweb.fr>
Tue, 28 Apr 2009 13:28:37 +0200
branchtls-sprint
changeset 1520 b097057e629d
parent 1398 5fe84a5f7035
child 1977 606923dff11b
permissions -rw-r--r--
provide an option to substitute the base-url (left-most part) subdomain by the one of the current http query to easy multiple subdomains website management

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()