54 self.assertEqual(self.member.cw_etype, 'CWUser') |
53 self.assertEqual(self.member.cw_etype, 'CWUser') |
55 |
54 |
56 def test_entity_meta_attributes(self): |
55 def test_entity_meta_attributes(self): |
57 # XXX move to yams |
56 # XXX move to yams |
58 self.assertEqual(self.schema['CWUser'].meta_attributes(), {}) |
57 self.assertEqual(self.schema['CWUser'].meta_attributes(), {}) |
59 self.assertEqual(dict((str(k), v) for k, v in self.schema['State'].meta_attributes().iteritems()), |
58 self.assertEqual(dict((str(k), v) |
|
59 for k, v in self.schema['State'].meta_attributes().iteritems()), |
60 {'description_format': ('format', 'description')}) |
60 {'description_format': ('format', 'description')}) |
61 |
61 |
62 def test_fti_rql_method(self): |
62 def test_fti_rql_method(self): |
63 eclass = self.vreg['etypes'].etype_class('EmailAddress') |
63 with self.admin_access.web_request() as req: |
64 self.assertEqual(['Any X, ALIAS, ADDRESS WHERE X is EmailAddress, ' |
64 eclass = self.vreg['etypes'].etype_class('EmailAddress') |
65 'X alias ALIAS, X address ADDRESS'], |
65 self.assertEqual(['Any X, ALIAS, ADDRESS WHERE X is EmailAddress, ' |
66 eclass.cw_fti_index_rql_queries(self.request())) |
66 'X alias ALIAS, X address ADDRESS'], |
|
67 eclass.cw_fti_index_rql_queries(req)) |
67 |
68 |
68 |
69 |
69 class EmailAddressTC(BaseEntityTC): |
70 class EmailAddressTC(BaseEntityTC): |
|
71 |
70 def test_canonical_form(self): |
72 def test_canonical_form(self): |
71 email1 = self.execute('INSERT EmailAddress X: X address "maarten.ter.huurne@philips.com"').get_entity(0, 0) |
73 with self.admin_access.repo_cnx() as cnx: |
72 email2 = self.execute('INSERT EmailAddress X: X address "maarten@philips.com"').get_entity(0, 0) |
74 email1 = cnx.execute('INSERT EmailAddress X: ' |
73 email3 = self.execute('INSERT EmailAddress X: X address "toto@logilab.fr"').get_entity(0, 0) |
75 'X address "maarten.ter.huurne@philips.com"').get_entity(0, 0) |
74 email1.cw_set(prefered_form=email2) |
76 email2 = cnx.execute('INSERT EmailAddress X: ' |
75 self.assertEqual(email1.prefered.eid, email2.eid) |
77 'X address "maarten@philips.com"').get_entity(0, 0) |
76 self.assertEqual(email2.prefered.eid, email2.eid) |
78 email3 = cnx.execute('INSERT EmailAddress X: ' |
77 self.assertEqual(email3.prefered.eid, email3.eid) |
79 'X address "toto@logilab.fr"').get_entity(0, 0) |
|
80 email1.cw_set(prefered_form=email2) |
|
81 self.assertEqual(email1.prefered.eid, email2.eid) |
|
82 self.assertEqual(email2.prefered.eid, email2.eid) |
|
83 self.assertEqual(email3.prefered.eid, email3.eid) |
78 |
84 |
79 def test_mangling(self): |
85 def test_mangling(self): |
80 email = self.execute('INSERT EmailAddress X: X address "maarten.ter.huurne@philips.com"').get_entity(0, 0) |
86 with self.admin_access.repo_cnx() as cnx: |
81 self.assertEqual(email.display_address(), 'maarten.ter.huurne@philips.com') |
87 email = cnx.execute('INSERT EmailAddress X: X address "maarten.ter.huurne@philips.com"').get_entity(0, 0) |
82 self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne@philips.com') |
88 self.assertEqual(email.display_address(), 'maarten.ter.huurne@philips.com') |
83 self.vreg.config.global_set_option('mangle-emails', True) |
89 self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne@philips.com') |
84 try: |
90 self.vreg.config.global_set_option('mangle-emails', True) |
85 self.assertEqual(email.display_address(), 'maarten.ter.huurne at philips dot com') |
91 try: |
86 self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne at philips dot com') |
92 self.assertEqual(email.display_address(), 'maarten.ter.huurne at philips dot com') |
87 email = self.execute('INSERT EmailAddress X: X address "syt"').get_entity(0, 0) |
93 self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne at philips dot com') |
88 self.assertEqual(email.display_address(), 'syt') |
94 email = cnx.execute('INSERT EmailAddress X: X address "syt"').get_entity(0, 0) |
89 self.assertEqual(email.printable_value('address'), 'syt') |
95 self.assertEqual(email.display_address(), 'syt') |
90 finally: |
96 self.assertEqual(email.printable_value('address'), 'syt') |
91 self.vreg.config.global_set_option('mangle-emails', False) |
97 finally: |
|
98 self.vreg.config.global_set_option('mangle-emails', False) |
92 |
99 |
93 def test_printable_value_escape(self): |
100 def test_printable_value_escape(self): |
94 email = self.execute('INSERT EmailAddress X: X address "maarten&ter@philips.com"').get_entity(0, 0) |
101 with self.admin_access.repo_cnx() as cnx: |
95 self.assertEqual(email.printable_value('address'), 'maarten&ter@philips.com') |
102 email = cnx.execute('INSERT EmailAddress X: ' |
96 self.assertEqual(email.printable_value('address', format='text/plain'), 'maarten&ter@philips.com') |
103 'X address "maarten&ter@philips.com"').get_entity(0, 0) |
|
104 self.assertEqual(email.printable_value('address'), |
|
105 'maarten&ter@philips.com') |
|
106 self.assertEqual(email.printable_value('address', format='text/plain'), |
|
107 'maarten&ter@philips.com') |
97 |
108 |
98 class CWUserTC(BaseEntityTC): |
109 class CWUserTC(BaseEntityTC): |
99 |
110 |
100 def test_complete(self): |
111 def test_complete(self): |
101 e = self.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) |
112 with self.admin_access.repo_cnx() as cnx: |
102 e.complete() |
113 e = cnx.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) |
|
114 e.complete() |
103 |
115 |
104 def test_matching_groups(self): |
116 def test_matching_groups(self): |
105 e = self.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) |
117 with self.admin_access.repo_cnx() as cnx: |
106 self.assertTrue(e.matching_groups('managers')) |
118 e = cnx.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) |
107 self.assertFalse(e.matching_groups('xyz')) |
119 self.assertTrue(e.matching_groups('managers')) |
108 self.assertTrue(e.matching_groups(('xyz', 'managers'))) |
120 self.assertFalse(e.matching_groups('xyz')) |
109 self.assertFalse(e.matching_groups(('xyz', 'abcd'))) |
121 self.assertTrue(e.matching_groups(('xyz', 'managers'))) |
|
122 self.assertFalse(e.matching_groups(('xyz', 'abcd'))) |
110 |
123 |
111 def test_dc_title_and_name(self): |
124 def test_dc_title_and_name(self): |
112 e = self.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
125 with self.admin_access.repo_cnx() as cnx: |
113 self.assertEqual(e.dc_title(), 'member') |
126 e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
114 self.assertEqual(e.name(), 'member') |
127 self.assertEqual(e.dc_title(), 'member') |
115 e.cw_set(firstname=u'bouah') |
128 self.assertEqual(e.name(), 'member') |
116 self.assertEqual(e.dc_title(), 'member') |
129 e.cw_set(firstname=u'bouah') |
117 self.assertEqual(e.name(), u'bouah') |
130 self.assertEqual(e.dc_title(), 'member') |
118 e.cw_set(surname=u'lôt') |
131 self.assertEqual(e.name(), u'bouah') |
119 self.assertEqual(e.dc_title(), 'member') |
132 e.cw_set(surname=u'lôt') |
120 self.assertEqual(e.name(), u'bouah lôt') |
133 self.assertEqual(e.dc_title(), 'member') |
|
134 self.assertEqual(e.name(), u'bouah lôt') |
121 |
135 |
122 def test_allowed_massmail_keys(self): |
136 def test_allowed_massmail_keys(self): |
123 e = self.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
137 with self.admin_access.repo_cnx() as cnx: |
124 # Bytes/Password attributes should be omited |
138 e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
125 self.assertEqual(e.cw_adapt_to('IEmailable').allowed_massmail_keys(), |
139 # Bytes/Password attributes should be omited |
126 set(('surname', 'firstname', 'login', 'last_login_time', |
140 self.assertEqual(e.cw_adapt_to('IEmailable').allowed_massmail_keys(), |
127 'creation_date', 'modification_date', 'cwuri', 'eid')) |
141 set(('surname', 'firstname', 'login', 'last_login_time', |
128 ) |
142 'creation_date', 'modification_date', 'cwuri', 'eid')) |
|
143 ) |
129 |
144 |
130 def test_cw_instantiate_object_relation(self): |
145 def test_cw_instantiate_object_relation(self): |
131 """ a weird non regression test """ |
146 """ a weird non regression test """ |
132 e = self.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
147 with self.admin_access.repo_cnx() as cnx: |
133 self.request().create_entity('CWGroup', name=u'logilab', reverse_in_group=e) |
148 e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
|
149 cnx.create_entity('CWGroup', name=u'logilab', reverse_in_group=e) |
134 |
150 |
135 |
151 |
136 class HTMLtransformTC(BaseEntityTC): |
152 class HTMLtransformTC(BaseEntityTC): |
137 |
153 |
138 def test_sanitized_html(self): |
154 def test_sanitized_html(self): |
139 r = self.request() |
155 with self.admin_access.repo_cnx() as cnx: |
140 c = r.create_entity('Company', name=u'Babar', |
156 c = cnx.create_entity('Company', name=u'Babar', |
141 description=u""" |
157 description=u""" |
142 Title |
158 Title |
143 ===== |
159 ===== |
144 |
160 |
145 Elephant management best practices. |
161 Elephant management best practices. |
146 |
162 |
147 .. raw:: html |
163 .. raw:: html |
148 |
164 |
149 <script>alert("coucou")</script> |
165 <script>alert("coucou")</script> |
150 """, description_format=u'text/rest') |
166 """, description_format=u'text/rest') |
151 self.commit() |
167 cnx.commit() |
152 c.cw_clear_all_caches() |
168 c.cw_clear_all_caches() |
153 self.assertIn('alert', c.printable_value('description', format='text/plain')) |
169 self.assertIn('alert', |
154 self.assertNotIn('alert', c.printable_value('description', format='text/html')) |
170 c.printable_value('description', format='text/plain')) |
|
171 self.assertNotIn('alert', |
|
172 c.printable_value('description', format='text/html')) |
155 |
173 |
156 |
174 |
157 class SpecializedEntityClassesTC(CubicWebTC): |
175 class SpecializedEntityClassesTC(CubicWebTC): |
158 |
176 |
159 def select_eclass(self, etype): |
177 def select_eclass(self, etype): |