server/test/unittest_ldapsource.py
changeset 9146 9b58a6406a64
parent 9015 65b8236e1bb4
parent 9142 41fb930dc751
child 9283 5f2c5eb1a820
equal deleted inserted replaced
9015:65b8236e1bb4 9146:9b58a6406a64
   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 
   427             self.tearDownClass()
   451             self.tearDownClass()
   428             self.setUpClass()
   452             self.setUpClass()
   429 
   453 
   430 
   454 
   431 
   455 
   432 
       
   433 
       
   434 
       
   435 if __name__ == '__main__':
   456 if __name__ == '__main__':
   436     unittest_main()
   457     unittest_main()