224 self.assertEqual(e.login, 'syt') |
224 self.assertEqual(e.login, 'syt') |
225 e.complete() |
225 e.complete() |
226 self.assertMetadata(e) |
226 self.assertMetadata(e) |
227 self.assertEqual(e.firstname, None) |
227 self.assertEqual(e.firstname, None) |
228 self.assertEqual(e.surname, None) |
228 self.assertEqual(e.surname, None) |
229 self.assertEqual(e.in_group[0].name, 'users') |
229 self.assertTrue('users' in [g.name for g in e.in_group]) |
230 self.assertEqual(e.owned_by[0].login, 'syt') |
230 self.assertEqual(e.owned_by[0].login, 'syt') |
231 self.assertEqual(e.created_by, ()) |
231 self.assertEqual(e.created_by, ()) |
232 addresses = [pe.address for pe in e.use_email] |
232 addresses = [pe.address for pe in e.use_email] |
233 addresses.sort() |
233 addresses.sort() |
234 self.assertEqual(['sylvain.thenault@logilab.fr', 'syt@logilab.fr'], |
234 self.assertEqual(['sylvain.thenault@logilab.fr', 'syt@logilab.fr'], |
238 # email content should be indexed on the user |
238 # email content should be indexed on the user |
239 rset = self.sexecute('CWUser X WHERE X has_text "thenault"') |
239 rset = self.sexecute('CWUser X WHERE X has_text "thenault"') |
240 self.assertEqual(rset.rows, [[e.eid]]) |
240 self.assertEqual(rset.rows, [[e.eid]]) |
241 |
241 |
242 def test_copy_to_system_source(self): |
242 def test_copy_to_system_source(self): |
|
243 "make sure we can 'convert' an LDAP user into a system one" |
243 source = self.repo.sources_by_uri['ldap'] |
244 source = self.repo.sources_by_uri['ldap'] |
244 eid = self.sexecute('CWUser X WHERE X login %(login)s', {'login': 'syt'})[0][0] |
245 eid = self.sexecute('CWUser X WHERE X login %(login)s', {'login': 'syt'})[0][0] |
245 self.sexecute('SET X cw_source S WHERE X eid %(x)s, S name "system"', {'x': eid}) |
246 self.sexecute('SET X cw_source S WHERE X eid %(x)s, S name "system"', {'x': eid}) |
246 self.commit() |
247 self.commit() |
247 source.reset_caches() |
248 source.reset_caches() |
260 source.pull_data(self.session) |
261 source.pull_data(self.session) |
261 rset = self.sexecute('CWUser X WHERE X login %(login)s', {'login': 'syt'}) |
262 rset = self.sexecute('CWUser X WHERE X login %(login)s', {'login': 'syt'}) |
262 self.assertEqual(len(rset), 1) |
263 self.assertEqual(len(rset), 1) |
263 self.assertTrue(self.repo.system_source.authenticate( |
264 self.assertTrue(self.repo.system_source.authenticate( |
264 self.session, 'syt', password='syt')) |
265 self.session, 'syt', password='syt')) |
|
266 # make sure the pull from ldap have not "reverted" user as a ldap-feed user |
|
267 self.assertEqual(e.cw_metainformation(), {'source': {'type': u'native', |
|
268 'uri': u'system', |
|
269 'use-cwuri-as-url': False}, |
|
270 'type': 'CWUser', |
|
271 'extid': None}) |
|
272 # and that the password stored in the system source is not empty or so |
|
273 user = self.execute('CWUser U WHERE U login "syt"').get_entity(0, 0) |
|
274 user.cw_clear_all_caches() |
|
275 pwd = self.session.system_sql("SELECT cw_upassword FROM cw_cwuser WHERE cw_login='syt';").fetchall()[0][0] |
|
276 self.assertIsNotNone(pwd) |
|
277 self.assertTrue(str(pwd)) |
|
278 |
265 |
279 |
266 |
280 |
267 class LDAPFeedUserDeletionTC(LDAPFeedTestBase): |
281 class LDAPFeedUserDeletionTC(LDAPFeedTestBase): |
268 """ |
282 """ |
269 A testcase for situations where users are deleted from or |
283 A testcase for situations where users are deleted from or |