12de962bdSlukem#! /bin/sh 2d11b170bStron# $OpenLDAP$ 32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 42de962bdSlukem## 5*e670fd5cSchristos## Copyright 1998-2021 The OpenLDAP Foundation. 62de962bdSlukem## All rights reserved. 72de962bdSlukem## 82de962bdSlukem## Redistribution and use in source and binary forms, with or without 92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP 102de962bdSlukem## Public License. 112de962bdSlukem## 122de962bdSlukem## A copy of this license is available in the file LICENSE in the 132de962bdSlukem## top-level directory of the distribution or, alternatively, at 142de962bdSlukem## <http://www.OpenLDAP.org/license.html>. 152de962bdSlukem 162de962bdSlukemecho "running defines.sh" 172de962bdSlukem. $SRCDIR/scripts/defines.sh 182de962bdSlukem 192de962bdSlukemif test $MEMBEROF = memberofno; then 202de962bdSlukem echo "Memberof overlay not available, test skipped" 212de962bdSlukem exit 0 222de962bdSlukemfi 232de962bdSlukem 242de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $TESTDIR/confdir 252de962bdSlukem 262de962bdSlukem$SLAPPASSWD -g -n >$CONFIGPWF 272de962bdSlukemecho "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf 282de962bdSlukem 292de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..." 30*e670fd5cSchristos. $CONFFILTER $BACKEND < $NAKEDCONF > $CONF1 31*e670fd5cSchristos$SLAPD -f $CONF1 -F $TESTDIR/confdir -h $URI1 -d $LVL > $LOG1 2>&1 & 322de962bdSlukemPID=$! 332de962bdSlukemif test $WAIT != 0 ; then 342de962bdSlukem echo PID $PID 352de962bdSlukem read foo 362de962bdSlukemfi 372de962bdSlukemKILLPIDS="$PID" 382de962bdSlukem 392de962bdSlukemsleep 1 402de962bdSlukemfor i in 0 1 2 3 4 5; do 41*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 422de962bdSlukem 'objectclass=*' > /dev/null 2>&1 432de962bdSlukem RC=$? 442de962bdSlukem if test $RC = 0 ; then 452de962bdSlukem break 462de962bdSlukem fi 472de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 482de962bdSlukem sleep 5 492de962bdSlukemdone 502de962bdSlukemif test $RC != 0 ; then 512de962bdSlukem echo "ldapsearch failed ($RC)!" 522de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 532de962bdSlukem exit $RC 542de962bdSlukemfi 552de962bdSlukem 562de962bdSlukemcat /dev/null > $TESTOUT 572de962bdSlukem 582de962bdSlukemif [ "$MEMBEROF" = memberofmod ]; then 59d11b170bStron echo "Inserting memberof overlay on provider..." 602de962bdSlukem $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF > $TESTOUT 2>&1 612de962bdSlukemdn: cn=module,cn=config 622de962bdSlukemobjectClass: olcModuleList 632de962bdSlukemcn: module 642de962bdSlukemolcModulePath: ../servers/slapd/overlays 652de962bdSlukemolcModuleLoad: memberof.la 662de962bdSlukemEOF 672de962bdSlukem RC=$? 682de962bdSlukem if test $RC != 0 ; then 692de962bdSlukem echo "ldapadd failed for moduleLoad ($RC)!" 702de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 712de962bdSlukem exit $RC 722de962bdSlukem fi 732de962bdSlukemfi 742de962bdSlukem 75*e670fd5cSchristosindexInclude="" mainInclude="" nullExclude="" 76d11b170bStrontest $INDEXDB = indexdb || indexInclude="# " 77d11b170bStrontest $MAINDB = maindb || mainInclude="# " 78ef2f90d3Sadamcase $BACKEND in 79ef2f90d3Sadamnull) nullExclude="# " ;; 80ef2f90d3Sadamesac 81ef2f90d3Sadam 822de962bdSlukemecho "Running ldapadd to build slapd config database..." 83*e670fd5cSchristos$LDAPADD -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 842de962bdSlukem >> $TESTOUT 2>&1 <<EOF 854e6df137Slukemdn: cn=symas group example,cn=schema,cn=config 864e6df137SlukemobjectClass: olcSchemaConfig 874e6df137Slukemcn: symas group example 884e6df137SlukemolcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.1 894e6df137Slukem NAME 'memberA' SUP distinguishedName ) 904e6df137SlukemolcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.2 914e6df137Slukem NAME 'memberOfA' SUP distinguishedName ) 924e6df137SlukemolcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.3 934e6df137Slukem NAME 'memberB' SUP distinguishedName ) 944e6df137SlukemolcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.4 954e6df137Slukem NAME 'memberOfB' SUP distinguishedName ) 964e27b3e8SchristosolcAttributeTypes: ( 1.3.6.1.4.1.4754.31.1.5 974e27b3e8Schristos NAME 'memberOfC' SUP distinguishedName ) 984e6df137SlukemolcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.1 994e6df137Slukem NAME 'groupA' SUP top STRUCTURAL MUST cn MAY memberA ) 1004e6df137SlukemolcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.2 1014e27b3e8Schristos NAME 'groupMemberA' SUP top AUXILIARY MAY ( memberOfA $ memberOfC ) ) 1024e6df137SlukemolcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.3 1034e6df137Slukem NAME 'groupB' SUP top STRUCTURAL MUST cn MAY memberB ) 1044e6df137SlukemolcObjectClasses: ( 1.3.6.1.4.1.4754.31.2.4 1054e6df137Slukem NAME 'groupMemberB' SUP top AUXILIARY MAY memberOfB ) 1064e6df137Slukem 1072de962bdSlukemdn: olcDatabase={1}$BACKEND,cn=config 1082de962bdSlukemobjectClass: olcDatabaseConfig 109ef2f90d3Sadam${nullExclude}objectClass: olc${BACKEND}Config 1102de962bdSlukemolcDatabase: {1}$BACKEND 1112de962bdSlukemolcSuffix: $BASEDN 1122de962bdSlukemolcRootDN: cn=Manager,$BASEDN 1132de962bdSlukemolcRootPW:: c2VjcmV0 1142de962bdSlukemolcMonitoring: TRUE 115ef2f90d3Sadam${nullExclude}olcDbDirectory: $TESTDIR/db.1.a/ 116d11b170bStron${indexInclude}olcDbIndex: objectClass eq 117d11b170bStron${indexInclude}olcDbIndex: cn pres,eq,sub 118d11b170bStron${indexInclude}olcDbIndex: uid pres,eq,sub 119d11b170bStron${indexInclude}olcDbIndex: sn pres,eq,sub 120d11b170bStron${mainInclude}olcDbMode: 384" 1212de962bdSlukem 1222de962bdSlukemdn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config 1232de962bdSlukemobjectClass: olcOverlayConfig 124*e670fd5cSchristosobjectClass: olcMemberOfConfig 1252de962bdSlukemolcOverlay: {0}memberof 1262de962bdSlukemolcMemberOfRefInt: TRUE 1272de962bdSlukemolcMemberOfGroupOC: groupOfNames 1282de962bdSlukemolcMemberOfMemberAD: member 1292de962bdSlukemolcMemberOfMemberOfAD: memberOf 1304e6df137Slukem 1314e6df137Slukemdn: olcOverlay={1}memberof,olcDatabase={1}$BACKEND,cn=config 1324e6df137SlukemobjectClass: olcOverlayConfig 133*e670fd5cSchristosobjectClass: olcMemberOfConfig 1344e6df137SlukemolcOverlay: {1}memberof 1354e6df137SlukemolcMemberOfRefInt: TRUE 1364e6df137SlukemolcMemberOfGroupOC: groupA 1374e6df137SlukemolcMemberOfMemberAD: memberA 1384e6df137SlukemolcMemberOfMemberOfAD: memberOfA 1394e6df137Slukem 1404e6df137Slukemdn: olcOverlay={2}memberof,olcDatabase={1}$BACKEND,cn=config 1414e6df137SlukemobjectClass: olcOverlayConfig 142*e670fd5cSchristosobjectClass: olcMemberOfConfig 1434e6df137SlukemolcOverlay: {2}memberof 1444e6df137SlukemolcMemberOfRefInt: TRUE 1454e6df137SlukemolcMemberOfGroupOC: groupB 1464e6df137SlukemolcMemberOfMemberAD: memberB 1474e6df137SlukemolcMemberOfMemberOfAD: memberOfB 1484e6df137Slukem 1492de962bdSlukemEOF 1502de962bdSlukemRC=$? 1512de962bdSlukemif test $RC != 0 ; then 1522de962bdSlukem echo "ldapadd failed ($RC)!" 1532de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1542de962bdSlukem exit $RC 1552de962bdSlukemfi 1562de962bdSlukem 1572de962bdSlukemecho "Running ldapadd to build slapd database..." 158*e670fd5cSchristos$LDAPADD -H $URI1 \ 1592de962bdSlukem -D "cn=Manager,$BASEDN" -w secret \ 1602de962bdSlukem >> $TESTOUT 2>&1 << EOF 1612de962bdSlukemdn: $BASEDN 1622de962bdSlukemobjectClass: organization 1632de962bdSlukemobjectClass: dcObject 1642de962bdSlukemo: Example, Inc. 1652de962bdSlukemdc: example 1662de962bdSlukem 1672de962bdSlukemdn: ou=People,$BASEDN 1682de962bdSlukemobjectClass: organizationalUnit 1692de962bdSlukemou: People 1702de962bdSlukem 1712de962bdSlukemdn: ou=Groups,$BASEDN 1722de962bdSlukemobjectClass: organizationalUnit 1732de962bdSlukemou: Groups 1742de962bdSlukem 1752de962bdSlukemdn: cn=Roger Rabbit,ou=People,$BASEDN 1762de962bdSlukemobjectClass: inetOrgPerson 1772de962bdSlukemcn: Roger Rabbit 1782de962bdSlukemsn: Rabbit 1792de962bdSlukem 1802de962bdSlukemdn: cn=Baby Herman,ou=People,$BASEDN 1812de962bdSlukemobjectClass: inetOrgPerson 1822de962bdSlukemcn: Baby Herman 1832de962bdSlukemsn: Herman 1842de962bdSlukem 1852de962bdSlukemdn: cn=Cartoonia,ou=Groups,$BASEDN 1862de962bdSlukemobjectClass: groupOfNames 1872de962bdSlukemcn: Cartoonia 1882de962bdSlukemmember: cn=Roger Rabbit,ou=People,$BASEDN 1892de962bdSlukemmember: cn=Baby Herman,ou=People,$BASEDN 1902de962bdSlukemEOF 1912de962bdSlukemRC=$? 1922de962bdSlukemif test $RC != 0 ; then 1932de962bdSlukem echo "ldapadd failed ($RC)!" 1942de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1952de962bdSlukem exit $RC 1962de962bdSlukemfi 1972de962bdSlukem 1982de962bdSlukemecho "Search the entire database..." 1992de962bdSlukemecho "# Search the entire database..." >> $SEARCHOUT 200*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 2012de962bdSlukem '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 2022de962bdSlukemRC=$? 2032de962bdSlukemif test $RC != 0 ; then 2042de962bdSlukem echo "ldapsearch failed ($RC)!" 2052de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2062de962bdSlukem exit $RC 2072de962bdSlukemfi 2082de962bdSlukem 2092de962bdSlukemecho "Running ldapmodify to add a member..." 210*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 2112de962bdSlukem -D "cn=Manager,$BASEDN" -w secret \ 2122de962bdSlukem >> $TESTOUT 2>&1 << EOF 2132de962bdSlukemdn: cn=Jessica Rabbit,ou=People,$BASEDN 2142de962bdSlukemchangetype: add 2152de962bdSlukemobjectClass: inetOrgPerson 2162de962bdSlukemcn: Jessica Rabbit 2172de962bdSlukemsn: Rabbit 2182de962bdSlukem 2192de962bdSlukemdn: cn=Cartoonia,ou=Groups,$BASEDN 2202de962bdSlukemchangetype: modify 2212de962bdSlukemadd: member 2222de962bdSlukemmember: cn=Jessica Rabbit,ou=People,$BASEDN 2232de962bdSlukemEOF 2242de962bdSlukem 2252de962bdSlukemecho "Re-search the entire database..." 226d11b170bStronecho "# Re-search the entire database after adding Jessica Rabbit and Cartoonia..." >> $SEARCHOUT 227*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 228d11b170bStron '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 229d11b170bStronRC=$? 230d11b170bStronif test $RC != 0 ; then 231d11b170bStron echo "ldapsearch failed ($RC)!" 232d11b170bStron test $KILLSERVERS != no && kill -HUP $KILLPIDS 233d11b170bStron exit $RC 234d11b170bStronfi 235d11b170bStron 236d11b170bStronecho "Running ldapmodify to rename a member..." 237*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 238d11b170bStron -D "cn=Manager,$BASEDN" -w secret \ 239d11b170bStron >> $TESTOUT 2>&1 << EOF 240d11b170bStrondn: cn=Baby Herman,ou=People,$BASEDN 241d11b170bStronchangetype: modrdn 242d11b170bStronnewrdn: cn=Baby Herman Jr 243d11b170bStrondeleteoldrdn: 1 244d11b170bStronEOF 245d11b170bStron 246d11b170bStronecho "Re-search the entire database..." 247d11b170bStronecho "# Re-search the entire database after renaming Baby Herman..." >> $SEARCHOUT 248*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 249d11b170bStron '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 250d11b170bStronRC=$? 251d11b170bStronif test $RC != 0 ; then 252d11b170bStron echo "ldapsearch failed ($RC)!" 253d11b170bStron test $KILLSERVERS != no && kill -HUP $KILLPIDS 254d11b170bStron exit $RC 255d11b170bStronfi 256d11b170bStron 257d11b170bStronecho "Running ldapmodify to rename a group..." 258*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 259d11b170bStron -D "cn=Manager,$BASEDN" -w secret \ 260d11b170bStron >> $TESTOUT 2>&1 << EOF 261d11b170bStrondn: cn=Cartoonia,ou=Groups,$BASEDN 262d11b170bStronchangetype: modrdn 2634e27b3e8Schristosnewrdn: cn=Toon town 2644e27b3e8Schristosdeleteoldrdn: 1 2654e27b3e8Schristos 2664e27b3e8Schristosdn: cn=Toon town,ou=Groups,$BASEDN 2674e27b3e8Schristoschangetype: modrdn 268d11b170bStronnewrdn: cn=Toon Town 269d11b170bStrondeleteoldrdn: 1 270d11b170bStronEOF 271d11b170bStron 272d11b170bStronecho "Re-search the entire database..." 273d11b170bStronecho "# Re-search the entire database after renaming Cartoonia..." >> $SEARCHOUT 274*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 2752de962bdSlukem '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 2762de962bdSlukemRC=$? 2772de962bdSlukemif test $RC != 0 ; then 2782de962bdSlukem echo "ldapsearch failed ($RC)!" 2792de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2802de962bdSlukem exit $RC 2812de962bdSlukemfi 2822de962bdSlukem 2832de962bdSlukemecho "Running ldapmodify to add self..." 284*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 2852de962bdSlukem -D "cn=Manager,$BASEDN" -w secret \ 2862de962bdSlukem >> $TESTOUT 2>&1 << EOF 287d11b170bStrondn: cn=Toon Town,ou=Groups,$BASEDN 2882de962bdSlukemchangetype: modify 2892de962bdSlukemadd: member 290d11b170bStronmember: cn=Toon Town,ou=Groups,$BASEDN 2912de962bdSlukemEOF 2922de962bdSlukem 2932de962bdSlukemecho "Re-search the entire database..." 294d11b170bStronecho "# Re-search the entire database after adding Toon Town to self..." >> $SEARCHOUT 295*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 2962de962bdSlukem '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 2972de962bdSlukemRC=$? 2982de962bdSlukemif test $RC != 0 ; then 2992de962bdSlukem echo "ldapsearch failed ($RC)!" 3002de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3012de962bdSlukem exit $RC 3022de962bdSlukemfi 3032de962bdSlukem 3042de962bdSlukemecho "Running ldapdelete to remove a member..." 305*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 3062de962bdSlukem -D "cn=Manager,$BASEDN" -w secret \ 3072de962bdSlukem >> $TESTOUT 2>&1 << EOF 308d11b170bStrondn: cn=Baby Herman Jr,ou=People,$BASEDN 3092de962bdSlukemchangetype: delete 3102de962bdSlukemEOF 3112de962bdSlukem 3122de962bdSlukemecho "Re-search the entire database..." 313d11b170bStronecho "# Re-search the entire database after deleting Baby Herman..." >> $SEARCHOUT 314*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 315d11b170bStron '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 316d11b170bStronRC=$? 317d11b170bStronif test $RC != 0 ; then 318d11b170bStron echo "ldapsearch failed ($RC)!" 319d11b170bStron test $KILLSERVERS != no && kill -HUP $KILLPIDS 320d11b170bStron exit $RC 321d11b170bStronfi 322d11b170bStron 323d11b170bStronecho "Running ldapdelete to remove a group..." 324*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 325d11b170bStron -D "cn=Manager,$BASEDN" -w secret \ 326d11b170bStron >> $TESTOUT 2>&1 << EOF 327d11b170bStrondn: cn=Toon Town,ou=Groups,$BASEDN 328d11b170bStronchangetype: delete 329d11b170bStronEOF 330d11b170bStron 331d11b170bStronecho "Re-search the entire database..." 332d11b170bStronecho "# Re-search the entire database after deleting Toon Town..." >> $SEARCHOUT 333*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 3342de962bdSlukem '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 3352de962bdSlukemRC=$? 3362de962bdSlukemif test $RC != 0 ; then 3372de962bdSlukem echo "ldapsearch failed ($RC)!" 3382de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3392de962bdSlukem exit $RC 3402de962bdSlukemfi 3412de962bdSlukem 3424e6df137Slukemecho "Adding groups with MAY member type schemas..." 343*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 3444e6df137Slukem -D "cn=Manager,$BASEDN" -w secret \ 3454e6df137Slukem >> $TESTOUT 2>&1 <<EOF 3464e6df137Slukemdn: cn=Roger Rabbit,ou=People,$BASEDN 3474e6df137Slukemchangetype: delete 3484e6df137Slukem 3494e6df137Slukemdn: cn=Jessica Rabbit,ou=People,$BASEDN 3504e6df137Slukemchangetype: delete 3514e6df137Slukem 3524e6df137Slukemdn: cn=person1,ou=People,$BASEDN 3534e6df137Slukemchangetype: add 3544e6df137SlukemobjectClass: person 3554e6df137SlukemobjectClass: groupMemberA 3564e6df137SlukemobjectClass: groupMemberB 3574e6df137Slukemcn: person1 3584e6df137Slukemsn: person1 3594e6df137Slukem 3604e6df137Slukemdn: cn=person2,ou=People,$BASEDN 3614e6df137Slukemchangetype: add 3624e6df137SlukemobjectClass: person 3634e6df137SlukemobjectClass: groupMemberA 3644e6df137SlukemobjectClass: groupMemberB 3654e6df137Slukemcn: person2 3664e6df137Slukemsn: person2 3674e6df137Slukem 3684e6df137Slukemdn: cn=group1,ou=Groups,$BASEDN 3694e6df137Slukemchangetype: add 3704e6df137Slukemobjectclass: groupA 3714e6df137Slukemcn: group1 3724e6df137SlukemmemberA: cn=person1,ou=People,$BASEDN 3734e6df137SlukemmemberA: cn=person2,ou=People,$BASEDN 3744e6df137Slukem 3754e6df137Slukemdn: cn=group2,ou=Groups,$BASEDN 3764e6df137Slukemchangetype: add 3774e6df137Slukemobjectclass: groupB 3784e6df137Slukemcn: group2 3794e6df137SlukemmemberB: cn=person1,ou=People,$BASEDN 3804e6df137SlukemmemberB: cn=person2,ou=People,$BASEDN 3814e6df137Slukem 3824e6df137Slukemdn: cn=group1,ou=Groups,$BASEDN 3834e6df137Slukemchangetype: modify 3844e6df137Slukemdelete: memberA 3854e6df137Slukem 3864e6df137SlukemEOF 3874e6df137Slukem 3884e6df137Slukemecho "Re-search the entire database..." 389d11b170bStronecho "# Re-search the entire database after adding groups with MAY member type schemas..." >> $SEARCHOUT 390*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 3914e6df137Slukem '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 3924e6df137SlukemRC=$? 3934e6df137Slukemif test $RC != 0 ; then 3944e6df137Slukem echo "ldapsearch failed ($RC)!" 3954e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3964e6df137Slukem exit $RC 3974e6df137Slukemfi 3984e6df137Slukem 3994e27b3e8Schristosecho "Running ldapmodify to reconfigure the schema used..." 400*e670fd5cSchristos$LDAPADD -H $URI1 -D 'cn=config' -w `cat $CONFIGPWF` \ 4014e27b3e8Schristos >> $TESTOUT 2>&1 <<EOF 4024e27b3e8Schristosdn: olcOverlay={1}memberof,olcDatabase={1}$BACKEND,cn=config 4034e27b3e8Schristoschangetype: modify 4044e27b3e8Schristosreplace: olcMemberOfMemberOfAD 4054e27b3e8SchristosolcMemberOfMemberOfAD: memberOfC 4064e27b3e8Schristos 4074e27b3e8SchristosEOF 4084e27b3e8SchristosRC=$? 4094e27b3e8Schristosif test $RC != 0 ; then 4104e27b3e8Schristos echo "ldapadd failed ($RC)!" 4114e27b3e8Schristos test $KILLSERVERS != no && kill -HUP $KILLPIDS 4124e27b3e8Schristos exit $RC 4134e27b3e8Schristosfi 4144e27b3e8Schristos 4154e27b3e8Schristosecho "Updating groups to expose the new setting..." 416*e670fd5cSchristos$LDAPMODIFY -H $URI1 \ 4174e27b3e8Schristos -D "cn=Manager,$BASEDN" -w secret \ 4184e27b3e8Schristos >> $TESTOUT 2>&1 <<EOF 4194e27b3e8Schristosdn: cn=group1,ou=Groups,$BASEDN 4204e27b3e8Schristoschangetype: modify 4214e27b3e8Schristosadd: memberA 4224e27b3e8SchristosmemberA: cn=person1,ou=People,$BASEDN 4234e27b3e8SchristosmemberA: cn=person2,ou=People,$BASEDN 4244e27b3e8Schristos 4254e27b3e8SchristosEOF 4264e27b3e8SchristosRC=$? 4274e27b3e8Schristosif test $RC != 0 ; then 4284e27b3e8Schristos echo "ldapmodify failed ($RC)!" 4294e27b3e8Schristos test $KILLSERVERS != no && kill -HUP $KILLPIDS 4304e27b3e8Schristos exit $RC 4314e27b3e8Schristosfi 4324e27b3e8Schristos 4334e27b3e8Schristosecho "Re-search the entire database..." 4344e27b3e8Schristosecho "# Re-search the entire database after updating memberof configuration..." >> $SEARCHOUT 435*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 4364e27b3e8Schristos '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1 4374e27b3e8SchristosRC=$? 4384e27b3e8Schristosif test $RC != 0 ; then 4394e27b3e8Schristos echo "ldapsearch failed ($RC)!" 4404e27b3e8Schristos test $KILLSERVERS != no && kill -HUP $KILLPIDS 4414e27b3e8Schristos exit $RC 4424e27b3e8Schristosfi 4434e27b3e8Schristos 4442de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 4452de962bdSlukem 4462de962bdSlukemLDIF=$MEMBEROFOUT 4472de962bdSlukem 4482de962bdSlukemecho "Filtering ldapsearch results..." 449ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 4502de962bdSlukemecho "Filtering original ldif used to create database..." 451ef2f90d3Sadam$LDIFFILTER < $LDIF > $LDIFFLT 4522de962bdSlukemecho "Comparing filter output..." 4532de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 4542de962bdSlukem 4552de962bdSlukemif test $? != 0 ; then 4562de962bdSlukem echo "Comparison failed" 4572de962bdSlukem exit 1 4582de962bdSlukemfi 4592de962bdSlukem 4602de962bdSlukemecho ">>>>> Test succeeded" 4612de962bdSlukem 4622de962bdSlukemtest $KILLSERVERS != no && wait 4632de962bdSlukem 4642de962bdSlukemexit 0 465