diff --git a/uffd/user/models.py b/uffd/user/models.py index 56cc018deb86fdedc211cb656becc2974e2e15d2..277e694260f9c20d83a953db09d36d09ec71a936 100644 --- a/uffd/user/models.py +++ b/uffd/user/models.py @@ -7,7 +7,7 @@ from flask import current_app from uffd import ldap class User(): - def __init__(self, uid=None, loginname='', displayname='', mail='', groups=None, dn=None, uuid=None): + def __init__(self, uid=None, loginname='', displayname='', mail='', groups=None, dn=None, uuid=None): # pylint: disable=too-many-arguments self.uid = uid self.loginname = loginname self.displayname = displayname @@ -30,7 +30,12 @@ class User(): mail=ldapobject['mail'].value, groups=ldap.get_ldap_array_attribute_safe(ldapobject, 'memberOf'), dn=ldapobject.entry_dn, - uuid=ldapobject['entryUUID'].value + # The LDAP mock does not generate UUIDs for newly created LDAP objects, + # so we use a dummy value if the attribute is missing (only for testing!) + uuid=ldapobject['entryUUID'].value \ + if 'entryUUID' in ldapobject.entry_attributes_as_dict \ + or not current_app.config.get('LDAP_SERVICE_MOCK', False) \ + else '00000000-0000-0000-0000-000000000000' ) @classmethod