Files
bambuddy/backend/tests
maziggy d8d637cbfe Survive a directory that defines no posixGroup class (#2769)
Every LDAP user on an lldap directory was rejected with "Incorrect
    username or password", on an install where Test Connection passed and
    where the same bind DN, filter and group membership all checked out
    under ldapsearch. The directory never saw the request.

    _extract_user_info searches for POSIX groups alongside the memberOf
    ones, and both of those filters name the posixGroup object class. ldap3
    fetches the schema at connect time (get_info=ALL) and validates class
    names in a filter against it while building the request, raising
    LDAPObjectClassError before anything is sent. lldap marks every account
    it creates as posixAccount -- which is what makes us look for POSIX
    groups at all -- but defines no group class beyond groupOfNames. The
    exception escaped authenticate_ldap_user, and the login route reports
    any LDAP failure as bad credentials.

    A directory with no posixGroup class has no posixGroup entries, which is
    exactly the answer those searches would have returned. Catch it, log it
    once, and carry on with the memberOf groups collected above. Both
    searches sit inside the one try: they name the same class, so once one
    is rejected the other cannot succeed, and attempting it would only
    produce a second identical exception to swallow.

    Not a regression from 848f55810. The memberUid filter has named the
    class since b6599dd41 and runs for every user whether or not they have a
    gidNumber, so a directory of this shape has never been able to log in;
    the primary-group lookup only added a second trigger. Test Connection
    was unaffected throughout because (objectClass=*) is a presence filter
    and never reaches the value validator.

    The mock connection gained a hook that raises on a filter substring,
    standing in for that client-side validation. Reset in the fixture and
    default None, so existing tests are unchanged.
2026-08-15 14:20:07 +02:00
..