573 self.assertEqual(self.composites[etype], |
573 self.assertEqual(self.composites[etype], |
574 sorted([(r.rtype.type, r.subject.type, r.object.type, role) |
574 sorted([(r.rtype.type, r.subject.type, r.object.type, role) |
575 for r, role in schema[etype].composite_rdef_roles])) |
575 for r, role in schema[etype].composite_rdef_roles])) |
576 |
576 |
577 |
577 |
|
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 |
578 if __name__ == '__main__': |
604 if __name__ == '__main__': |
579 unittest_main() |
605 unittest_main() |