ldap: always report count of synchronized users (#61128)

This commit is contained in:
Benjamin Dauvergne 2022-01-27 12:20:22 +01:00
parent ebab6fbf4c
commit 1a446f7c75
2 changed files with 7 additions and 6 deletions

View File

@ -896,7 +896,6 @@ class LDAPBackend:
"""Retrieve group DNs from the LDAP by attributes (memberOf) or by
filter.
"""
ldap_uri = conn.get_option(ldap.OPT_URI)
group_base_dn = block['group_basedn'] or block['basedn']
member_of_attribute = block['member_of_attribute']
group_filter = block['group_filter']
@ -1470,9 +1469,7 @@ class LDAPBackend:
conn, user_basedn, ldap.SCOPE_SUBTREE, user_filter, attrlist=attribute_names
)
backend = cls()
count = 0
for dn, attrs in results:
count += 1
user = backend._return_user(dn, None, conn, block, attrs)
if not user:
log.warning('unable to retrieve user for dn %s', dn)
@ -1486,7 +1483,6 @@ class LDAPBackend:
', '.join('%s=%s' % (k, v) for k, v in attrs.items()),
)
yield user
log.info('Search for %s returned %s users.', user_filter, count)
@classmethod
def get_users(cls, realm=None):
@ -1497,10 +1493,15 @@ class LDAPBackend:
for block in blocks:
if realm and realm != block['realm']:
continue
count = 0
try:
yield from cls.get_users_for_block(block)
for user in cls.get_users_for_block(block):
count += 1
yield user
except ldap.LDAPError as e:
log.error('synchronization failed on an LDAP error: "%s"', e)
user_filter = cls.get_sync_ldap_user_filter(block)
log.info('Search for %s returned %s users.', user_filter, count)
@classmethod
def deactivate_orphaned_users(cls):

View File

@ -1810,7 +1810,7 @@ def test_sync_ldap_users(mocked_emit, slapd, settings, app, db):
% User.objects.first().uuid
)
assert (
mocked_emit.call_args_list[-1][0][0].getMessage() == 'Search for (|(mail=*)(uid=*)) returned 7 users.'
mocked_emit.call_args_list[-1][0][0].getMessage() == 'Search for (|(mail=*)(uid=*)) returned 6 users.'
)
assert User.objects.count() == 6