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 |