140 |
140 |
141 def pull(self): |
141 def pull(self): |
142 return self._pull(self.session) |
142 return self._pull(self.session) |
143 |
143 |
144 def setup_database(self): |
144 def setup_database(self): |
145 if self.test_db_id == 'ldap-feed': |
145 with self.session.repo.internal_session(safe=True) as session: |
146 with self.session.repo.internal_session(safe=True) as session: |
146 session.execute('DELETE Any E WHERE E cw_source S, S name "ldap"') |
147 session.execute('DELETE Any E WHERE E cw_source S, S name "ldap"') |
147 session.execute('SET S config %(conf)s, S url %(url)s ' |
148 session.commit() |
148 'WHERE S is CWSource, S name "ldap"', |
149 if self.test_db_id == 'ldap-feed': |
149 {"conf": CONFIG_LDAPFEED, 'url': URL} ) |
150 src = self.sexecute('CWSource S WHERE S name "ldap"').get_entity(0,0) |
150 session.commit() |
151 src.cw_set(config=CONFIG_LDAPFEED) |
151 self.pull() |
152 self.session.commit() |
152 |
153 self.pull() |
153 def add_ldap_entry(self, dn, mods): |
|
154 """ |
|
155 add an LDAP entity |
|
156 """ |
|
157 modcmd = ['dn: %s'%dn, 'changetype: add'] |
|
158 for key, values in mods.iteritems(): |
|
159 if isinstance(values, basestring): |
|
160 values = [values] |
|
161 for value in values: |
|
162 modcmd.append('%s: %s'%(key, value)) |
|
163 self._ldapmodify(modcmd) |
154 |
164 |
155 def delete_ldap_entry(self, dn): |
165 def delete_ldap_entry(self, dn): |
156 """ |
166 """ |
157 delete an LDAP entity |
167 delete an LDAP entity |
158 """ |
168 """ |
326 self.assertEqual(self.execute('Any N WHERE U login "syt", ' |
336 self.assertEqual(self.execute('Any N WHERE U login "syt", ' |
327 'U in_state S, S name N').rows[0][0], |
337 'U in_state S, S name N').rows[0][0], |
328 'deactivated') |
338 'deactivated') |
329 # check that it doesn't choke |
339 # check that it doesn't choke |
330 self.pull() |
340 self.pull() |
331 # reset the ldap database |
341 # reinsert syt |
332 self.tearDownClass() |
342 self.add_ldap_entry('uid=syt,ou=People,dc=cubicweb,dc=test', |
333 self.setUpClass() |
343 { 'objectClass': ['OpenLDAPperson','posixAccount','top','shadowAccount'], |
|
344 'cn': 'Sylvain Thenault', |
|
345 'sn': 'Thenault', |
|
346 'gidNumber': '1004', |
|
347 'uid': 'syt', |
|
348 'homeDirectory': '/home/syt', |
|
349 'shadowFlag': '134538764', |
|
350 'uidNumber': '1004', |
|
351 'givenName': 'Sylvain', |
|
352 'telephoneNumber': '106', |
|
353 'displayName': 'sthenault', |
|
354 'gecos': 'Sylvain Thenault', |
|
355 'mail': ['sylvain.thenault@logilab.fr','syt@logilab.fr'], |
|
356 'userPassword': 'syt', |
|
357 }) |
334 self.pull() |
358 self.pull() |
335 self.assertEqual(self.execute('Any N WHERE U login "syt", ' |
359 self.assertEqual(self.execute('Any N WHERE U login "syt", ' |
336 'U in_state S, S name N').rows[0][0], |
360 'U in_state S, S name N').rows[0][0], |
337 'activated') |
361 'activated') |
338 |
362 |