[Date Prev][Date Next] [Chronological] [Thread] [Top]

Objectclass inheritance mechanism in queries doesn't seem to work (ITS#2053)



Full_Name: M.-A. DARCHE
Version: 2.1.4
OS: GNU/Linux
URL: 
Submission from: (NULL) (213.41.87.82)



RFC 2251 has a very short paragraph about objectclass inheritance :
   Each entry MUST have an objectClass attribute.
   ...
   When creating an entry or adding an objectClass value to
   an entry, all superclasses of the named classes are _implicitly_added_
   _as_well_if_not_already_present_, and the client must supply values for
   any mandatory attributes of new superclasses.

So, if an entry present in OpenLDAP has a superclass, querying for the
superclass should return this entry. Right now it doesn't :-(


There is a test in the source code distribution about search, named :
tests/scripts/test003-search
This test is passing, but doesn't contain a "true" case for inheritance
mechanism
testing.

test003-search tests querying, but only after populating with an LDIF content 
that _explicitly_ specifies objectclass attributes, thus invalidating any tests
on
inheritance.
The LDIF content is :
tests/data/test-ordered.ldif

As said, in this LDIF content every OpenLDAPperson entry is _explicitly_
specified
as a person objectclass :

  dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of
Michigan,c=US
  objectclass: top
  objectclass: person
  objectclass: OpenLDAPperson

To exactly test inheritance, just add the following entry at the end of :
tests/data/test-ordered.ldif

  dn: cn=testEntry,ou=Alumni Association,ou=People,o=University of
Michigan,c=US
  objectclass: inetOrgPerson
  cn: testEntry
  sn: Test

And in test003-search, add the following :
echo "Testing inheritance searching..."
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
        '(objectclass=person)'

If OpenLDAP work as I understand it should, we should see the testEntry
entry returned... which is not the case.