Projet

Général

Profil

0001-use-get_by_email-for-ldap-email-lookup-67600.patch

Thomas Noël, 21 juillet 2022 14:58

Télécharger (2,39 ko)

Voir les différences:

Subject: [PATCH] use get_by_email for ldap email lookup (#67600)

 src/authentic2/backends/ldap_backend.py |  2 +-
 tests/test_ldap.py                      | 25 ++++++++++++++++++++++++-
 2 files changed, 25 insertions(+), 2 deletions(-)
src/authentic2/backends/ldap_backend.py
1383 1383
        Lock.lock_email(email)
1384 1384
        try:
1385 1385
            log.debug('ldap: lookup using email %r', email)
1386
            return self._lookup_user_queryset(block=block).get(ou=ou, email=email)
1386
            return self._lookup_user_queryset(block=block).filter(ou=ou).get_by_email(email)
1387 1387
        except LDAPUser.DoesNotExist:
1388 1388
            return None
1389 1389
        except LDAPUser.MultipleObjectsReturned:
tests/test_ldap.py
771 771
            'group_to_role_mapping': [
772 772
                ['cn=unknown,o=dn', ['Role2']],
773 773
            ],
774
            'lookups': ['external_id', 'username'],
774
            'lookups': ['external_id', 'username', 'email'],
775 775
        }
776 776
    ]
777 777
    save = mock.Mock(wraps=ldap_backend.LDAPUser.save)
......
840 840
    assert len(users) == 6
841 841
    assert ldap_backend.LDAPUser.objects.filter(username='%s' % UID.capitalize()).count() == 0
842 842

  
843
    # email lookup : add an user with uppercase email in the directory
844
    # and check that no new user is created
845
    ldif = '''
846
dn: uid=upperemail,o=ôrga
847
objectClass: inetOrgPerson
848
userPassword: pass
849
uid: upperemail
850
cn: Upper Email
851
sn: Upper
852
gn: Email
853
mail: {email}
854
o: EO
855
o: EE
856
'''.format(
857
        email=EMAIL.upper(),
858
    )
859
    slapd.add_ldif(ldif)
860
    conn = slapd.get_connection_admin()
861
    save.reset_mock()
862
    bulk_create.reset_mock()
863
    users = list(ldap_backend.LDAPBackend.get_users())
864
    assert User.objects.count() == 6
865

  
843 866

  
844 867
def test_set_mandatory_roles(slapd, settings, db):
845 868
    Role.objects.get_or_create(name='tech')
846
-