[ldapfeed] make code compatible with ldap3>=2
* Some constants have been renamed.
* Directly bind when data-cnx-dn/data-cnx-password are provided, some servers,
including ours require this.
* Use raise_exceptions=True to avoid ignored ldap errors
* raise in case of failed anonymous bind
* do not search for "dn" attribute because this raise an "invalid attribute"
with new ldap3 versions
* Password is now returned as bytes, so no longer need to encode them before crypt.
* modification_date is now returned as a datetime object
Co-Authored-By: Philippe Pepiot <philippe.pepiot@logilab.fr>
Closes #16073071
from cubicweb.pyramid.test import PyramidCWTest
from cubicweb.pyramid import tools
class ToolsTest(PyramidCWTest):
anonymous_allowed = True
def test_clone_user(self):
with self.admin_access.repo_cnx() as cnx:
user = cnx.find('CWUser', login='anon').one()
user.login # fill the cache
clone = tools.clone_user(self.repo, user)
self.assertEqual(clone.eid, user.eid)
self.assertEqual(clone.login, user.login)
self.assertEqual(clone.cw_rset.rows, user.cw_rset.rows)
self.assertEqual(clone.cw_rset.rql, user.cw_rset.rql)
def test_cnx_attach_entity(self):
with self.admin_access.repo_cnx() as cnx:
user = cnx.find('CWUser', login='anon').one()
with self.admin_access.repo_cnx() as cnx:
tools.cnx_attach_entity(cnx, user)
self.assertEqual(user.login, 'anon')
if __name__ == '__main__':
from unittest import main
main()