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