]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Test updating memberof config works
authorOndřej Kuzník <ondra@openldap.org>
Fri, 11 Jan 2019 15:15:07 +0000 (15:15 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 14 Jan 2019 18:55:00 +0000 (18:55 +0000)
tests/data/memberof.out
tests/scripts/test052-memberof

index 32691bb33c6955e60e081eba17910804f05fd7d5..82fb924f8dd4620bdd1166a5cf8d44286f0f65f4 100644 (file)
@@ -294,3 +294,48 @@ cn: person2
 sn: person2
 memberOfB: cn=group2,ou=Groups,dc=example,dc=com
 
+# Re-search the entire database after updating memberof configuration...
+dn: dc=example,dc=com
+objectClass: organization
+objectClass: dcObject
+o: Example, Inc.
+dc: example
+
+dn: cn=group1,ou=Groups,dc=example,dc=com
+objectClass: groupA
+cn: group1
+memberA: cn=person1,ou=People,dc=example,dc=com
+memberA: cn=person2,ou=People,dc=example,dc=com
+
+dn: cn=group2,ou=Groups,dc=example,dc=com
+objectClass: groupB
+cn: group2
+memberB: cn=person1,ou=People,dc=example,dc=com
+memberB: cn=person2,ou=People,dc=example,dc=com
+
+dn: ou=Groups,dc=example,dc=com
+objectClass: organizationalUnit
+ou: Groups
+
+dn: ou=People,dc=example,dc=com
+objectClass: organizationalUnit
+ou: People
+
+dn: cn=person1,ou=People,dc=example,dc=com
+objectClass: person
+objectClass: groupMemberA
+objectClass: groupMemberB
+cn: person1
+sn: person1
+memberOfB: cn=group2,ou=Groups,dc=example,dc=com
+memberOfC: cn=group1,ou=Groups,dc=example,dc=com
+
+dn: cn=person2,ou=People,dc=example,dc=com
+objectClass: person
+objectClass: groupMemberA
+objectClass: groupMemberB
+cn: person2
+sn: person2
+memberOfB: cn=group2,ou=Groups,dc=example,dc=com
+memberOfC: cn=group1,ou=Groups,dc=example,dc=com
+
index 04cef2c56bd8808194fb80ab0f93d408cf7df874..bb0e1270410318ad918b06bd22772675c0c1c88c 100755 (executable)
@@ -94,10 +94,12 @@ olcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.3
  NAME 'memberB' SUP distinguishedName )
 olcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.4 
  NAME 'memberOfB' SUP distinguishedName )
+olcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.5
+ NAME 'memberOfC' SUP distinguishedName )
 olcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.1 
  NAME 'groupA' SUP top STRUCTURAL MUST cn MAY memberA )
 olcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.2 
- NAME 'groupMemberA' SUP top AUXILIARY MAY memberOfA )
+ NAME 'groupMemberA' SUP top AUXILIARY MAY ( memberOfA $ memberOfC ) )
 olcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.3 
  NAME 'groupB' SUP top STRUCTURAL MUST cn MAY memberB )
 olcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.4 
@@ -391,6 +393,51 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
+echo "Running ldapmodify to reconfigure the schema used..."
+$LDAPADD -h $LOCALHOST -p $PORT1 -D 'cn=config' -w `cat $CONFIGPWF` \
+       >> $TESTOUT 2>&1 <<EOF
+dn: olcOverlay={1}memberof,olcDatabase={1}$BACKEND,cn=config
+changetype: modify
+replace: olcMemberOfMemberOfAD
+olcMemberOfMemberOfAD: memberOfC
+
+EOF
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapadd failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit $RC
+fi
+
+echo "Updating groups to expose the new setting..."
+$LDAPMODIFY -h $LOCALHOST -p $PORT1 \
+       -D "cn=Manager,$BASEDN" -w secret \
+       >> $TESTOUT 2>&1 <<EOF
+dn: cn=group1,ou=Groups,$BASEDN
+changetype: modify
+add: memberA
+memberA: cn=person1,ou=People,$BASEDN
+memberA: cn=person2,ou=People,$BASEDN
+
+EOF
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapmodify failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit $RC
+fi
+
+echo "Re-search the entire database..."
+echo "# Re-search the entire database after updating memberof configuration..." >> $SEARCHOUT
+$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
+       '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit $RC
+fi
+
 test $KILLSERVERS != no && kill -HUP $KILLPIDS
 
 LDIF=$MEMBEROFOUT