[test] test/demonstrate relation permissions overriding stable
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Tue, 17 Jan 2012 14:04:56 +0100
branchstable
changeset 8167 41ec579e27c4
parent 8166 20809488fe56
child 8168 707466abe9cc
[test] test/demonstrate relation permissions overriding
test/data_schemareader/schema.py
test/unittest_schema.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data_schemareader/schema.py	Tue Jan 17 14:04:56 2012 +0100
@@ -0,0 +1,11 @@
+from cubicweb.schemas.base import in_group, CWSourceSchemaConfig
+# copy __permissions__ to avoid modifying a shared dictionary
+in_group.__permissions__ = in_group.__permissions__.copy()
+in_group.__permissions__['read'] = ('managers',)
+
+cw_for_source = CWSourceSchemaConfig.get_relation('cw_for_source')
+cw_for_source.__permissions__ = {'read': ('managers', 'users'),
+                                 'add': ('managers',),
+                                 'delete': ('managers',)}
+
+
--- a/test/unittest_schema.py	Tue Jan 17 11:49:23 2012 +0100
+++ b/test/unittest_schema.py	Tue Jan 17 14:04:56 2012 +0100
@@ -265,6 +265,20 @@
         schema = CubicWebSchema('Test Schema')
         schema.add_entity_type(EntityType('NaN'))
 
+    def test_relation_perm_overriding(self):
+        loader = CubicWebSchemaLoader()
+        config = TestConfiguration('data', apphome=join(dirname(__file__), 'data_schemareader'))
+        config.bootstrap_cubes()
+        schema = loader.load(config)
+        self.assertEqual(schema['in_group'].rdefs.values()[0].permissions,
+                         {'read': ('managers',),
+                          'add': ('managers',),
+                          'delete': ('managers',)})
+        self.assertEqual(schema['cw_for_source'].rdefs.values()[0].permissions,
+                         {'read': ('managers', 'users'),
+                          'add': ('managers',),
+                          'delete': ('managers',)})
+
 
 class BadSchemaTC(TestCase):
     def setUp(self):