author | Julien Cristau <julien.cristau@logilab.fr> |
Mon, 09 Nov 2015 16:21:29 +0100 | |
changeset 10879 | 3193d9ede8dd |
parent 10707 | 3f4f190f8e35 |
child 10907 | 9ae707db5265 |
permissions | -rw-r--r-- |
0 | 1 |
# -*- coding: utf-8 -*- |
9731
027bfc467a46
[cache] fix a cache issue with an entity created without relation cache prefill
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9432
diff
changeset
|
2 |
# copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
3 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
4 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
5 |
# This file is part of CubicWeb. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
6 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
7 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
8 |
# terms of the GNU Lesser General Public License as published by the Free |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
9 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
10 |
# any later version. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
11 |
# |
5424
8ecbcbff9777
replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5421
diff
changeset
|
12 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
13 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
14 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
15 |
# details. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
16 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
17 |
# You should have received a copy of the GNU Lesser General Public License along |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4835
diff
changeset
|
18 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
6173 | 19 |
"""unit tests for cubicweb.web.views.entities module""" |
0 | 20 |
|
1016
26387b836099
use datetime instead of mx.DateTime
sylvain.thenault@logilab.fr
parents:
821
diff
changeset
|
21 |
from datetime import datetime |
8161
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
22 |
|
10707
3f4f190f8e35
[py3k] unicode → six.text_type
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10704
diff
changeset
|
23 |
from six import text_type |
3f4f190f8e35
[py3k] unicode → six.text_type
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10704
diff
changeset
|
24 |
|
7154
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
25 |
from logilab.common import tempattr |
8161
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
26 |
from logilab.common.decorators import clear_cache |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
27 |
|
9877
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
28 |
from cubicweb import Binary |
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2650
diff
changeset
|
29 |
from cubicweb.devtools.testlib import CubicWebTC |
4023
eae23c40627a
drop common subpackage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4015
diff
changeset
|
30 |
from cubicweb.mttransforms import HAS_TAL |
9319
a68b8f423a8b
[test] test can_use_rest_path directly
Julien Cristau <julien.cristau@logilab.fr>
parents:
9273
diff
changeset
|
31 |
from cubicweb.entity import can_use_rest_path |
3241
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
32 |
from cubicweb.entities import fetch_config |
6685
eeedb3575d25
[uilib] soup2xhtml uses now lxml.html.Cleaner
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
6427
diff
changeset
|
33 |
from cubicweb.uilib import soup2xhtml |
9877
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
34 |
from cubicweb.schema import RRQLExpression |
0 | 35 |
|
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2650
diff
changeset
|
36 |
class EntityTC(CubicWebTC): |
1640 | 37 |
|
7154
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
38 |
def setUp(self): |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
39 |
super(EntityTC, self).setUp() |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
40 |
self.backup_dict = {} |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
41 |
for cls in self.vreg['etypes'].iter_classes(): |
7827
9bbf83f68bcc
[entity] upgrade fetch_[unrelated_]order to benefit from changes introduced in 3.14 (closes #1942758)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7798
diff
changeset
|
42 |
self.backup_dict[cls] = (cls.fetch_attrs, cls.cw_fetch_order) |
7154
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
43 |
|
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
44 |
def tearDown(self): |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
45 |
super(EntityTC, self).tearDown() |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
46 |
for cls in self.vreg['etypes'].iter_classes(): |
7827
9bbf83f68bcc
[entity] upgrade fetch_[unrelated_]order to benefit from changes introduced in 3.14 (closes #1942758)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7798
diff
changeset
|
47 |
cls.fetch_attrs, cls.cw_fetch_order = self.backup_dict[cls] |
7154
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
48 |
|
9731
027bfc467a46
[cache] fix a cache issue with an entity created without relation cache prefill
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9432
diff
changeset
|
49 |
def test_no_prefill_related_cache_bug(self): |
9877
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
50 |
with self.admin_access.repo_cnx() as cnx: |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
51 |
usine = cnx.create_entity('Usine', lieu=u'Montbeliard') |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
52 |
produit = cnx.create_entity('Produit') |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
53 |
# usine was prefilled in glob_add_entity |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
54 |
# let's simulate produit creation without prefill |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
55 |
produit._cw_related_cache.clear() |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
56 |
# use add_relations |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
57 |
cnx.add_relations([('fabrique_par', [(produit.eid, usine.eid)])]) |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
58 |
self.assertEqual(1, len(usine.reverse_fabrique_par)) |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
59 |
self.assertEqual(1, len(produit.fabrique_par)) |
9731
027bfc467a46
[cache] fix a cache issue with an entity created without relation cache prefill
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9432
diff
changeset
|
60 |
|
0 | 61 |
def test_boolean_value(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
62 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
63 |
e = self.vreg['etypes'].etype_class('CWUser')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
64 |
self.assertTrue(e) |
0 | 65 |
|
66 |
def test_yams_inheritance(self): |
|
748 | 67 |
from entities import Note |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
68 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
69 |
e = self.vreg['etypes'].etype_class('SubNote')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
70 |
self.assertIsInstance(e, Note) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
71 |
e2 = self.vreg['etypes'].etype_class('SubNote')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
72 |
self.assertIs(e.__class__, e2.__class__) |
0 | 73 |
|
74 |
def test_has_eid(self): |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
75 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
76 |
e = self.vreg['etypes'].etype_class('CWUser')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
77 |
self.assertEqual(e.eid, None) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
78 |
self.assertEqual(e.has_eid(), False) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
79 |
e.eid = 'X' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
80 |
self.assertEqual(e.has_eid(), False) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
81 |
e.eid = 0 |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
82 |
self.assertEqual(e.has_eid(), True) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
83 |
e.eid = 2 |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
84 |
self.assertEqual(e.has_eid(), True) |
1640 | 85 |
|
0 | 86 |
def test_copy(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
87 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
88 |
req.create_entity('Tag', name=u'x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
89 |
p = req.create_entity('Personne', nom=u'toto') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
90 |
oe = req.create_entity('Note', type=u'x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
91 |
req.execute('SET T ecrit_par U WHERE T eid %(t)s, U eid %(u)s', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
92 |
{'t': oe.eid, 'u': p.eid}) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
93 |
req.execute('SET TAG tags X WHERE X eid %(x)s', {'x': oe.eid}) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
94 |
e = req.create_entity('Note', type=u'z') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
95 |
e.copy_relations(oe.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
96 |
self.assertEqual(len(e.ecrit_par), 1) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
97 |
self.assertEqual(e.ecrit_par[0].eid, p.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
98 |
self.assertEqual(len(e.reverse_tags), 1) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
99 |
# check meta-relations are not copied, set on commit |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
100 |
self.assertEqual(len(e.created_by), 0) |
1640 | 101 |
|
0 | 102 |
def test_copy_with_nonmeta_composite_inlined(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
103 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
104 |
p = req.create_entity('Personne', nom=u'toto') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
105 |
oe = req.create_entity('Note', type=u'x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
106 |
self.schema['ecrit_par'].rdef('Note', 'Personne').composite = 'subject' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
107 |
req.execute('SET T ecrit_par U WHERE T eid %(t)s, U eid %(u)s', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
108 |
{'t': oe.eid, 'u': p.eid}) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
109 |
e = req.create_entity('Note', type=u'z') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
110 |
e.copy_relations(oe.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
111 |
self.assertFalse(e.ecrit_par) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
112 |
self.assertTrue(oe.ecrit_par) |
1640 | 113 |
|
0 | 114 |
def test_copy_with_composite(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
115 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
116 |
adeleid = req.execute('INSERT EmailAddress X: X address "toto@logilab.org", U use_email X WHERE U login "admin"')[0][0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
117 |
e = req.execute('Any X WHERE X eid %(x)s', {'x': req.user.eid}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
118 |
self.assertEqual(e.use_email[0].address, "toto@logilab.org") |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
119 |
self.assertEqual(e.use_email[0].eid, adeleid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
120 |
usereid = req.execute('INSERT CWUser X: X login "toto", X upassword "toto", X in_group G ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
121 |
'WHERE G name "users"')[0][0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
122 |
e = req.execute('Any X WHERE X eid %(x)s', {'x': usereid}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
123 |
e.copy_relations(req.user.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
124 |
self.assertFalse(e.use_email) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
125 |
self.assertFalse(e.primary_email) |
1640 | 126 |
|
0 | 127 |
def test_copy_with_non_initial_state(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
128 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
129 |
user = req.execute('INSERT CWUser X: X login "toto", X upassword %(pwd)s, X in_group G WHERE G name "users"', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
130 |
{'pwd': 'toto'}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
131 |
req.cnx.commit() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
132 |
user.cw_adapt_to('IWorkflowable').fire_transition('deactivate') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
133 |
req.cnx.commit() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
134 |
eid2 = req.execute('INSERT CWUser X: X login "tutu", X upassword %(pwd)s', {'pwd': 'toto'})[0][0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
135 |
e = req.execute('Any X WHERE X eid %(x)s', {'x': eid2}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
136 |
e.copy_relations(user.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
137 |
req.cnx.commit() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
138 |
e.cw_clear_relation_cache('in_state', 'subject') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
139 |
self.assertEqual(e.cw_adapt_to('IWorkflowable').state, 'activated') |
0 | 140 |
|
141 |
def test_related_cache_both(self): |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
142 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
143 |
user = req.execute('Any X WHERE X eid %(x)s', {'x':req.user.eid}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
144 |
adeleid = req.execute('INSERT EmailAddress X: X address "toto@logilab.org", U use_email X WHERE U login "admin"')[0][0] |
10354
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
145 |
self.assertEqual({}, user._cw_related_cache) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
146 |
req.cnx.commit() |
10354
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
147 |
self.assertEqual(['primary_email_subject', 'use_email_subject', 'wf_info_for_object'], |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
148 |
sorted(user._cw_related_cache)) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
149 |
email = user.primary_email[0] |
10354
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
150 |
self.assertEqual(u'toto@logilab.org', email.address) |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
151 |
self.assertEqual(['created_by_subject', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
152 |
'cw_source_subject', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
153 |
'is_instance_of_subject', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
154 |
'is_subject', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
155 |
'owned_by_subject', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
156 |
'prefered_form_object', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
157 |
'prefered_form_subject', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
158 |
'primary_email_object', |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
159 |
'use_email_object'], |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
160 |
sorted(email._cw_related_cache)) |
635cfac73d28
[repoapi] fold ClientConnection into Connection
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
10136
diff
changeset
|
161 |
self.assertEqual('admin', email._cw_related_cache['primary_email_object'][1][0].login) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
162 |
groups = user.in_group |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
163 |
for group in groups: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
164 |
self.assertNotIn('in_group_subject', group._cw_related_cache) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
165 |
user.cw_clear_all_caches() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
166 |
user.related('in_group', entities=True) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
167 |
self.assertIn('in_group_subject', user._cw_related_cache) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
168 |
user.cw_clear_all_caches() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
169 |
user.related('in_group', targettypes=('CWGroup',), entities=True) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
170 |
self.assertNotIn('in_group_subject', user._cw_related_cache) |
413
a7366dd3c33c
fix bug in entity.related_rql(): fetch_attr list / fetchorder weren't computed correctly
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
0
diff
changeset
|
171 |
|
0 | 172 |
def test_related_limit(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
173 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
174 |
p = req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
175 |
for tag in u'abcd': |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
176 |
req.create_entity('Tag', name=tag) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
177 |
req.execute('SET X tags Y WHERE X is Tag, Y is Personne') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
178 |
self.assertEqual(len(p.related('tags', 'object', limit=2)), 2) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
179 |
self.assertEqual(len(p.related('tags', 'object')), 4) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
180 |
p.cw_clear_all_caches() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
181 |
self.assertEqual(len(p.related('tags', 'object', entities=True, limit=2)), 2) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
182 |
self.assertEqual(len(p.related('tags', 'object', entities=True)), 4) |
0 | 183 |
|
9293
723e2c586ea3
[entity] Entity.related(): add a targettypes argument (closes #2957313)
Aurelien Campeas
parents:
9283
diff
changeset
|
184 |
def test_related_targettypes(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
185 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
186 |
p = req.create_entity('Personne', nom=u'Loxodonta', prenom=u'Babar') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
187 |
n = req.create_entity('Note', type=u'scratch', ecrit_par=p) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
188 |
t = req.create_entity('Tag', name=u'a tag', tags=(p, n)) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
189 |
req.cnx.commit() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
190 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
191 |
t = req.entity_from_eid(t.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
192 |
self.assertEqual(2, t.related('tags').rowcount) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
193 |
self.assertEqual(1, t.related('tags', targettypes=('Personne',)).rowcount) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
194 |
self.assertEqual(1, t.related('tags', targettypes=('Note',)).rowcount) |
9293
723e2c586ea3
[entity] Entity.related(): add a targettypes argument (closes #2957313)
Aurelien Campeas
parents:
9283
diff
changeset
|
195 |
|
7376
38524ca653e5
[entity] fix cw_instantiate w/ reverse_ relation crash when either multiple entities are given or an eid instead of an entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7308
diff
changeset
|
196 |
def test_cw_instantiate_relation(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
197 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
198 |
p1 = req.create_entity('Personne', nom=u'di') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
199 |
p2 = req.create_entity('Personne', nom=u'mascio') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
200 |
t = req.create_entity('Tag', name=u't0', tags=[]) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
201 |
self.assertCountEqual(t.tags, []) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
202 |
t = req.create_entity('Tag', name=u't1', tags=p1) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
203 |
self.assertCountEqual(t.tags, [p1]) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
204 |
t = req.create_entity('Tag', name=u't2', tags=p1.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
205 |
self.assertCountEqual(t.tags, [p1]) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
206 |
t = req.create_entity('Tag', name=u't3', tags=[p1, p2.eid]) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
207 |
self.assertCountEqual(t.tags, [p1, p2]) |
7376
38524ca653e5
[entity] fix cw_instantiate w/ reverse_ relation crash when either multiple entities are given or an eid instead of an entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7308
diff
changeset
|
208 |
|
38524ca653e5
[entity] fix cw_instantiate w/ reverse_ relation crash when either multiple entities are given or an eid instead of an entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7308
diff
changeset
|
209 |
def test_cw_instantiate_reverse_relation(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
210 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
211 |
t1 = req.create_entity('Tag', name=u't1') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
212 |
t2 = req.create_entity('Tag', name=u't2') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
213 |
p = req.create_entity('Personne', nom=u'di mascio', reverse_tags=t1) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
214 |
self.assertCountEqual(p.reverse_tags, [t1]) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
215 |
p = req.create_entity('Personne', nom=u'di mascio', reverse_tags=t1.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
216 |
self.assertCountEqual(p.reverse_tags, [t1]) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
217 |
p = req.create_entity('Personne', nom=u'di mascio', reverse_tags=[t1, t2.eid]) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
218 |
self.assertCountEqual(p.reverse_tags, [t1, t2]) |
1640 | 219 |
|
0 | 220 |
def test_fetch_rql(self): |
2650
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2635
diff
changeset
|
221 |
Personne = self.vreg['etypes'].etype_class('Personne') |
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2635
diff
changeset
|
222 |
Societe = self.vreg['etypes'].etype_class('Societe') |
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2635
diff
changeset
|
223 |
Note = self.vreg['etypes'].etype_class('Note') |
0 | 224 |
peschema = Personne.e_schema |
225 |
seschema = Societe.e_schema |
|
7154
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
226 |
torestore = [] |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
227 |
for rdef, card in [(peschema.subjrels['travaille'].rdef(peschema, seschema), '1*'), |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
228 |
(peschema.subjrels['connait'].rdef(peschema, peschema), '11'), |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
229 |
(peschema.subjrels['evaluee'].rdef(peschema, Note.e_schema), '1*'), |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
230 |
(seschema.subjrels['evaluee'].rdef(seschema, Note.e_schema), '1*')]: |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
231 |
cm = tempattr(rdef, 'cardinality', card) |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
232 |
cm.__enter__() |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
233 |
torestore.append(cm) |
0 | 234 |
try: |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
235 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
236 |
user = req.user |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
237 |
# testing basic fetch_attrs attribute |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
238 |
self.assertEqual(Personne.fetch_rql(user), |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
239 |
'Any X,AA,AB,AC ORDERBY AB ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
240 |
'WHERE X is_instance_of Personne, X modification_date AA, X nom AB, X prenom AC') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
241 |
# testing unknown attributes |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
242 |
Personne.fetch_attrs = ('bloug', 'beep') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
243 |
self.assertEqual(Personne.fetch_rql(user), 'Any X WHERE X is_instance_of Personne') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
244 |
# testing one non final relation |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
245 |
Personne.fetch_attrs = ('nom', 'prenom', 'travaille') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
246 |
self.assertEqual(Personne.fetch_rql(user), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
247 |
'Any X,AA,AB,AC,AD ORDERBY AA ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
248 |
'WHERE X is_instance_of Personne, X nom AA, X prenom AB, X travaille AC?, AC nom AD') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
249 |
# testing two non final relations |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
250 |
Personne.fetch_attrs = ('nom', 'prenom', 'travaille', 'evaluee') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
251 |
self.assertEqual(Personne.fetch_rql(user), |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
252 |
'Any X,AA,AB,AC,AD,AE ORDERBY AB ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
253 |
'WHERE X is_instance_of Personne, X evaluee AA?, X nom AB, X prenom AC, X travaille AD?, ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
254 |
'AD nom AE') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
255 |
# testing one non final relation with recursion |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
256 |
Personne.fetch_attrs = ('nom', 'prenom', 'travaille') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
257 |
Societe.fetch_attrs = ('nom', 'evaluee') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
258 |
self.assertEqual(Personne.fetch_rql(user), |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
259 |
'Any X,AA,AB,AC,AD,AE,AF ORDERBY AA,AE DESC ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
260 |
'WHERE X is_instance_of Personne, X nom AA, X prenom AB, X travaille AC?, ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
261 |
'AC evaluee AD?, AD modification_date AE, AC nom AF') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
262 |
# testing symmetric relation |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
263 |
Personne.fetch_attrs = ('nom', 'connait') |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
264 |
self.assertEqual(Personne.fetch_rql(user), 'Any X,AA,AB ORDERBY AB ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
265 |
'WHERE X is_instance_of Personne, X connait AA?, X nom AB') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
266 |
# testing optional relation |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
267 |
peschema.subjrels['travaille'].rdef(peschema, seschema).cardinality = '?*' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
268 |
Personne.fetch_attrs = ('nom', 'prenom', 'travaille') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
269 |
Societe.fetch_attrs = ('nom',) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
270 |
self.assertEqual(Personne.fetch_rql(user), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
271 |
'Any X,AA,AB,AC,AD ORDERBY AA WHERE X is_instance_of Personne, X nom AA, X prenom AB, X travaille AC?, AC nom AD') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
272 |
# testing relation with cardinality > 1 |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
273 |
peschema.subjrels['travaille'].rdef(peschema, seschema).cardinality = '**' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
274 |
self.assertEqual(Personne.fetch_rql(user), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
275 |
'Any X,AA,AB ORDERBY AA WHERE X is_instance_of Personne, X nom AA, X prenom AB') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
276 |
# XXX test unauthorized attribute |
0 | 277 |
finally: |
7154
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
278 |
# fetch_attrs restored by generic tearDown |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
279 |
for cm in torestore: |
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
280 |
cm.__exit__(None, None, None) |
0 | 281 |
|
4630
528dee042927
fix #694445: related entity generates weird RQL which in turn generates weird SQL which fails on SQL Server
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4467
diff
changeset
|
282 |
def test_related_rql_base(self): |
2650
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2635
diff
changeset
|
283 |
Personne = self.vreg['etypes'].etype_class('Personne') |
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2635
diff
changeset
|
284 |
Note = self.vreg['etypes'].etype_class('Note') |
4691
ae468fae9965
[test] fix test inter-dependancies pb. Pytest ok in each individual test dir, though not yet for whole cubicweb, but for different reasons
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4681
diff
changeset
|
285 |
SubNote = self.vreg['etypes'].etype_class('SubNote') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7554
diff
changeset
|
286 |
self.assertTrue(issubclass(self.vreg['etypes'].etype_class('SubNote'), Note)) |
7827
9bbf83f68bcc
[entity] upgrade fetch_[unrelated_]order to benefit from changes introduced in 3.14 (closes #1942758)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7798
diff
changeset
|
287 |
Personne.fetch_attrs, Personne.cw_fetch_order = fetch_config(('nom', 'type')) |
9bbf83f68bcc
[entity] upgrade fetch_[unrelated_]order to benefit from changes introduced in 3.14 (closes #1942758)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7798
diff
changeset
|
288 |
Note.fetch_attrs, Note.cw_fetch_order = fetch_config(('type',)) |
9bbf83f68bcc
[entity] upgrade fetch_[unrelated_]order to benefit from changes introduced in 3.14 (closes #1942758)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7798
diff
changeset
|
289 |
SubNote.fetch_attrs, SubNote.cw_fetch_order = fetch_config(('type',)) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
290 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
291 |
p = req.create_entity('Personne', nom=u'pouet') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
292 |
self.assertEqual(p.cw_related_rql('evaluee'), |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
293 |
'Any X,AA,AB ORDERBY AB WHERE E eid %(x)s, E evaluee X, ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
294 |
'X modification_date AA, X type AB') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
295 |
n = req.create_entity('Note') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
296 |
self.assertEqual(n.cw_related_rql('evaluee', role='object', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
297 |
targettypes=('Societe', 'Personne')), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
298 |
"Any X,AA ORDERBY AB DESC WHERE E eid %(x)s, X evaluee E, " |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
299 |
"X is IN(Personne, Societe), X nom AA, " |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
300 |
"X modification_date AB") |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
301 |
Personne.fetch_attrs, Personne.cw_fetch_order = fetch_config(('nom', )) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
302 |
# XXX |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
303 |
self.assertEqual(p.cw_related_rql('evaluee'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
304 |
'Any X,AA ORDERBY AA DESC ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
305 |
'WHERE E eid %(x)s, E evaluee X, X modification_date AA') |
3672
554a588ffaea
[entity] make related_rql honors its targettypes argument
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3670
diff
changeset
|
306 |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
307 |
tag = self.vreg['etypes'].etype_class('Tag')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
308 |
self.assertEqual(tag.cw_related_rql('tags', 'subject'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
309 |
'Any X,AA ORDERBY AA DESC ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
310 |
'WHERE E eid %(x)s, E tags X, X modification_date AA') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
311 |
self.assertEqual(tag.cw_related_rql('tags', 'subject', ('Personne',)), |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
312 |
'Any X,AA,AB ORDERBY AB ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
313 |
'WHERE E eid %(x)s, E tags X, X is Personne, X modification_date AA, ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
314 |
'X nom AB') |
1640 | 315 |
|
7425
7e9d1d6fcba7
[entity fetch_attrs] remove ambiguous relations on different etypes from fetched attrs or it may produce wrong related results; closes #1700896
Florent Cayré <florent.cayre@gmail.com>
parents:
7376
diff
changeset
|
316 |
def test_related_rql_ambiguous_cant_use_fetch_order(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
317 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
318 |
tag = self.vreg['etypes'].etype_class('Tag')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
319 |
for ttype in self.schema['tags'].objects(): |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
320 |
self.vreg['etypes'].etype_class(ttype).fetch_attrs = ('modification_date',) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
321 |
self.assertEqual(tag.cw_related_rql('tags', 'subject'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
322 |
'Any X,AA ORDERBY AA DESC ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
323 |
'WHERE E eid %(x)s, E tags X, X modification_date AA') |
4630
528dee042927
fix #694445: related entity generates weird RQL which in turn generates weird SQL which fails on SQL Server
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4467
diff
changeset
|
324 |
|
7798
8930f7a284dd
[entity fetchattrs] also fetch ambiguous rtypes even if we do not recurse on them (closes #1720823)
Florent Cayré <florent.cayre@gmail.com>
parents:
7794
diff
changeset
|
325 |
def test_related_rql_fetch_ambiguous_rtype(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
326 |
etvreg = self.vreg['etypes'] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
327 |
soc_etype = etvreg.etype_class('Societe') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
328 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
329 |
soc = soc_etype(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
330 |
soc_etype.fetch_attrs = ('fournit',) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
331 |
etvreg.etype_class('Service').fetch_attrs = ('fabrique_par',) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
332 |
etvreg.etype_class('Produit').fetch_attrs = ('fabrique_par',) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
333 |
etvreg.etype_class('Usine').fetch_attrs = ('lieu',) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
334 |
etvreg.etype_class('Personne').fetch_attrs = ('nom',) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
335 |
self.assertEqual(soc.cw_related_rql('fournit', 'subject'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
336 |
'Any X,A WHERE E eid %(x)s, E fournit X, X fabrique_par A') |
7425
7e9d1d6fcba7
[entity fetch_attrs] remove ambiguous relations on different etypes from fetched attrs or it may produce wrong related results; closes #1700896
Florent Cayré <florent.cayre@gmail.com>
parents:
7376
diff
changeset
|
337 |
|
7139
20807d3d7cf6
[rql rewriter] to properly handle 'relation' rql expressions, rql rewriter must support multiple variables (eg S and O) at once to be given as varmap
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6685
diff
changeset
|
338 |
def test_unrelated_rql_security_1_manager(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
339 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
340 |
user = req.user |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
341 |
rql = user.cw_unrelated_rql('use_email', 'EmailAddress', 'subject')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
342 |
self.assertEqual(rql, |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
343 |
'Any O,AA,AB,AC ORDERBY AC DESC ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
344 |
'WHERE NOT A use_email O, S eid %(x)s, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
345 |
'O is_instance_of EmailAddress, O address AA, O alias AB, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
346 |
'O modification_date AC') |
7139
20807d3d7cf6
[rql rewriter] to properly handle 'relation' rql expressions, rql rewriter must support multiple variables (eg S and O) at once to be given as varmap
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6685
diff
changeset
|
347 |
|
20807d3d7cf6
[rql rewriter] to properly handle 'relation' rql expressions, rql rewriter must support multiple variables (eg S and O) at once to be given as varmap
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6685
diff
changeset
|
348 |
def test_unrelated_rql_security_1_user(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
349 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
350 |
self.create_user(req, 'toto') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
351 |
with self.new_access('toto').web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
352 |
user = req.user # XXX |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
353 |
rql = user.cw_unrelated_rql('use_email', 'EmailAddress', 'subject')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
354 |
self.assertEqual(rql, |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
355 |
'Any O,AA,AB,AC ORDERBY AC DESC ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
356 |
'WHERE NOT A use_email O, S eid %(x)s, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
357 |
'O is_instance_of EmailAddress, O address AA, O alias AB, O modification_date AC') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
358 |
user = req.execute('Any X WHERE X login "admin"').get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
359 |
rql = user.cw_unrelated_rql('use_email', 'EmailAddress', 'subject')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
360 |
self.assertEqual(rql, 'Any O,AA,AB,AC ORDERBY AC DESC ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
361 |
'WHERE NOT A use_email O, S eid %(x)s, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
362 |
'O is EmailAddress, O address AA, O alias AB, O modification_date AC, AD eid %(AE)s, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
363 |
'EXISTS(S identity AD, NOT AD in_group AF, AF name "guests", AF is CWGroup), A is CWUser') |
7139
20807d3d7cf6
[rql rewriter] to properly handle 'relation' rql expressions, rql rewriter must support multiple variables (eg S and O) at once to be given as varmap
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6685
diff
changeset
|
364 |
|
20807d3d7cf6
[rql rewriter] to properly handle 'relation' rql expressions, rql rewriter must support multiple variables (eg S and O) at once to be given as varmap
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6685
diff
changeset
|
365 |
def test_unrelated_rql_security_1_anon(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
366 |
with self.new_access('anon').web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
367 |
user = req.user |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
368 |
rql = user.cw_unrelated_rql('use_email', 'EmailAddress', 'subject')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
369 |
self.assertEqual(rql, 'Any O,AA,AB,AC ORDERBY AC DESC ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
370 |
'WHERE NOT A use_email O, S eid %(x)s, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
371 |
'O is EmailAddress, O address AA, O alias AB, O modification_date AC, AD eid %(AE)s, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
372 |
'EXISTS(S identity AD, NOT AD in_group AF, AF name "guests", AF is CWGroup), A is CWUser') |
3241
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
373 |
|
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
374 |
def test_unrelated_rql_security_2(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
375 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
376 |
email = req.execute('INSERT EmailAddress X: X address "hop"').get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
377 |
rql = email.cw_unrelated_rql('use_email', 'CWUser', 'object')[0] |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
378 |
self.assertEqual(rql, 'Any S,AA,AB,AC,AD ORDERBY AB ' |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
379 |
'WHERE NOT S use_email O, O eid %(x)s, S is_instance_of CWUser, ' |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
380 |
'S firstname AA, S login AB, S modification_date AC, S surname AD') |
9774
b7b71be569cf
deprecate get/set_shared_data API
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9770
diff
changeset
|
381 |
req.cnx.commit() |
8161
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
382 |
rperms = self.schema['EmailAddress'].permissions['read'] |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
383 |
clear_cache(self.schema['EmailAddress'], 'get_groups') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
384 |
clear_cache(self.schema['EmailAddress'], 'get_rqlexprs') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
385 |
self.schema['EmailAddress'].permissions['read'] = ('managers', 'users', 'guests',) |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
386 |
try: |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
387 |
with self.new_access('anon').web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
388 |
email = req.execute('Any X WHERE X eid %(x)s', {'x': email.eid}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
389 |
rql = email.cw_unrelated_rql('use_email', 'CWUser', 'object')[0] |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
390 |
self.assertEqual(rql, 'Any S,AA,AB,AC,AD ORDERBY AB ' |
8161
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
391 |
'WHERE NOT S use_email O, O eid %(x)s, S is CWUser, ' |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
392 |
'S firstname AA, S login AB, S modification_date AC, S surname AD, ' |
8161
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
393 |
'AE eid %(AF)s, EXISTS(S identity AE, NOT AE in_group AG, AG name "guests", AG is CWGroup)') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
394 |
finally: |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
395 |
clear_cache(self.schema['EmailAddress'], 'get_groups') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
396 |
clear_cache(self.schema['EmailAddress'], 'get_rqlexprs') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
397 |
self.schema['EmailAddress'].permissions['read'] = rperms |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
398 |
|
9712
6c6cd8c4b256
[entity] add a new `cw_linkable_rql` method
Katia Saurfelt <katia.saurfelt@logilab.fr>
parents:
9638
diff
changeset
|
399 |
def test_cw_linkable_rql(self): |
6c6cd8c4b256
[entity] add a new `cw_linkable_rql` method
Katia Saurfelt <katia.saurfelt@logilab.fr>
parents:
9638
diff
changeset
|
400 |
with self.admin_access.web_request() as req: |
6c6cd8c4b256
[entity] add a new `cw_linkable_rql` method
Katia Saurfelt <katia.saurfelt@logilab.fr>
parents:
9638
diff
changeset
|
401 |
email = req.execute('INSERT EmailAddress X: X address "hop"').get_entity(0, 0) |
6c6cd8c4b256
[entity] add a new `cw_linkable_rql` method
Katia Saurfelt <katia.saurfelt@logilab.fr>
parents:
9638
diff
changeset
|
402 |
rql = email.cw_linkable_rql('use_email', 'CWUser', 'object')[0] |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
403 |
self.assertEqual(rql, 'Any S,AA,AB,AC,AD ORDERBY AB ' |
9712
6c6cd8c4b256
[entity] add a new `cw_linkable_rql` method
Katia Saurfelt <katia.saurfelt@logilab.fr>
parents:
9638
diff
changeset
|
404 |
'WHERE O eid %(x)s, S is_instance_of CWUser, ' |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
405 |
'S firstname AA, S login AB, S modification_date AC, S surname AD') |
3241
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
406 |
|
3826
0c0c051863cb
close #511810: bad rql generated when looking for vocabulary for a relation on an entity which doesn't exist (yet)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3771
diff
changeset
|
407 |
def test_unrelated_rql_security_nonexistant(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
408 |
with self.new_access('anon').web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
409 |
email = self.vreg['etypes'].etype_class('EmailAddress')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
410 |
rql = email.cw_unrelated_rql('use_email', 'CWUser', 'object')[0] |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
411 |
self.assertEqual(rql, 'Any S,AA,AB,AC,AD ORDERBY AB ' |
7177
0f2905cbe443
[entity vocab] fix bug introduced in 3.12 vs/ entity vocabulary, leading to some unexpected empty vocabulary. Fix test accordingly.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7154
diff
changeset
|
412 |
'WHERE S is CWUser, ' |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
413 |
'S firstname AA, S login AB, S modification_date AC, S surname AD, ' |
7794
aed065b97f12
refactor entity fetch_rql method to use a RQL syntax tree instead of RQL strings ; closes #1585650
Florent Cayré <florent.cayre@gmail.com>
parents:
7791
diff
changeset
|
414 |
'AE eid %(AF)s, EXISTS(S identity AE, NOT AE in_group AG, AG name "guests", AG is CWGroup)') |
3826
0c0c051863cb
close #511810: bad rql generated when looking for vocabulary for a relation on an entity which doesn't exist (yet)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3771
diff
changeset
|
415 |
|
7153
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
416 |
def test_unrelated_rql_constraints_creation_subject(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
417 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
418 |
person = self.vreg['etypes'].etype_class('Personne')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
419 |
rql = person.cw_unrelated_rql('connait', 'Personne', 'subject')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
420 |
self.assertEqual( |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
421 |
rql, 'Any O,AA,AB,AC ORDERBY AA DESC WHERE ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
422 |
'O is_instance_of Personne, O modification_date AA, O nom AB, O prenom AC') |
7153
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
423 |
|
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
424 |
def test_unrelated_rql_constraints_creation_object(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
425 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
426 |
person = self.vreg['etypes'].etype_class('Personne')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
427 |
rql = person.cw_unrelated_rql('connait', 'Personne', 'object')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
428 |
self.assertEqual( |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
429 |
rql, 'Any S,AA,AB,AC ORDERBY AA DESC WHERE ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
430 |
'S is Personne, S modification_date AA, S nom AB, S prenom AC, ' |
7794
aed065b97f12
refactor entity fetch_rql method to use a RQL syntax tree instead of RQL strings ; closes #1585650
Florent Cayré <florent.cayre@gmail.com>
parents:
7791
diff
changeset
|
431 |
'NOT (S connait AD, AD nom "toto"), AD is Personne, ' |
aed065b97f12
refactor entity fetch_rql method to use a RQL syntax tree instead of RQL strings ; closes #1585650
Florent Cayré <florent.cayre@gmail.com>
parents:
7791
diff
changeset
|
432 |
'EXISTS(S travaille AE, AE nom "tutu")') |
7153
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
433 |
|
8472
444a8e25c940
[entity] fix unrelated_rql for creation form vocabulary for relation with specific permissions (closes #2423854)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8307
diff
changeset
|
434 |
def test_unrelated_rql_security_rel_perms(self): |
444a8e25c940
[entity] fix unrelated_rql for creation form vocabulary for relation with specific permissions (closes #2423854)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8307
diff
changeset
|
435 |
'''check `connait` add permission has no effect for a new entity on the |
444a8e25c940
[entity] fix unrelated_rql for creation form vocabulary for relation with specific permissions (closes #2423854)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8307
diff
changeset
|
436 |
unrelated rql''' |
444a8e25c940
[entity] fix unrelated_rql for creation form vocabulary for relation with specific permissions (closes #2423854)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8307
diff
changeset
|
437 |
rdef = self.schema['Personne'].rdef('connait') |
444a8e25c940
[entity] fix unrelated_rql for creation form vocabulary for relation with specific permissions (closes #2423854)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8307
diff
changeset
|
438 |
perm_rrqle = RRQLExpression('U has_update_permission S') |
444a8e25c940
[entity] fix unrelated_rql for creation form vocabulary for relation with specific permissions (closes #2423854)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8307
diff
changeset
|
439 |
with self.temporary_permissions((rdef, {'add': (perm_rrqle,)})): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
440 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
441 |
person = self.vreg['etypes'].etype_class('Personne')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
442 |
rql = person.cw_unrelated_rql('connait', 'Personne', 'subject')[0] |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
443 |
self.assertEqual(rql, 'Any O,AA,AB,AC ORDERBY AA DESC WHERE ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
444 |
'O is_instance_of Personne, O modification_date AA, O nom AB, ' |
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
445 |
'O prenom AC') |
8472
444a8e25c940
[entity] fix unrelated_rql for creation form vocabulary for relation with specific permissions (closes #2423854)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8307
diff
changeset
|
446 |
|
7153
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
447 |
def test_unrelated_rql_constraints_edition_subject(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
448 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
449 |
person = req.create_entity('Personne', nom=u'sylvain') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
450 |
rql = person.cw_unrelated_rql('connait', 'Personne', 'subject')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
451 |
self.assertEqual( |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
452 |
rql, 'Any O,AA,AB,AC ORDERBY AA DESC WHERE ' |
7794
aed065b97f12
refactor entity fetch_rql method to use a RQL syntax tree instead of RQL strings ; closes #1585650
Florent Cayré <florent.cayre@gmail.com>
parents:
7791
diff
changeset
|
453 |
'NOT S connait O, S eid %(x)s, O is Personne, ' |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
454 |
'O modification_date AA, O nom AB, O prenom AC, ' |
7154
5e2f93b88d86
[entity vocabulary] refactor unrelated rql to allow usage of RQLRewriter to insert schema constraints. Closes #1561806
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7153
diff
changeset
|
455 |
'NOT S identity O') |
7153
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
456 |
|
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
457 |
def test_unrelated_rql_constraints_edition_object(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
458 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
459 |
person = req.create_entity('Personne', nom=u'sylvain') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
460 |
rql = person.cw_unrelated_rql('connait', 'Personne', 'object')[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
461 |
self.assertEqual( |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
462 |
rql, 'Any S,AA,AB,AC ORDERBY AA DESC WHERE ' |
7794
aed065b97f12
refactor entity fetch_rql method to use a RQL syntax tree instead of RQL strings ; closes #1585650
Florent Cayré <florent.cayre@gmail.com>
parents:
7791
diff
changeset
|
463 |
'NOT S connait O, O eid %(x)s, S is Personne, ' |
10467
73ea636a5562
[entity] sort fetchattrs when generating rql
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10354
diff
changeset
|
464 |
'S modification_date AA, S nom AB, S prenom AC, ' |
7794
aed065b97f12
refactor entity fetch_rql method to use a RQL syntax tree instead of RQL strings ; closes #1585650
Florent Cayré <florent.cayre@gmail.com>
parents:
7791
diff
changeset
|
465 |
'NOT S identity O, NOT (S connait AD, AD nom "toto"), ' |
aed065b97f12
refactor entity fetch_rql method to use a RQL syntax tree instead of RQL strings ; closes #1585650
Florent Cayré <florent.cayre@gmail.com>
parents:
7791
diff
changeset
|
466 |
'EXISTS(S travaille AE, AE nom "tutu")') |
7153
7df83a6d17c0
[entity vocabulary] fix unrelated rql generation to skip rql constraints that don't make sense
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7139
diff
changeset
|
467 |
|
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
468 |
def test_unrelated_rql_s_linkto_s(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
469 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
470 |
person = self.vreg['etypes'].etype_class('Personne')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
471 |
self.vreg['etypes'].etype_class('Personne').fetch_attrs = () |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
472 |
soc = req.create_entity('Societe', nom=u'logilab') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
473 |
lt_infos = {('actionnaire', 'subject'): [soc.eid]} |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
474 |
rql, args = person.cw_unrelated_rql('associe', 'Personne', 'subject', |
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
475 |
lt_infos=lt_infos) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
476 |
self.assertEqual(u'Any O ORDERBY O WHERE O is Personne, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
477 |
u'EXISTS(AA eid %(SOC)s, O actionnaire AA)', rql) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
478 |
self.assertEqual({'SOC': soc.eid}, args) |
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
479 |
|
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
480 |
def test_unrelated_rql_s_linkto_o(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
481 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
482 |
person = self.vreg['etypes'].etype_class('Personne')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
483 |
self.vreg['etypes'].etype_class('Societe').fetch_attrs = () |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
484 |
soc = req.create_entity('Societe', nom=u'logilab') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
485 |
lt_infos = {('contrat_exclusif', 'object'): [soc.eid]} |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
486 |
rql, args = person.cw_unrelated_rql('actionnaire', 'Societe', 'subject', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
487 |
lt_infos=lt_infos) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
488 |
self.assertEqual(u'Any O ORDERBY O WHERE NOT A actionnaire O, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
489 |
u'O is_instance_of Societe, NOT EXISTS(O eid %(O)s), ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
490 |
u'A is Personne', rql) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
491 |
self.assertEqual({'O': soc.eid}, args) |
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
492 |
|
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
493 |
def test_unrelated_rql_o_linkto_s(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
494 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
495 |
soc = self.vreg['etypes'].etype_class('Societe')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
496 |
self.vreg['etypes'].etype_class('Personne').fetch_attrs = () |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
497 |
person = req.create_entity('Personne', nom=u'florent') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
498 |
lt_infos = {('contrat_exclusif', 'subject'): [person.eid]} |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
499 |
rql, args = soc.cw_unrelated_rql('actionnaire', 'Personne', 'object', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
500 |
lt_infos=lt_infos) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
501 |
self.assertEqual(u'Any S ORDERBY S WHERE NOT S actionnaire A, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
502 |
u'S is_instance_of Personne, NOT EXISTS(S eid %(S)s), ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
503 |
u'A is Societe', rql) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
504 |
self.assertEqual({'S': person.eid}, args) |
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
505 |
|
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
506 |
def test_unrelated_rql_o_linkto_o(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
507 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
508 |
soc = self.vreg['etypes'].etype_class('Societe')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
509 |
self.vreg['etypes'].etype_class('Personne').fetch_attrs = () |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
510 |
person = req.create_entity('Personne', nom=u'florent') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
511 |
lt_infos = {('actionnaire', 'object'): [person.eid]} |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
512 |
rql, args = soc.cw_unrelated_rql('dirige', 'Personne', 'object', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
513 |
lt_infos=lt_infos) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
514 |
self.assertEqual(u'Any S ORDERBY S WHERE NOT S dirige A, ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
515 |
u'S is_instance_of Personne, EXISTS(S eid %(S)s), ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
516 |
u'A is Societe', rql) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
517 |
self.assertEqual({'S': person.eid}, args) |
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
518 |
|
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
519 |
def test_unrelated_rql_s_linkto_s_no_info(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
520 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
521 |
person = self.vreg['etypes'].etype_class('Personne')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
522 |
self.vreg['etypes'].etype_class('Personne').fetch_attrs = () |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
523 |
soc = req.create_entity('Societe', nom=u'logilab') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
524 |
rql, args = person.cw_unrelated_rql('associe', 'Personne', 'subject') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
525 |
self.assertEqual(u'Any O ORDERBY O WHERE O is_instance_of Personne', rql) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
526 |
self.assertEqual({}, args) |
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
527 |
|
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
528 |
def test_unrelated_rql_s_linkto_s_unused_info(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
529 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
530 |
person = self.vreg['etypes'].etype_class('Personne')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
531 |
self.vreg['etypes'].etype_class('Personne').fetch_attrs = () |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
532 |
other_p = req.create_entity('Personne', nom=u'titi') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
533 |
lt_infos = {('dirige', 'subject'): [other_p.eid]} |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
534 |
rql, args = person.cw_unrelated_rql('associe', 'Personne', 'subject', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
535 |
lt_infos=lt_infos) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
536 |
self.assertEqual(u'Any O ORDERBY O WHERE O is_instance_of Personne', rql) |
7973
64639bc94e25
[entity] restrict creation form field vocabulary using __linkto information (closes #1799997)
Florent Cayré <florent.cayre@gmail.com>
parents:
7827
diff
changeset
|
537 |
|
3241
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
538 |
def test_unrelated_base(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
539 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
540 |
p = req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
541 |
e = req.create_entity('Tag', name=u'x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
542 |
related = [r.eid for r in e.tags] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
543 |
self.assertEqual(related, []) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
544 |
unrelated = [r[0] for r in e.unrelated('tags', 'Personne', 'subject')] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
545 |
self.assertIn(p.eid, unrelated) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
546 |
req.execute('SET X tags Y WHERE X is Tag, Y is Personne') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
547 |
e = req.execute('Any X WHERE X is Tag').get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
548 |
unrelated = [r[0] for r in e.unrelated('tags', 'Personne', 'subject')] |
9638
3046bae3ce31
[test] replace some assert{True,False} with more specific method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9637
diff
changeset
|
549 |
self.assertNotIn(p.eid, unrelated) |
0 | 550 |
|
3241
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
551 |
def test_unrelated_limit(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
552 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
553 |
e = req.create_entity('Tag', name=u'x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
554 |
req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
555 |
req.create_entity('Personne', nom=u'thenault', prenom=u'sylvain') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
556 |
self.assertEqual(len(e.unrelated('tags', 'Personne', 'subject', limit=1)), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
557 |
1) |
1640 | 558 |
|
3241
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
559 |
def test_unrelated_security(self): |
8161
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
560 |
rperms = self.schema['EmailAddress'].permissions['read'] |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
561 |
clear_cache(self.schema['EmailAddress'], 'get_groups') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
562 |
clear_cache(self.schema['EmailAddress'], 'get_rqlexprs') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
563 |
self.schema['EmailAddress'].permissions['read'] = ('managers', 'users', 'guests',) |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
564 |
try: |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
565 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
566 |
email = req.execute('INSERT EmailAddress X: X address "hop"').get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
567 |
rset = email.unrelated('use_email', 'CWUser', 'object') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
568 |
self.assertEqual([x.login for x in rset.entities()], [u'admin', u'anon']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
569 |
user = req.user |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
570 |
rset = user.unrelated('use_email', 'EmailAddress', 'subject') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
571 |
self.assertEqual([x.address for x in rset.entities()], [u'hop']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
572 |
self.create_user(req, 'toto') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
573 |
with self.new_access('toto').web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
574 |
email = req.execute('Any X WHERE X eid %(x)s', {'x': email.eid}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
575 |
rset = email.unrelated('use_email', 'CWUser', 'object') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
576 |
self.assertEqual([x.login for x in rset.entities()], ['toto']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
577 |
user = req.user |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
578 |
rset = user.unrelated('use_email', 'EmailAddress', 'subject') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
579 |
self.assertEqual([x.address for x in rset.entities()], ['hop']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
580 |
user = req.execute('Any X WHERE X login "admin"').get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
581 |
rset = user.unrelated('use_email', 'EmailAddress', 'subject') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
582 |
self.assertEqual([x.address for x in rset.entities()], []) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
583 |
with self.new_access('anon').web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
584 |
email = req.execute('Any X WHERE X eid %(x)s', {'x': email.eid}).get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
585 |
rset = email.unrelated('use_email', 'CWUser', 'object') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
586 |
self.assertEqual([x.login for x in rset.entities()], []) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
587 |
user = req.user |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
588 |
rset = user.unrelated('use_email', 'EmailAddress', 'subject') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
589 |
self.assertEqual([x.address for x in rset.entities()], []) |
8161
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
590 |
finally: |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
591 |
clear_cache(self.schema['EmailAddress'], 'get_groups') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
592 |
clear_cache(self.schema['EmailAddress'], 'get_rqlexprs') |
6f4229eb8178
[test] fix test broken by 8158:2ee254e74382 and add a test for that change
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7973
diff
changeset
|
593 |
self.schema['EmailAddress'].permissions['read'] = rperms |
3241
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
594 |
|
1a6f7a0e7dbd
unrelated_rql now considers relation's add perm
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3136
diff
changeset
|
595 |
def test_unrelated_new_entity(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
596 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
597 |
e = self.vreg['etypes'].etype_class('CWUser')(req) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
598 |
unrelated = [r[0] for r in e.unrelated('in_group', 'CWGroup', 'subject')] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
599 |
# should be default groups but owners, i.e. managers, users, guests |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
600 |
self.assertEqual(len(unrelated), 3) |
0 | 601 |
|
10012
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
602 |
def test_markdown_printable_value_string(self): |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
603 |
with self.admin_access.web_request() as req: |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
604 |
e = req.create_entity('Card', title=u'rest markdown', |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
605 |
content=u'This is [an example](http://example.com/ "Title") inline link`', |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
606 |
content_format=u'text/markdown') |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
607 |
self.assertEqual( |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
608 |
u'<p>This is <a href="http://example.com/" ' |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
609 |
u'title="Title">an example</a> inline link`</p>', |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
610 |
e.printable_value('content')) |
8c2c6fdd8d56
[RichString] Add markdown support
Christophe de Vienne <christophe@unlish.com>
parents:
9978
diff
changeset
|
611 |
|
0 | 612 |
def test_printable_value_string(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
613 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
614 |
e = req.create_entity('Card', title=u'rest test', |
10116
4e9738f5c798
[test] fixes to make tests pass with recent lxml
David Douard <david.douard@logilab.fr>
parents:
9978
diff
changeset
|
615 |
content=u'du :eid:`1:*ReST*`', |
4e9738f5c798
[test] fixes to make tests pass with recent lxml
David Douard <david.douard@logilab.fr>
parents:
9978
diff
changeset
|
616 |
content_format=u'text/rest') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
617 |
self.assertEqual(e.printable_value('content'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
618 |
'<p>du <a class="reference" href="http://testing.fr/cubicweb/cwsource/system">*ReST*</a></p>') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
619 |
e.cw_attr_cache['content'] = 'du <em>html</em> <ref rql="CWUser X">users</ref>' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
620 |
e.cw_attr_cache['content_format'] = 'text/html' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
621 |
self.assertEqual(e.printable_value('content'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
622 |
'du <em>html</em> <a href="http://testing.fr/cubicweb/view?rql=CWUser%20X">users</a>') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
623 |
e.cw_attr_cache['content'] = 'du *texte*' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
624 |
e.cw_attr_cache['content_format'] = 'text/plain' |
10116
4e9738f5c798
[test] fixes to make tests pass with recent lxml
David Douard <david.douard@logilab.fr>
parents:
9978
diff
changeset
|
625 |
self.assertEqual(e.printable_value('content').replace("\n", ""), |
4e9738f5c798
[test] fixes to make tests pass with recent lxml
David Douard <david.douard@logilab.fr>
parents:
9978
diff
changeset
|
626 |
'<p>du *texte*<br/></p>') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
627 |
e.cw_attr_cache['title'] = 'zou' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
628 |
e.cw_attr_cache['content'] = '''\ |
0 | 629 |
a title |
630 |
======= |
|
631 |
du :eid:`1:*ReST*`''' |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
632 |
e.cw_attr_cache['content_format'] = 'text/rest' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
633 |
self.assertEqual(e.printable_value('content', format='text/plain'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
634 |
e.cw_attr_cache['content']) |
0 | 635 |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
636 |
e.cw_attr_cache['content'] = u'<b>yo (zou éà ;)</b>' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
637 |
e.cw_attr_cache['content_format'] = 'text/html' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
638 |
self.assertEqual(e.printable_value('content', format='text/plain').strip(), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
639 |
u'**yo (zou éà ;)**') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
640 |
if HAS_TAL: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
641 |
e.cw_attr_cache['content'] = '<h1 tal:content="self/title">titre</h1>' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
642 |
e.cw_attr_cache['content_format'] = 'text/cubicweb-page-template' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
643 |
self.assertEqual(e.printable_value('content'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
644 |
'<h1>zou</h1>') |
1640 | 645 |
|
0 | 646 |
|
647 |
def test_printable_value_bytes(self): |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
648 |
with self.admin_access.web_request() as req: |
10704
73367a56ee41
[py3k] ensure Binary objects are initialized with bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10529
diff
changeset
|
649 |
e = req.create_entity('FakeFile', data=Binary(b'lambda x: 1'), data_format=u'text/x-python', |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
650 |
data_encoding=u'ascii', data_name=u'toto.py') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
651 |
from cubicweb import mttransforms |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
652 |
if mttransforms.HAS_PYGMENTS_TRANSFORMS: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
653 |
import pygments |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
654 |
if tuple(int(i) for i in pygments.__version__.split('.')[:2]) >= (1, 3): |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
655 |
self.assertEqual(e.printable_value('data'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
656 |
'''<div class="highlight"><pre><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="mi">1</span> |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
657 |
</pre></div>''') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
658 |
else: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
659 |
self.assertEqual(e.printable_value('data'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
660 |
'''<div class="highlight"><pre><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="mf">1</span> |
9432
030745ac9873
[entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9319
diff
changeset
|
661 |
</pre></div>''') |
5634
e01cf2013bf1
stop being dumb please
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5631
diff
changeset
|
662 |
else: |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6168
diff
changeset
|
663 |
self.assertEqual(e.printable_value('data'), |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
664 |
'''<pre class="python"> |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
665 |
<span style="color: #C00000;">lambda</span> <span style="color: #000000;">x</span><span style="color: #0000C0;">:</span> <span style="color: #0080C0;">1</span> |
9432
030745ac9873
[entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9319
diff
changeset
|
666 |
</pre>''') |
1640 | 667 |
|
10704
73367a56ee41
[py3k] ensure Binary objects are initialized with bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10529
diff
changeset
|
668 |
e = req.create_entity('FakeFile', |
73367a56ee41
[py3k] ensure Binary objects are initialized with bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10529
diff
changeset
|
669 |
data=Binary(u'*héhéhé*'.encode('utf-8')), |
73367a56ee41
[py3k] ensure Binary objects are initialized with bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10529
diff
changeset
|
670 |
data_format=u'text/rest', |
73367a56ee41
[py3k] ensure Binary objects are initialized with bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10529
diff
changeset
|
671 |
data_encoding=u'utf-8', data_name=u'toto.txt') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
672 |
self.assertEqual(e.printable_value('data'), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
673 |
u'<p><em>héhéhé</em></p>') |
0 | 674 |
|
675 |
def test_printable_value_bad_html(self): |
|
676 |
"""make sure we don't crash if we try to render invalid XHTML strings""" |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
677 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
678 |
e = req.create_entity('Card', title=u'bad html', content=u'<div>R&D<br>', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
679 |
content_format=u'text/html') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
680 |
tidy = lambda x: x.replace('\n', '') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
681 |
self.assertEqual(tidy(e.printable_value('content')), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
682 |
'<div>R&D<br/></div>') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
683 |
e.cw_attr_cache['content'] = u'yo !! R&D <div> pas fermé' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
684 |
self.assertEqual(tidy(e.printable_value('content')), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
685 |
u'yo !! R&D <div> pas fermé</div>') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
686 |
e.cw_attr_cache['content'] = u'R&D' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
687 |
self.assertEqual(tidy(e.printable_value('content')), u'R&D') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
688 |
e.cw_attr_cache['content'] = u'R&D;' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
689 |
self.assertEqual(tidy(e.printable_value('content')), u'R&D;') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
690 |
e.cw_attr_cache['content'] = u'yo !! R&D <div> pas fermé' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
691 |
self.assertEqual(tidy(e.printable_value('content')), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
692 |
u'yo !! R&D <div> pas fermé</div>') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
693 |
e.cw_attr_cache['content'] = u'été <div> été' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
694 |
self.assertEqual(tidy(e.printable_value('content')), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
695 |
u'été <div> été</div>') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
696 |
e.cw_attr_cache['content'] = u'C'est un exemple sérieux' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
697 |
self.assertEqual(tidy(e.printable_value('content')), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
698 |
u"C'est un exemple sérieux") |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
699 |
# make sure valid xhtml is left untouched |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
700 |
e.cw_attr_cache['content'] = u'<div>R&D<br/></div>' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
701 |
self.assertEqual(e.printable_value('content'), e.cw_attr_cache['content']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
702 |
e.cw_attr_cache['content'] = u'<div>été</div>' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
703 |
self.assertEqual(e.printable_value('content'), e.cw_attr_cache['content']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
704 |
e.cw_attr_cache['content'] = u'été' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
705 |
self.assertEqual(e.printable_value('content'), e.cw_attr_cache['content']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
706 |
e.cw_attr_cache['content'] = u'hop\r\nhop\nhip\rmomo' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
707 |
self.assertEqual(e.printable_value('content'), u'hop\nhop\nhip\nmomo') |
3587 | 708 |
|
709 |
def test_printable_value_bad_html_ms(self): |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
710 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
711 |
e = req.create_entity('Card', title=u'bad html', content=u'<div>R&D<br>', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
712 |
content_format=u'text/html') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
713 |
tidy = lambda x: x.replace('\n', '') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
714 |
e.cw_attr_cache['content'] = u'<div x:foo="bar">ms orifice produces weird html</div>' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
715 |
# Caution! current implementation of soup2xhtml strips first div element |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
716 |
content = soup2xhtml(e.printable_value('content'), 'utf-8') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
717 |
self.assertMultiLineEqual(content, u'<div>ms orifice produces weird html</div>') |
1640 | 718 |
|
0 | 719 |
def test_fulltextindex(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
720 |
with self.admin_access.web_request() as req: |
10529
747eded13c68
[test] use FakeFile instead of File in test_fulltextindex
Julien Cristau <julien.cristau@logilab.fr>
parents:
10467
diff
changeset
|
721 |
e = self.vreg['etypes'].etype_class('FakeFile')(req) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
722 |
e.cw_attr_cache['description'] = 'du <em>html</em>' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
723 |
e.cw_attr_cache['description_format'] = 'text/html' |
10704
73367a56ee41
[py3k] ensure Binary objects are initialized with bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10529
diff
changeset
|
724 |
e.cw_attr_cache['data'] = Binary(b'some <em>data</em>') |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
725 |
e.cw_attr_cache['data_name'] = 'an html file' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
726 |
e.cw_attr_cache['data_format'] = 'text/html' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
727 |
e.cw_attr_cache['data_encoding'] = 'ascii' |
9774
b7b71be569cf
deprecate get/set_shared_data API
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9770
diff
changeset
|
728 |
e._cw.transaction_data.clear() |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
729 |
words = e.cw_adapt_to('IFTIndexable').get_words() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
730 |
words['C'].sort() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
731 |
self.assertEqual({'C': sorted(['an', 'html', 'file', 'du', 'html', 'some', 'data'])}, |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
732 |
words) |
0 | 733 |
|
1640 | 734 |
|
0 | 735 |
def test_nonregr_relation_cache(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
736 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
737 |
p1 = req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
738 |
p2 = req.create_entity('Personne', nom=u'toto') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
739 |
req.execute('SET X evaluee Y WHERE X nom "di mascio", Y nom "toto"') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
740 |
self.assertEqual(p1.evaluee[0].nom, "toto") |
9638
3046bae3ce31
[test] replace some assert{True,False} with more specific method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9637
diff
changeset
|
741 |
self.assertFalse(p1.reverse_evaluee) |
1640 | 742 |
|
0 | 743 |
def test_complete_relation(self): |
9877
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
744 |
with self.admin_access.repo_cnx() as cnx: |
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
745 |
eid = cnx.execute( |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
746 |
'INSERT TrInfo X: X comment "zou", X wf_info_for U, X from_state S1, X to_state S2 ' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
747 |
'WHERE U login "admin", S1 name "activated", S2 name "deactivated"')[0][0] |
9877
4a604b6e3067
[test/entities] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9774
diff
changeset
|
748 |
trinfo = cnx.execute('Any X WHERE X eid %(x)s', {'x': eid}).get_entity(0, 0) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
749 |
trinfo.complete() |
9638
3046bae3ce31
[test] replace some assert{True,False} with more specific method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9637
diff
changeset
|
750 |
self.assertIsInstance(trinfo.cw_attr_cache['creation_date'], datetime) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
751 |
self.assertTrue(trinfo.cw_relation_cached('from_state', 'subject')) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
752 |
self.assertTrue(trinfo.cw_relation_cached('to_state', 'subject')) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
753 |
self.assertTrue(trinfo.cw_relation_cached('wf_info_for', 'subject')) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
754 |
self.assertEqual(trinfo.by_transition, ()) |
0 | 755 |
|
756 |
def test_request_cache(self): |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
757 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
758 |
user = req.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
759 |
state = user.in_state[0] |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
760 |
samestate = req.execute('State X WHERE X name "activated"').get_entity(0, 0) |
9638
3046bae3ce31
[test] replace some assert{True,False} with more specific method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9637
diff
changeset
|
761 |
self.assertIs(state, samestate) |
0 | 762 |
|
763 |
def test_rest_path(self): |
|
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
764 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
765 |
note = req.create_entity('Note', type=u'z') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
766 |
self.assertEqual(note.rest_path(), 'note/%s' % note.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
767 |
# unique attr |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
768 |
tag = req.create_entity('Tag', name=u'x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
769 |
self.assertEqual(tag.rest_path(), 'tag/x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
770 |
# test explicit rest_attr |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
771 |
person = req.create_entity('Personne', prenom=u'john', nom=u'doe') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
772 |
self.assertEqual(person.rest_path(), 'personne/doe') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
773 |
# ambiguity test |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
774 |
person2 = req.create_entity('Personne', prenom=u'remi', nom=u'doe') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
775 |
person.cw_clear_all_caches() |
10707
3f4f190f8e35
[py3k] unicode → six.text_type
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10704
diff
changeset
|
776 |
self.assertEqual(person.rest_path(), text_type(person.eid)) |
3f4f190f8e35
[py3k] unicode → six.text_type
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10704
diff
changeset
|
777 |
self.assertEqual(person2.rest_path(), text_type(person2.eid)) |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
778 |
# unique attr with None value (nom in this case) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
779 |
friend = req.create_entity('Ami', prenom=u'bob') |
10707
3f4f190f8e35
[py3k] unicode → six.text_type
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10704
diff
changeset
|
780 |
self.assertEqual(friend.rest_path(), text_type(friend.eid)) |
9978
8f4b15e5b300
[entities] cw_rest_attr_info() should only consider required attributes (closes #3766717)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9877
diff
changeset
|
781 |
# 'ref' below is created without the unique but not required |
8f4b15e5b300
[entities] cw_rest_attr_info() should only consider required attributes (closes #3766717)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9877
diff
changeset
|
782 |
# attribute, make sur that the unique _and_ required 'ean' is used |
8f4b15e5b300
[entities] cw_rest_attr_info() should only consider required attributes (closes #3766717)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9877
diff
changeset
|
783 |
# as the rest attribute |
8f4b15e5b300
[entities] cw_rest_attr_info() should only consider required attributes (closes #3766717)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9877
diff
changeset
|
784 |
ref = req.create_entity('Reference', ean=u'42-1337-42') |
8f4b15e5b300
[entities] cw_rest_attr_info() should only consider required attributes (closes #3766717)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9877
diff
changeset
|
785 |
self.assertEqual(ref.rest_path(), 'reference/42-1337-42') |
9319
a68b8f423a8b
[test] test can_use_rest_path directly
Julien Cristau <julien.cristau@logilab.fr>
parents:
9273
diff
changeset
|
786 |
|
a68b8f423a8b
[test] test can_use_rest_path directly
Julien Cristau <julien.cristau@logilab.fr>
parents:
9273
diff
changeset
|
787 |
def test_can_use_rest_path(self): |
a68b8f423a8b
[test] test can_use_rest_path directly
Julien Cristau <julien.cristau@logilab.fr>
parents:
9273
diff
changeset
|
788 |
self.assertTrue(can_use_rest_path(u'zobi')) |
6099
b22a4a3895df
work around Apache's mod_proxy limitation with special chars in URLs by not using Rest urls when such a case is detected
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
5768
diff
changeset
|
789 |
# don't use rest if we have /, ? or & in the path (breaks mod_proxy) |
9319
a68b8f423a8b
[test] test can_use_rest_path directly
Julien Cristau <julien.cristau@logilab.fr>
parents:
9273
diff
changeset
|
790 |
self.assertFalse(can_use_rest_path(u'zo/bi')) |
a68b8f423a8b
[test] test can_use_rest_path directly
Julien Cristau <julien.cristau@logilab.fr>
parents:
9273
diff
changeset
|
791 |
self.assertFalse(can_use_rest_path(u'zo&bi')) |
a68b8f423a8b
[test] test can_use_rest_path directly
Julien Cristau <julien.cristau@logilab.fr>
parents:
9273
diff
changeset
|
792 |
self.assertFalse(can_use_rest_path(u'zo?bi')) |
0 | 793 |
|
8483
4ba11607d84a
[entity api] unify set_attributes / set_relations into a cw_set method. Closes #2423719
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8307
diff
changeset
|
794 |
def test_cw_set_attributes(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
795 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
796 |
person = req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
797 |
self.assertEqual(person.prenom, u'adrien') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
798 |
self.assertEqual(person.nom, u'di mascio') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
799 |
person.cw_set(prenom=u'sylvain', nom=u'thénault') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
800 |
person = req.execute('Personne P').get_entity(0, 0) # XXX retreival needed ? |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
801 |
self.assertEqual(person.prenom, u'sylvain') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
802 |
self.assertEqual(person.nom, u'thénault') |
0 | 803 |
|
8483
4ba11607d84a
[entity api] unify set_attributes / set_relations into a cw_set method. Closes #2423719
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8307
diff
changeset
|
804 |
def test_cw_set_relations(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
805 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
806 |
person = req.create_entity('Personne', nom=u'chauvat', prenom=u'nicolas') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
807 |
note = req.create_entity('Note', type=u'x') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
808 |
note.cw_set(ecrit_par=person) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
809 |
note = req.create_entity('Note', type=u'y') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
810 |
note.cw_set(ecrit_par=person.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
811 |
self.assertEqual(len(person.reverse_ecrit_par), 2) |
7308
ff8d6ae076c4
[entity] make set_relations() accept entities and eids (closes #1631391)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
7302
diff
changeset
|
812 |
|
1905
9c96dd7cc624
[tests] fix test after absolute_url got changed for external entities
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
1640
diff
changeset
|
813 |
def test_metainformation_and_external_absolute_url(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
814 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
815 |
note = req.create_entity('Note', type=u'z') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
816 |
metainf = note.cw_metainformation() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
817 |
self.assertEqual(metainf, {'source': {'type': 'native', 'uri': 'system', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
818 |
'use-cwuri-as-url': False}, |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
819 |
'type': u'Note', 'extid': None}) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
820 |
self.assertEqual(note.absolute_url(), 'http://testing.fr/cubicweb/note/%s' % note.eid) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
821 |
metainf['source'] = metainf['source'].copy() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
822 |
metainf['source']['base-url'] = 'http://cubicweb2.com/' |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
823 |
metainf['extid'] = 1234 |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
824 |
self.assertEqual(note.absolute_url(), 'http://cubicweb2.com/note/1234') |
1640 | 825 |
|
2125
19861294506f
https://www.logilab.net/cwo/ticket/343724
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
826 |
def test_absolute_url_empty_field(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
827 |
with self.admin_access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
828 |
card = req.create_entity('Card', wikiid=u'', title=u'test') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
829 |
self.assertEqual(card.absolute_url(), |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
830 |
'http://testing.fr/cubicweb/%s' % card.eid) |
2125
19861294506f
https://www.logilab.net/cwo/ticket/343724
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
831 |
|
9261
1dfe62a9da50
[entity] give a default reasonnable __eq__ and __hash__ to Entity
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9214
diff
changeset
|
832 |
def test_create_and_compare_entity(self): |
9637
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
833 |
access = self.admin_access |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
834 |
with access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
835 |
p1 = req.create_entity('Personne', nom=u'fayolle', prenom=u'alexandre') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
836 |
p2 = req.create_entity('Personne', nom=u'campeas', prenom=u'aurelien') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
837 |
note = req.create_entity('Note', type=u'z') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
838 |
p = req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien', |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
839 |
connait=p1, evaluee=[p1, p2], |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
840 |
reverse_ecrit_par=note) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
841 |
self.assertEqual(p.nom, 'di mascio') |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
842 |
self.assertEqual([c.nom for c in p.connait], ['fayolle']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
843 |
self.assertEqual(sorted([c.nom for c in p.evaluee]), ['campeas', 'fayolle']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
844 |
self.assertEqual([c.type for c in p.reverse_ecrit_par], ['z']) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
845 |
req.cnx.commit() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
846 |
with access.web_request() as req: |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
847 |
auc = req.execute('Personne P WHERE P prenom "aurelien"').get_entity(0,0) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
848 |
persons = set() |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
849 |
persons.add(p1) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
850 |
persons.add(p2) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
851 |
persons.add(auc) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
852 |
self.assertEqual(2, len(persons)) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
853 |
self.assertNotEqual(p1, p2) |
c6132d36e55d
[test] silence warnings for unittest_entity by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9629
diff
changeset
|
854 |
self.assertEqual(p2, auc) |
3669
4eb33ee29c84
nicer create_entity implementation (and test)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3587
diff
changeset
|
855 |
|
3670
b7ec030a5e10
allow to link to multiple entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3669
diff
changeset
|
856 |
|
0 | 857 |
if __name__ == '__main__': |
858 |
from logilab.common.testlib import unittest_main |
|
859 |
unittest_main() |
|
860 |