Skip to content
Snippets Groups Projects
Commit 891fef5c authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

added DN parsing test

parent 0caf54b4
No related branches found
No related tags found
No related merge requests found
dn: dc=net
objectClass: domain
dc: net
seeAlso:
dn: dc=example,dc=net
objectClass: domain
objectClass: domainRelatedObject
dc: example
associatedDomain: example.net
dn: uid=jsmith,dc=example,dc=net
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: jsmith
description: UID=jsmith,DC=example,DC=net
dn: cn=J. Smith+ou=Sales,dc=example,dc=net
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
ou: Sales
description: OU=Sales+CN=J. Smith,DC=example,DC=net
dn: cn=John Smith\2C III,dc=example,dc=net
objectClass: inetOrgPerson
cn: John Smith, III
sn: Smith
seeAlso: cn=John Smith\2C III,dc=example,dc=net
description: CN=John Smith\, III,DC=example,DC=net
description: CN=John Smith\2C III,DC=example,DC=net
dn: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net
objectClass: organizationalUnit
ou: Sales; Data+Algorithms
seeAlso: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net
description: OU=Sales\; Data\+Algorithms,DC=example,DC=net
description: OU=Sales\3B Data\2BAlgorithms,DC=example,DC=net
dn:: Y249QmVmb3JlDUFmdGVyLGRjPWV4YW1wbGUsZGM9bmV0
objectClass: groupOfNames
cn:: QmVmb3JlDUFmdGVy
member:: Y249QmVmb3JlDUFmdGVyLGRjPWV4YW1wbGUsZGM9bmV0
description: CN=Before\0dAfter,DC=example,DC=net
dn: cn=\#John Smith\ ,dc=example,dc=net
objectClass: inetOrgPerson
cn:: I0pvaG4gU21pdGgg
sn: Smith
seeAlso: cn=\#John Smith\ ,dc=example,dc=net
description: CN=\23John Smith\20,DC=example,DC=net
description: CN=\#John Smith\ ,DC=example,DC=net
dn:: Y249THXEjWnEhw==
objectClass: inetOrgPerson
cn:: THXEjWnEhw==
sn:: THXEjWnEhw==
description: CN=Lu\C4\8Di\C4\87
dn: c=US
objectClass: country
c: US
dn: o=example,c=US
objectClass: organization
o: example
dn: cn=John Smith,o=example,c=US
objectClass: inetOrgPerson
cn: John Smith
sn: Smith
description: CN="John Smith",O=example,C=US
# stand-alone slapd config -- for testing (with refint overlay)
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 2004 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
ucdata-path ./ucdata
include ./schema/core.schema
include ./schema/cosine.schema
include ./schema/inetorgperson.schema
include ./schema/openldap.schema
include ./schema/nis.schema
#
pidfile ./testrun/slapd.1.pid
argsfile ./testrun/slapd.1.args
#mod#modulepath ../servers/slapd/back-@BACKEND@/
#mod#moduleload back_@BACKEND@.la
#######################################################################
# database definitions
#######################################################################
database @BACKEND@
suffix ""
directory ./testrun/db.1.a
rootdn "cn=Manager"
rootpw secret
index objectClass eq
index cn,sn,uid pres,eq,sub
# Regular DNs
dn: dc=net
objectClass: domain
dc: net
seeAlso:
dn: dc=example,dc=net
objectClass: domain
objectClass: domainRelatedObject
dc: example
associatedDomain: example.net
# UID=jsmith,DC=example,DC=net [AoOn]
# 304631133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 31163014060A0992268993F22C64010113066A736D697468
dn: UID=jsmith,DC=example,DC=net
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: jsmith
description: UID=jsmith,DC=example,DC=net
# OU=Sales+CN=J. Smith,DC=example,DC=net [AoOn]
# 304F31133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 311F300C060355040B130553616C6573300F060355040313
# 084A2E20536D697468
dn: OU=Sales+CN=J. Smith,DC=example,DC=net
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
ou: Sales
description: OU=Sales+CN=J. Smith,DC=example,DC=net
# CN=John Smith\, III,DC=example,DC=net [AoOn]
# 304831133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 311830160603550403130F4A6F686E20536D6974682C2049
# 4949
# CN=John Smith\2C III,DC=example,DC=net [AoOn]
# 304831133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 311830160603550403130F4A6F686E20536D6974682C2049
# 4949
dn: CN=John Smith\, III,DC=example,DC=net
objectClass: inetOrgPerson
cn: John Smith, III
sn: Smith
seeAlso: CN=John Smith\2C III,DC=example,DC=net
description: CN=John Smith\, III,DC=example,DC=net
description: CN=John Smith\2C III,DC=example,DC=net
dn: OU=Sales\; Data\+Algorithms,DC=example,DC=net
objectClass: organizationalUnit
ou: Sales; Data+Algorithms
seeAlso: OU=Sales\3B Data\2BAlgorithms,DC=example,DC=net
description: OU=Sales\; Data\+Algorithms,DC=example,DC=net
description: OU=Sales\3B Data\2BAlgorithms,DC=example,DC=net
# CN=Before\0dAfter,DC=example,DC=net [AoOn]
# 304531133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 3115301306035504030C0C4265666F72650D4166746572
dn: CN=Before\0dAfter,DC=example,DC=net
objectClass: groupOfNames
cn:: QmVmb3JlDUFmdGVy
member: CN=Before\0dAfter,DC=example,DC=net
description: CN=Before\0dAfter,DC=example,DC=net
# CN=\23John Smith\20,DC=example,DC=net [AoOn]
# 304531133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 311530130603550403140C234A6F686E20536D69746820
# CN=\#John Smith\ ,DC=example,DC=net [AoOn]
# 304531133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 311530130603550403140C234A6F686E20536D69746820
dn: CN=\23John Smith\20,DC=example,DC=net
objectClass: inetOrgPerson
cn:: I0pvaG4gU21pdGgg
sn: Smith
seeAlso: CN=\#John Smith\ ,DC=example,DC=net
description: CN=\23John Smith\20,DC=example,DC=net
description: CN=\#John Smith\ ,DC=example,DC=net
# 1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com [AoOn]
# 304031133011060A0992268993F22C64011916036E657431 [AoO]
# 173015060A0992268993F22C64011916076578616D706C65
# 3110300E06082B060104018B3A0004024869
# FIXME
dn: 1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com
objectClass: top
# CN=Lu\C4\8Di\C4\87 [AoOn]
# 30123110300E06035504030C074C75C48D69C487 [AoO]
dn: CN=Lu\C4\8Di\C4\87
objectClass: inetOrgPerson
cn:: THXEjWnEhw==
sn:: THXEjWnEhw==
description: CN=Lu\C4\8Di\C4\87
# 1.1.1= // empty value [AoO]
# 300A31083006060229011300 [AoO]
# FIXME
dn: 1.1.1=
objectClass: top
#Invalid DNs
# // some implementations may be liberal in what they accept
# // but should strict in what they produce.
# uid;x-option=jsmith // option [oOn]
dn: uid;x-option=jsmith
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid;x-option: jsmith
# at_tr=jsmith // invalid attribute type name [AoOn]
dn: at_tr=jsmith
objectClass: top
# -attr=jsmith // invalid attribute type name [AoOn]
dn: -attr=jsmith
objectClass: top
# 1..1=jsmith // invalid numeric OID [AoO]
dn: 1..1=jsmith
objectClass: top
# 1.1.=jsmith // invalid numeric OID [AoO]
dn: 1.1.=jsmith
objectClass: top
# 01.1=jsmith // invalid numeric OID [oO]
dn: 01.1=jsmith
objectClass: top
# 1.ff=jsmith // invalid numeric OID [AoOn]
dn: 1.ff=jsmith
objectClass: top
# 1.1.1=#GG // invalid HEX form [AoOn]
dn: 1.1.1=#GG
objectClass: top
# 1.1.1=#000 // invalid HEX form [AoO]
dn: 1.1.1=#000
objectClass: top
# 1.1.1=#F // invalid HEX form [AoO]
dn: 1.1.1=#F
objectClass: top
# 1.1.1=# // invalid HEX form [AoO]
dn: 1.1.1=#
objectClass: top
# UID=jsmith,,DC=example,DC=net // extra comma [AoOn]
dn: UID=jsmith,,DC=example,DC=net
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: jsmith
# UID=john,smith // unescaped , [AoOn]
dn: UID=john,smith
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: john
# UID=john+smith // unescaped + [AoOn]
dn: UID=john+smith
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: john
# UID=john\?smith // invalid escape of ? or unescaped \ [oOn]
dn: UID=john\?smith
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: john?smith
# UID=john\Fsmith // invalid hex escape [AoOn]
dn: UID=john\Fsmith
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
# UID=john\GGsmith // invalid hex escape [oOn]
dn: UID=john\GGsmith
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
#The following strings are invalid for use in LDAPv3, but were
#legal in LDAPv2 (RFC 1779). Some LDAPv3 implementations are
#liberal in accepting these but should not generate them.
# " " // space, quote characters (") are not part of the string
# OID.1.1=jsmith // invalid attribute type name
dn: OID.0.9.2342.19200300.100.1.1=jsmith
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: jsmith
description: OID.0.9.2342.19200300.100.1.1=jsmith
dn: C=US
objectClass: country
c: US
dn: O=example, C=US
objectClass: organization
o: example
# UID=jsmith, O=example, C=US // spaces
# UID=jsmith;O=example;C=US // semi-colons
# <UID=jsmith,O=example,C=US> // brackets [AoOn]
dn: UID=jsmith, O=example, C=US
objectClass: inetOrgPerson
cn: J. Smith
sn: Smith
uid: jsmith
seeAlso: UID=jsmith;O=example;C=US
manager: <UID=jsmith,O=example,C=US>
description: UID=jsmith, O=example, C=US
description: UID=jsmith;O=example;C=US
description: <UID=jsmith,O=example,C=US>
# CN="John Smith",O=example,C=US // quotes
dn: CN="John Smith",O=example,C=US
objectClass: inetOrgPerson
cn: John Smith
sn: Smith
description: CN="John Smith",O=example,C=US
......@@ -58,6 +58,7 @@ GLUECONF=$DATADIR/slapd-glue.conf
REFINTCONF=$DATADIR/slapd-refint.conf
UNIQUECONF=$DATADIR/slapd-unique.conf
LIMITSCONF=$DATADIR/slapd-limits.conf
DNCONF=$DATADIR/slapd-dn.conf
CONF1=$TESTDIR/slapd.1.conf
CONF2=$TESTDIR/slapd.2.conf
......@@ -127,6 +128,7 @@ LDIFREF=$DATADIR/referrals.ldif
LDIFREFINT=$DATADIR/test-refint.ldif
LDIFUNIQUE=$DATADIR/test-unique.ldif
LDIFLIMITS=$DATADIR/test-limits.ldif
LDIFDN=$DATADIR/test-dn.ldif
MONITOR=""
REFDN="c=US"
BASEDN="dc=example,dc=com"
......@@ -138,6 +140,7 @@ BJORNSDN="cn=Bjorn Jensen,ou=Information Technology DivisioN,OU=People,dc=exampl
JAJDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com"
REFINTDN="cn=Manager,o=refint"
UNIQUEDN="cn=Manager,o=unique"
DNDN="cn=Manager"
LOG1=$TESTDIR/slapd.1.log
LOG2=$TESTDIR/slapd.2.log
......@@ -186,6 +189,7 @@ REPLOUTMASTER=$DATADIR/repl.out.master
MODSRCHFILTERS=$DATADIR/modify.search.filters
CERTIFICATETLS=$DATADIR/certificate.tls
CERTIFICATEOUT=$DATADIR/certificate.out
DNOUT=$DATADIR/dn.out
# Just in case we linked the binaries dynamically
LD_LIBRARY_PATH=`pwd`/../libraries:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH
#! /bin/sh
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 2004 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
# FIXME: temporary! bdb doesn't work
if test "$BACKEND" != "ldbm" ; then
echo "Test does not support $BACKEND"
exit 0
fi
echo "running defines.sh"
. $SRCDIR/scripts/defines.sh
mkdir -p $TESTDIR $DBDIR1
. $CONFFILTER $BACKEND $MONITORDB < $DNCONF > $CONF1
echo "Starting slapd on TCP/IP port $PORT1..."
$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
PID=$!
if test $WAIT != 0 ; then
echo PID $PID
read foo
fi
KILLPIDS="$PID"
echo "Testing slapd DN parsing..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
'objectclass=*' > /dev/null 2>&1
RC=$?
if test $RC = 0 ; then
break
fi
echo "Waiting 5 seconds for slapd to start..."
sleep 5
done
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Loading database..."
$LDAPADD -D "$DNDN" -h $LOCALHOST -p $PORT1 -w $PASSWD -c -f $LDIFDN > \
/dev/null 2>&1
echo "Searching database..."
$LDAPSEARCH -b "" -h $LOCALHOST -p $PORT1 > $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
LDIFOUT=$DNOUT
echo "Comparing ldapsearch results against original..."
$CMP $SEARCHOUT $LDIFOUT > $CMPOUT
if test $? != 0 ; then
echo "comparison failed - DN write operations did not complete correctly"
exit 1
fi
#####
test $KILLSERVERS != no && kill -HUP $KILLPIDS
echo ">>>>> Test succeeded"
exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment