xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test026-dn (revision 274254cdae52594c1aa480a736aef78313d15c9c)
1#! /bin/sh
2## This work is part of OpenLDAP Software <http://www.openldap.org/>.
3##
4## Copyright 2004-2008 The OpenLDAP Foundation.
5## All rights reserved.
6##
7## Redistribution and use in source and binary forms, with or without
8## modification, are permitted only as authorized by the OpenLDAP
9## Public License.
10##
11## A copy of this license is available in the file LICENSE in the
12## top-level directory of the distribution or, alternatively, at
13## <http://www.OpenLDAP.org/license.html>.
14
15echo "running defines.sh"
16. $SRCDIR/scripts/defines.sh
17
18mkdir -p $TESTDIR $DBDIR1
19
20. $CONFFILTER $BACKEND $MONITORDB < $DNCONF > $CONF1
21echo "Starting slapd on TCP/IP port $PORT1..."
22$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
23PID=$!
24if test $WAIT != 0 ; then
25    echo PID $PID
26    read foo
27fi
28KILLPIDS="$PID"
29
30sleep 1
31
32echo "Testing slapd DN parsing..."
33for i in 0 1 2 3 4 5; do
34	$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
35		'objectclass=*' > /dev/null 2>&1
36	RC=$?
37	if test $RC = 0 ; then
38		break
39	fi
40	echo "Waiting 5 seconds for slapd to start..."
41	sleep 5
42done
43
44if test $RC != 0 ; then
45	echo "ldapsearch failed ($RC)!"
46	test $KILLSERVERS != no && kill -HUP $KILLPIDS
47	exit $RC
48fi
49
50echo "Loading database..."
51$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD -c -f $LDIFDN > \
52	$TESTOUT 2>&1
53
54cat /dev/null > $SEARCHOUT
55
56echo "Searching database..."
57echo "# Searching database..." >> $SEARCHOUT
58$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 >> $SEARCHOUT 2>&1
59
60RC=$?
61if test $RC != 0 ; then
62	echo "ldapsearch failed ($RC)!"
63	test $KILLSERVERS != no && kill -HUP $KILLPIDS
64	exit $RC
65fi
66
67DN="OU=Sales+CN=J. Smith,DC=example,DC=net"
68echo "Searching database for DN=\"$DN\"..."
69echo "# Searching database for DN=\"$DN\"..." >> $SEARCHOUT
70$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
71	"(member=$DN)" >> $SEARCHOUT 2>&1
72
73RC=$?
74if test $RC != 0 ; then
75	echo "ldapsearch failed ($RC)!"
76	test $KILLSERVERS != no && kill -HUP $KILLPIDS
77	exit $RC
78fi
79
80DN="testUUID=597ae2f6-16a6-1027-98f4-ABCDEFabcdef,DC=Example"
81echo "Searching database for entryUUID-named DN=\"$DN\"..."
82echo "# Searching database for entryUUID-named DN=\"$DN\"..." >> $SEARCHOUT
83$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
84	"(member=$DN)" \
85	>> $SEARCHOUT 2>&1
86
87RC=$?
88if test $RC != 0 ; then
89	echo "ldapsearch failed ($RC)!"
90	test $KILLSERVERS != no && kill -HUP $KILLPIDS
91	exit $RC
92fi
93
94DN="dc=example,dc=com"
95echo "Searching database for nameAndOptionalUID=\"$DN\"..."
96echo "# Searching database for nameAndOptionalUID=\"$DN\"..." >> $SEARCHOUT
97$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
98	"(uniqueMember=$DN)" >> $SEARCHOUT 2>&1
99
100RC=$?
101if test $RC != 0 ; then
102	echo "ldapsearch failed ($RC)!"
103	test $KILLSERVERS != no && kill -HUP $KILLPIDS
104	exit $RC
105fi
106
107DN="dc=example,dc=com#'001000'B"
108echo "Searching database for nameAndOptionalUID=\"$DN\"..."
109echo "# Searching database for nameAndOptionalUID=\"$DN\"..." >> $SEARCHOUT
110$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
111	"(uniqueMember=$DN)" >> $SEARCHOUT 2>&1
112
113RC=$?
114if test $RC != 0 ; then
115	echo "ldapsearch failed ($RC)!"
116	test $KILLSERVERS != no && kill -HUP $KILLPIDS
117	exit $RC
118fi
119
120DN="dc=example,dc=com"
121echo "Searching database for uniqueMember~=\"$DN\" (approx)..."
122echo "# Searching database for uniqueMember~=\"$DN\" (approx)..." >> $SEARCHOUT
123$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
124	"(uniqueMember~=)" >> $SEARCHOUT 2>&1
125
126RC=$?
127if test $RC != 0 ; then
128	echo "ldapsearch failed ($RC)!"
129	test $KILLSERVERS != no && kill -HUP $KILLPIDS
130	exit $RC
131fi
132
133DN="dc=example,dc=com#'001000'B"
134echo "Searching database for uniqueMember~=\"$DN\" (approx)..."
135echo "# Searching database for uniqueMember~=\"$DN\" (approx)..." >> $SEARCHOUT
136$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
137	"(uniqueMember~=$DN)" >> $SEARCHOUT 2>&1
138
139RC=$?
140if test $RC != 0 ; then
141	echo "ldapsearch failed ($RC)!"
142	test $KILLSERVERS != no && kill -HUP $KILLPIDS
143	exit $RC
144fi
145
146test $KILLSERVERS != no && kill -HUP $KILLPIDS
147
148echo "Filtering ldapsearch results..."
149. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
150echo "Filtering original data..."
151. $LDIFFILTER < $DNOUT > $LDIFFLT
152echo "Comparing ldapsearch results against original..."
153$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
154
155if test $? != 0 ; then
156	echo "comparison failed - DN write operations did not complete correctly"
157	exit 1
158fi
159
160#####
161
162echo ">>>>> Test succeeded"
163
164test $KILLSERVERS != no && wait
165
166exit 0
167