454 def test_comparison(self): |
454 def test_comparison(self): |
455 self.assertEqual(ERQLExpression('X is CWUser', 'X', 0), |
455 self.assertEqual(ERQLExpression('X is CWUser', 'X', 0), |
456 ERQLExpression('X is CWUser', 'X', 0)) |
456 ERQLExpression('X is CWUser', 'X', 0)) |
457 self.assertNotEqual(ERQLExpression('X is CWUser', 'X', 0), |
457 self.assertNotEqual(ERQLExpression('X is CWUser', 'X', 0), |
458 ERQLExpression('X is CWGroup', 'X', 0)) |
458 ERQLExpression('X is CWGroup', 'X', 0)) |
|
459 |
|
460 def test_has_update_permission(self): |
|
461 expr = ERQLExpression('P use_email X, U has_update_permission P') |
|
462 rql, found, keyarg = expr.transform_has_permission() |
|
463 self.assertEqual(rql, 'Any X,P WHERE P use_email X, X eid %(x)s') |
|
464 self.assertEqual(found, [(u'update', 1)]) |
|
465 self.assertEqual(keyarg, None) |
|
466 |
|
467 def test_expression(self): |
|
468 expr = ERQLExpression('U use_email X') |
|
469 rql, found, keyarg = expr.transform_has_permission() |
|
470 self.assertEqual(rql, 'Any X WHERE EXISTS(U use_email X, X eid %(x)s, U eid %(u)s)') |
|
471 self.assertEqual(found, None) |
|
472 self.assertEqual(keyarg, None) |
459 |
473 |
460 |
474 |
461 class GuessRrqlExprMainVarsTC(TestCase): |
475 class GuessRrqlExprMainVarsTC(TestCase): |
462 def test_exists(self): |
476 def test_exists(self): |
463 mainvars = guess_rrqlexpr_mainvars(normalize_expression( |
477 mainvars = guess_rrqlexpr_mainvars(normalize_expression( |
573 self.assertEqual(self.composites[etype], |
587 self.assertEqual(self.composites[etype], |
574 sorted([(r.rtype.type, r.subject.type, r.object.type, role) |
588 sorted([(r.rtype.type, r.subject.type, r.object.type, role) |
575 for r, role in schema[etype].composite_rdef_roles])) |
589 for r, role in schema[etype].composite_rdef_roles])) |
576 |
590 |
577 |
591 |
578 class CWShemaTC(CubicWebTC): |
|
579 |
|
580 def test_transform_has_permission_match(self): |
|
581 with self.admin_access.repo_cnx() as cnx: |
|
582 eschema = cnx.vreg.schema['EmailAddress'] |
|
583 rql_exprs = eschema.get_rqlexprs('update') |
|
584 self.assertEqual(len(rql_exprs), 1) |
|
585 self.assertEqual(rql_exprs[0].expression, |
|
586 'P use_email X, U has_update_permission P') |
|
587 rql, found, keyarg = rql_exprs[0].transform_has_permission() |
|
588 self.assertEqual(rql, 'Any X,P WHERE P use_email X, X eid %(x)s') |
|
589 self.assertEqual(found, [(u'update', 1)]) |
|
590 self.assertEqual(keyarg, None) |
|
591 |
|
592 def test_transform_has_permission_no_match(self): |
|
593 with self.admin_access.repo_cnx() as cnx: |
|
594 eschema = cnx.vreg.schema['EmailAddress'] |
|
595 rql_exprs = eschema.get_rqlexprs('read') |
|
596 self.assertEqual(len(rql_exprs), 1) |
|
597 self.assertEqual(rql_exprs[0].expression, |
|
598 'U use_email X') |
|
599 rql, found, keyarg = rql_exprs[0].transform_has_permission() |
|
600 self.assertEqual(rql, 'Any X WHERE EXISTS(U use_email X, X eid %(x)s, U eid %(u)s)') |
|
601 self.assertEqual(found, None) |
|
602 self.assertEqual(keyarg, None) |
|
603 |
|
604 |
|
605 if __name__ == '__main__': |
592 if __name__ == '__main__': |
606 unittest_main() |
593 unittest_main() |