80 self._set_attr_perms(attreid) |
80 self._set_attr_perms(attreid) |
81 concerne2_rdef_eid = self.execute( |
81 concerne2_rdef_eid = self.execute( |
82 'INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' |
82 'INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' |
83 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
83 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
84 self._set_perms(concerne2_rdef_eid) |
84 self._set_perms(concerne2_rdef_eid) |
85 self.assertFalse('name' in schema['Societe2'].subject_relations()) |
85 self.assertNotIn('name', schema['Societe2'].subject_relations()) |
86 self.assertFalse('concerne2' in schema['Societe2'].subject_relations()) |
86 self.assertNotIn('concerne2', schema['Societe2'].subject_relations()) |
87 self.assertFalse(self.index_exists('Societe2', 'name')) |
87 self.assertFalse(self.index_exists('Societe2', 'name')) |
88 self.commit() |
88 self.commit() |
89 self.assertIn('name', schema['Societe2'].subject_relations()) |
89 self.assertIn('name', schema['Societe2'].subject_relations()) |
90 self.assertIn('concerne2', schema['Societe2'].subject_relations()) |
90 self.assertIn('concerne2', schema['Societe2'].subject_relations()) |
91 self.assertTrue(self.index_exists('Societe2', 'name')) |
91 self.assertTrue(self.index_exists('Societe2', 'name')) |
102 self._set_perms(rdefeid) |
102 self._set_perms(rdefeid) |
103 self.commit() |
103 self.commit() |
104 self.execute('DELETE CWRelation X WHERE X eid %(x)s', {'x': concerne2_rdef_eid}) |
104 self.execute('DELETE CWRelation X WHERE X eid %(x)s', {'x': concerne2_rdef_eid}) |
105 self.commit() |
105 self.commit() |
106 self.assertIn('concerne2', schema['CWUser'].subject_relations()) |
106 self.assertIn('concerne2', schema['CWUser'].subject_relations()) |
107 self.assertFalse('concerne2' in schema['Societe2'].subject_relations()) |
107 self.assertNotIn('concerne2', schema['Societe2'].subject_relations()) |
108 self.assertFalse(self.execute('Any X WHERE X concerne2 Y')) |
108 self.assertFalse(self.execute('Any X WHERE X concerne2 Y')) |
109 # schema should be cleaned on delete (after commit) |
109 # schema should be cleaned on delete (after commit) |
110 self.execute('DELETE CWEType X WHERE X name "Societe2"') |
110 self.execute('DELETE CWEType X WHERE X name "Societe2"') |
111 self.execute('DELETE CWRType X WHERE X name "concerne2"') |
111 self.execute('DELETE CWRType X WHERE X name "concerne2"') |
112 self.assertTrue(self.index_exists('Societe2', 'name')) |
112 self.assertTrue(self.index_exists('Societe2', 'name')) |
114 self.assertTrue(schema.has_relation('concerne2')) |
114 self.assertTrue(schema.has_relation('concerne2')) |
115 self.commit() |
115 self.commit() |
116 self.assertFalse(self.index_exists('Societe2', 'name')) |
116 self.assertFalse(self.index_exists('Societe2', 'name')) |
117 self.assertFalse(schema.has_entity('Societe2')) |
117 self.assertFalse(schema.has_entity('Societe2')) |
118 self.assertFalse(schema.has_entity('concerne2')) |
118 self.assertFalse(schema.has_entity('concerne2')) |
119 self.assertFalse('concerne2' in schema['CWUser'].subject_relations()) |
119 self.assertNotIn('concerne2', schema['CWUser'].subject_relations()) |
120 |
120 |
121 def test_metartype_with_nordefs(self): |
121 def test_metartype_with_nordefs(self): |
122 META_RTYPES.add('custom_meta') |
122 META_RTYPES.add('custom_meta') |
123 self.execute('INSERT CWRType X: X name "custom_meta", X description "", ' |
123 self.execute('INSERT CWRType X: X name "custom_meta", X description "", ' |
124 'X final FALSE, X symmetric FALSE') |
124 'X final FALSE, X symmetric FALSE') |
150 is_etypes = [etype for etype, in self.execute('Any ETN WHERE X eid %s, X is ET, ET name ETN' % seid)] |
150 is_etypes = [etype for etype, in self.execute('Any ETN WHERE X eid %s, X is ET, ET name ETN' % seid)] |
151 self.assertEqual(is_etypes, ['Transition']) |
151 self.assertEqual(is_etypes, ['Transition']) |
152 instanceof_etypes = [etype for etype, in self.execute('Any ETN WHERE X eid %s, X is_instance_of ET, ET name ETN' % seid)] |
152 instanceof_etypes = [etype for etype, in self.execute('Any ETN WHERE X eid %s, X is_instance_of ET, ET name ETN' % seid)] |
153 self.assertEqual(sorted(instanceof_etypes), ['BaseTransition', 'Transition']) |
153 self.assertEqual(sorted(instanceof_etypes), ['BaseTransition', 'Transition']) |
154 snames = [name for name, in self.execute('Any N WHERE S is BaseTransition, S name N')] |
154 snames = [name for name, in self.execute('Any N WHERE S is BaseTransition, S name N')] |
155 self.assertFalse('subdiv' in snames) |
155 self.assertNotIn('subdiv', snames) |
156 snames = [name for name, in self.execute('Any N WHERE S is_instance_of BaseTransition, S name N')] |
156 snames = [name for name, in self.execute('Any N WHERE S is_instance_of BaseTransition, S name N')] |
157 self.assertIn('subdiv', snames) |
157 self.assertIn('subdiv', snames) |
158 |
158 |
159 |
159 |
160 def test_perms_synchronization_1(self): |
160 def test_perms_synchronization_1(self): |