ldap: add external_id's case-insensitive comparison (#27147)

This commit is contained in:
Serghei Mihai 2018-10-25 23:36:43 +02:00
parent ff10b27cb0
commit d90e060069
2 changed files with 13 additions and 1 deletions

View File

@ -837,7 +837,7 @@ class LDAPBackend(object):
try:
log.debug('lookup using external_id %r: %r', eid_tuple, external_id)
return LDAPUser.objects.prefetch_related('groups').get(
userexternalid__external_id=external_id, userexternalid__source=block['realm'])
userexternalid__external_id__iexact=external_id, userexternalid__source=block['realm'])
except User.DoesNotExist:
pass

View File

@ -404,6 +404,18 @@ def test_get_users(slapd, settings):
assert save.call_count == 3
assert bulk_create.call_count == 1
# uppercase user uid in the directory and check that no new user is created
conn = slapd.get_connection_admin()
ldif = [(ldap.MOD_REPLACE, 'uid', UID.upper())]
conn.modify_s(DN, ldif)
save.reset_mock()
bulk_create.reset_mock()
users = list(ldap_backend.LDAPBackend.get_users())
assert len(users) == 101
assert User.objects.count() == 101
assert save.call_count == 0
assert bulk_create.call_count == 0
@pytest.mark.django_db
def test_set_mandatory_roles(slapd, settings):