239 def test_fulltext_container(self): |
239 def test_fulltext_container(self): |
240 schema = loader.load(config) |
240 schema = loader.load(config) |
241 self.failUnless('has_text' in schema['CWUser'].subject_relations()) |
241 self.failUnless('has_text' in schema['CWUser'].subject_relations()) |
242 self.failIf('has_text' in schema['EmailAddress'].subject_relations()) |
242 self.failIf('has_text' in schema['EmailAddress'].subject_relations()) |
243 |
243 |
|
244 def test_permission_settings(self): |
|
245 schema = loader.load(config) |
|
246 aschema = schema['TrInfo'].rdef('comment') |
|
247 self.assertEquals(aschema.get_groups('read'), |
|
248 set(('managers', 'users', 'guests'))) |
|
249 self.assertEquals(aschema.get_rqlexprs('read'), |
|
250 ()) |
|
251 self.assertEquals(aschema.get_groups('update'), |
|
252 set(('managers',))) |
|
253 self.assertEquals([x.expression for x in aschema.get_rqlexprs('update')], |
|
254 ['U has_update_permission X']) |
244 |
255 |
245 class BadSchemaRQLExprTC(TestCase): |
256 class BadSchemaRQLExprTC(TestCase): |
246 def setUp(self): |
257 def setUp(self): |
247 self.loader = CubicWebSchemaLoader() |
258 self.loader = CubicWebSchemaLoader() |
248 self.loader.defined = {} |
259 self.loader.defined = {} |
255 ex = self.assertRaises(BadSchemaDefinition, |
266 ex = self.assertRaises(BadSchemaDefinition, |
256 self.loader._build_schema, 'toto', False) |
267 self.loader._build_schema, 'toto', False) |
257 self.assertEquals(str(ex), msg) |
268 self.assertEquals(str(ex), msg) |
258 |
269 |
259 def test_rrqlexpr_on_etype(self): |
270 def test_rrqlexpr_on_etype(self): |
260 self._test('rrqlexpr_on_eetype.py', "can't use RRQLExpression on ToTo, use an ERQLExpression") |
271 self._test('rrqlexpr_on_eetype.py', |
|
272 "can't use RRQLExpression on ToTo, use an ERQLExpression") |
261 |
273 |
262 def test_erqlexpr_on_rtype(self): |
274 def test_erqlexpr_on_rtype(self): |
263 self._test('erqlexpr_on_ertype.py', "can't use ERQLExpression on relation ToTo toto TuTu, use a RRQLExpression") |
275 self._test('erqlexpr_on_ertype.py', |
|
276 "can't use ERQLExpression on relation ToTo toto TuTu, use a RRQLExpression") |
264 |
277 |
265 def test_rqlexpr_on_rtype_read(self): |
278 def test_rqlexpr_on_rtype_read(self): |
266 self._test('rqlexpr_on_ertype_read.py', "can't use rql expression for read permission of relation ToTo toto TuTu") |
279 self._test('rqlexpr_on_ertype_read.py', |
|
280 "can't use rql expression for read permission of relation ToTo toto TuTu") |
267 |
281 |
268 def test_rrqlexpr_on_attr(self): |
282 def test_rrqlexpr_on_attr(self): |
269 self._test('rrqlexpr_on_attr.py', "can't use RRQLExpression on attribute ToTo.attr[String], use an ERQLExpression") |
283 self._test('rrqlexpr_on_attr.py', |
|
284 "can't use RRQLExpression on attribute ToTo.attr[String], use an ERQLExpression") |
270 |
285 |
271 |
286 |
272 class NormalizeExpressionTC(TestCase): |
287 class NormalizeExpressionTC(TestCase): |
273 |
288 |
274 def test(self): |
289 def test(self): |
275 self.assertEquals(normalize_expression('X bla Y,Y blur Z , Z zigoulou X '), |
290 self.assertEquals(normalize_expression('X bla Y,Y blur Z , Z zigoulou X '), |
276 'X bla Y, Y blur Z, Z zigoulou X') |
291 'X bla Y, Y blur Z, Z zigoulou X') |
277 |
292 |
278 class RQLExpressionTC(TestCase): |
293 class RQLExpressionTC(TestCase): |
279 def test_comparison(self): |
294 def test_comparison(self): |
280 self.assertEquals(ERQLExpression('X is CWUser', 'X', 0), ERQLExpression('X is CWUser', 'X', 0)) |
295 self.assertEquals(ERQLExpression('X is CWUser', 'X', 0), |
281 self.assertNotEquals(ERQLExpression('X is CWUser', 'X', 0), ERQLExpression('X is CWGroup', 'X', 0)) |
296 ERQLExpression('X is CWUser', 'X', 0)) |
|
297 self.assertNotEquals(ERQLExpression('X is CWUser', 'X', 0), |
|
298 ERQLExpression('X is CWGroup', 'X', 0)) |
282 |
299 |
283 class GuessRrqlExprMainVarsTC(TestCase): |
300 class GuessRrqlExprMainVarsTC(TestCase): |
284 def test_exists(self): |
301 def test_exists(self): |
285 mainvars = guess_rrqlexpr_mainvars(normalize_expression('NOT EXISTS(O team_competition C, C level < 3)')) |
302 mainvars = guess_rrqlexpr_mainvars(normalize_expression('NOT EXISTS(O team_competition C, C level < 3)')) |
286 self.assertEquals(mainvars, 'O') |
303 self.assertEquals(mainvars, 'O') |