cubicweb/test/unittest_schema.py
changeset 11852 dfcc3f74b3c8
parent 11775 39cf9e55ada8
child 11899 bf6106b91633
equal deleted inserted replaced
11851:002007272a76 11852:dfcc3f74b3c8
   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()