173 # XXX test unauthorized attribute |
173 # XXX test unauthorized attribute |
174 finally: |
174 finally: |
175 Personne.fetch_attrs = pfetch_attrs |
175 Personne.fetch_attrs = pfetch_attrs |
176 Societe.fetch_attrs = sfetch_attrs |
176 Societe.fetch_attrs = sfetch_attrs |
177 |
177 |
178 def test_related_rql(self): |
178 def test_related_rql_base(self): |
179 Personne = self.vreg['etypes'].etype_class('Personne') |
179 Personne = self.vreg['etypes'].etype_class('Personne') |
180 Note = self.vreg['etypes'].etype_class('Note') |
180 Note = self.vreg['etypes'].etype_class('Note') |
181 self.failUnless(issubclass(self.vreg['etypes'].etype_class('SubNote'), Note)) |
181 self.failUnless(issubclass(self.vreg['etypes'].etype_class('SubNote'), Note)) |
182 Personne.fetch_attrs, Personne.fetch_order = fetch_config(('nom', 'type')) |
182 Personne.fetch_attrs, Personne.fetch_order = fetch_config(('nom', 'type')) |
183 Note.fetch_attrs, Note.fetch_order = fetch_config(('type',)) |
183 Note.fetch_attrs, Note.fetch_order = fetch_config(('type',)) |
199 'X modification_date AA') |
199 'X modification_date AA') |
200 self.assertEquals(tag.related_rql('tags', 'subject', ('Personne',)), |
200 self.assertEquals(tag.related_rql('tags', 'subject', ('Personne',)), |
201 'Any X,AA,AB ORDERBY AA ASC ' |
201 'Any X,AA,AB ORDERBY AA ASC ' |
202 'WHERE E eid %(x)s, E tags X, X is IN (Personne), X nom AA, ' |
202 'WHERE E eid %(x)s, E tags X, X is IN (Personne), X nom AA, ' |
203 'X modification_date AB') |
203 'X modification_date AB') |
|
204 |
|
205 def test_related_rql_ambigous_cant_use_fetch_order(self): |
|
206 tag = self.vreg['etypes'].etype_class('Tag')(self.request()) |
|
207 for ttype in self.schema['tags'].objects(): |
|
208 self.vreg['etypes'].etype_class(ttype).fetch_attrs = ('modification_date',) |
|
209 self.assertEquals(tag.related_rql('tags', 'subject'), |
|
210 'Any X,AA ORDERBY AA DESC ' |
|
211 'WHERE E eid %(x)s, E tags X, X modification_date AA') |
204 |
212 |
205 def test_unrelated_rql_security_1(self): |
213 def test_unrelated_rql_security_1(self): |
206 user = self.request().user |
214 user = self.request().user |
207 rql = user.unrelated_rql('use_email', 'EmailAddress', 'subject')[0] |
215 rql = user.unrelated_rql('use_email', 'EmailAddress', 'subject')[0] |
208 self.assertEquals(rql, 'Any O,AA,AB,AC ORDERBY AC DESC ' |
216 self.assertEquals(rql, 'Any O,AA,AB,AC ORDERBY AC DESC ' |