]> git.sur5r.net Git - openldap/commitdiff
ITS#7344 Add initial testsuite for slapo-constraint
authorJan Synacek <jsynacek@redhat.com>
Thu, 2 Aug 2012 12:57:39 +0000 (14:57 +0200)
committerHoward Chu <hyc@openldap.org>
Thu, 2 Aug 2012 14:01:31 +0000 (07:01 -0700)
29 files changed:
tests/data/constraint/constraint.out [new file with mode: 0644]
tests/data/constraint/root.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_01.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_02.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_03.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_04.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_05.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_06.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_07.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_08.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_09.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_10.ldif [new file with mode: 0644]
tests/data/constraint/t_fail_11.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_01.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_02.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_03.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_04.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_05.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_06.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_07.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_08.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_09.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_10.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_11.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_12.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_13.ldif [new file with mode: 0644]
tests/data/constraint/t_ok_14.ldif [new file with mode: 0644]
tests/data/constraint/user.ldif [new file with mode: 0644]
tests/scripts/test064-constraint [new file with mode: 0755]

diff --git a/tests/data/constraint/constraint.out b/tests/data/constraint/constraint.out
new file mode 100644 (file)
index 0000000..94c8d35
--- /dev/null
@@ -0,0 +1,25 @@
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+FAIL
+FAIL
+FAIL
+FAIL
+FAIL
+FAIL
+FAIL
+FAIL
+FAIL
+FAIL
+FAIL
diff --git a/tests/data/constraint/root.ldif b/tests/data/constraint/root.ldif
new file mode 100644 (file)
index 0000000..3e099fc
--- /dev/null
@@ -0,0 +1,5 @@
+dn: dc=example,dc=com
+objectclass: dcObject
+objectclass: organization
+dc: example
+o: My Domain corp.
diff --git a/tests/data/constraint/t_fail_01.ldif b/tests/data/constraint/t_fail_01.ldif
new file mode 100644 (file)
index 0000000..c797271
--- /dev/null
@@ -0,0 +1,6 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
diff --git a/tests/data/constraint/t_fail_02.ldif b/tests/data/constraint/t_fail_02.ldif
new file mode 100644 (file)
index 0000000..e3f32af
--- /dev/null
@@ -0,0 +1,8 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+mail: e@example.com
+mail: f@example.com
diff --git a/tests/data/constraint/t_fail_03.ldif b/tests/data/constraint/t_fail_03.ldif
new file mode 100644 (file)
index 0000000..cf6ac23
--- /dev/null
@@ -0,0 +1,8 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+-
+add: mail
+mail: d@example.com
diff --git a/tests/data/constraint/t_fail_04.ldif b/tests/data/constraint/t_fail_04.ldif
new file mode 100644 (file)
index 0000000..8dd10c6
--- /dev/null
@@ -0,0 +1,10 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+-
+add: mail
+mail: c@example.com
+-
+add: mail
+mail: d@example.com
diff --git a/tests/data/constraint/t_fail_05.ldif b/tests/data/constraint/t_fail_05.ldif
new file mode 100644 (file)
index 0000000..9f11082
--- /dev/null
@@ -0,0 +1,13 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+-
+add: mail
+mail: c@example.com
+-
+add: mail
+mail: d@example.com
+-
+add: mail
+mail: e@example.com
diff --git a/tests/data/constraint/t_fail_06.ldif b/tests/data/constraint/t_fail_06.ldif
new file mode 100644 (file)
index 0000000..1871c92
--- /dev/null
@@ -0,0 +1,7 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+replace: mail
+mail: a@example.com
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
diff --git a/tests/data/constraint/t_fail_07.ldif b/tests/data/constraint/t_fail_07.ldif
new file mode 100644 (file)
index 0000000..1041f98
--- /dev/null
@@ -0,0 +1,15 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+replace: mail
+mail: a@example.com
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+-
+delete: mail
+-
+add: mail
+mail: w@example.com
+mail: x@example.com
+mail: y@example.com
+mail: z@example.com
diff --git a/tests/data/constraint/t_fail_08.ldif b/tests/data/constraint/t_fail_08.ldif
new file mode 100644 (file)
index 0000000..4e5b420
--- /dev/null
@@ -0,0 +1,12 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+-
+delete: mail
+mail: d@example.com
+-
+add: mail
+mail: f@example.com
diff --git a/tests/data/constraint/t_fail_09.ldif b/tests/data/constraint/t_fail_09.ldif
new file mode 100644 (file)
index 0000000..dd8d747
--- /dev/null
@@ -0,0 +1,10 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+mail: e@example.com
+-
+delete: mail
+mail: original@example.com
diff --git a/tests/data/constraint/t_fail_10.ldif b/tests/data/constraint/t_fail_10.ldif
new file mode 100644 (file)
index 0000000..043380f
--- /dev/null
@@ -0,0 +1,4 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: example@not-allowed.com
diff --git a/tests/data/constraint/t_fail_11.ldif b/tests/data/constraint/t_fail_11.ldif
new file mode 100644 (file)
index 0000000..8bb03fa
--- /dev/null
@@ -0,0 +1,7 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+delete: mail
+mail: original@example.com
+-
+add: mail
+mail: a@fail.com
diff --git a/tests/data/constraint/t_ok_01.ldif b/tests/data/constraint/t_ok_01.ldif
new file mode 100644 (file)
index 0000000..87b6a42
--- /dev/null
@@ -0,0 +1,3 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+delete: mail
diff --git a/tests/data/constraint/t_ok_02.ldif b/tests/data/constraint/t_ok_02.ldif
new file mode 100644 (file)
index 0000000..a76df6b
--- /dev/null
@@ -0,0 +1,5 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+replace: mail
+mail: a@example.com
+mail: b@example.com
diff --git a/tests/data/constraint/t_ok_03.ldif b/tests/data/constraint/t_ok_03.ldif
new file mode 100644 (file)
index 0000000..19242b4
--- /dev/null
@@ -0,0 +1,6 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+replace: mail
+mail: a@example.com
+mail: b@example.com
+mail: c@example.com
diff --git a/tests/data/constraint/t_ok_04.ldif b/tests/data/constraint/t_ok_04.ldif
new file mode 100644 (file)
index 0000000..87b6a42
--- /dev/null
@@ -0,0 +1,3 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+delete: mail
diff --git a/tests/data/constraint/t_ok_05.ldif b/tests/data/constraint/t_ok_05.ldif
new file mode 100644 (file)
index 0000000..3d260a3
--- /dev/null
@@ -0,0 +1,5 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: a@example.com
+mail: b@example.com
diff --git a/tests/data/constraint/t_ok_06.ldif b/tests/data/constraint/t_ok_06.ldif
new file mode 100644 (file)
index 0000000..bac6113
--- /dev/null
@@ -0,0 +1,7 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+delete: mail
+-
+add: mail
+mail: b@example.com
+mail: c@example.com
diff --git a/tests/data/constraint/t_ok_07.ldif b/tests/data/constraint/t_ok_07.ldif
new file mode 100644 (file)
index 0000000..870eff8
--- /dev/null
@@ -0,0 +1,8 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+delete: mail
+-
+add: mail
+mail: a@example.com
+mail: b@example.com
+mail: c@example.com
diff --git a/tests/data/constraint/t_ok_08.ldif b/tests/data/constraint/t_ok_08.ldif
new file mode 100644 (file)
index 0000000..5593b08
--- /dev/null
@@ -0,0 +1,12 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+-
+delete: mail
+-
+add: mail
+mail: x@example.com
+mail: y@example.com
+mail: z@example.com
diff --git a/tests/data/constraint/t_ok_09.ldif b/tests/data/constraint/t_ok_09.ldif
new file mode 100644 (file)
index 0000000..75dd710
--- /dev/null
@@ -0,0 +1,9 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+replace: mail
+mail: a@example.com
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+-
+delete: mail
diff --git a/tests/data/constraint/t_ok_10.ldif b/tests/data/constraint/t_ok_10.ldif
new file mode 100644 (file)
index 0000000..8412264
--- /dev/null
@@ -0,0 +1,24 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+-
+delete: mail
+-
+add: mail
+mail: x@example.com
+mail: y@example.com
+mail: z@example.com
+mail: u@example.com
+mail: m@example.com
+-
+replace: mail
+mail: i@example.com
+mail: j@example.com
+-
+add: mail
+mail: k@example.com
+-
+replace: description
+description: d1
diff --git a/tests/data/constraint/t_ok_11.ldif b/tests/data/constraint/t_ok_11.ldif
new file mode 100644 (file)
index 0000000..a5a5783
--- /dev/null
@@ -0,0 +1,32 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+-
+delete: mail
+-
+add: mail
+mail: x@example.com
+mail: y@example.com
+mail: z@example.com
+mail: u@example.com
+mail: m@example.com
+-
+replace: mail
+mail: i@example.com
+mail: j@example.com
+-
+add: mail
+mail: k@example.com
+mail: hh@example.com
+-
+delete: mail
+-
+add: mail
+mail: k@example.com
+mail: hh@example.com
+mail: hj@example.com
+-
+replace: description
+description: d1
diff --git a/tests/data/constraint/t_ok_12.ldif b/tests/data/constraint/t_ok_12.ldif
new file mode 100644 (file)
index 0000000..e683bb3
--- /dev/null
@@ -0,0 +1,11 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+mail: e@example.com
+-
+delete: mail
+mail: original@example.com
+mail: e@example.com
diff --git a/tests/data/constraint/t_ok_13.ldif b/tests/data/constraint/t_ok_13.ldif
new file mode 100644 (file)
index 0000000..19ccbb8
--- /dev/null
@@ -0,0 +1,18 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+add: mail
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+mail: e@example.com
+-
+delete: mail
+-
+add: mail
+mail: b@example.com
+mail: c@example.com
+mail: d@example.com
+mail: e@example.com
+-
+delete: mail
+mail: e@example.com
diff --git a/tests/data/constraint/t_ok_14.ldif b/tests/data/constraint/t_ok_14.ldif
new file mode 100644 (file)
index 0000000..dd00fcc
--- /dev/null
@@ -0,0 +1,8 @@
+dn: cn=user,dc=example,dc=com
+changetype: modify
+delete: description
+description: desc1
+-
+add: description
+description: desc1-mod
+
diff --git a/tests/data/constraint/user.ldif b/tests/data/constraint/user.ldif
new file mode 100644 (file)
index 0000000..b8a06de
--- /dev/null
@@ -0,0 +1,8 @@
+dn: cn=user,dc=example,dc=com
+objectclass: inetOrgPerson
+objectclass: organizationalPerson
+cn: John
+sn: Doe
+mail: original@example.com
+description: desc1
+description: desc2
diff --git a/tests/scripts/test064-constraint b/tests/scripts/test064-constraint
new file mode 100755 (executable)
index 0000000..4a69b3f
--- /dev/null
@@ -0,0 +1,137 @@
+#!/bin/bash
+
+echo "running defines.sh"
+. $SRCDIR/scripts/defines.sh
+
+CONSTRAINTDIR="$DATADIR/constraint"
+ROOTLDIF="$CONSTRAINTDIR/root.ldif"
+USERLDIF="$CONSTRAINTDIR/user.ldif"
+RESULTOUT="$CONSTRAINTDIR/constraint.out"
+SCRIPTOUT="$TESTDIR/constraint.out"
+USERDN="cn=user,$BASEDN"
+
+CONFDIR=$TESTDIR/slapd.d
+mkdir -p $TESTDIR $CONFDIR $DBDIR1
+
+$SLAPPASSWD -g -n >$CONFIGPWF
+
+$SLAPADD -F $CONFDIR -n 0 <<EOF
+dn: cn=config
+objectClass: olcGlobal
+cn: config
+olcArgsFile: $TESTDIR/slapd.args
+olcPidFile: $TESTDIR/slapd.pid
+
+dn: cn=module,cn=config
+objectClass: olcModuleList
+cn: module
+olcModulePath: $TESTWD/../servers/slapd/overlays
+olcModuleLoad: constraint.la
+
+dn: cn=schema,cn=config
+objectClass: olcSchemaConfig
+cn: schema
+
+include: file://$TESTWD/schema/core.ldif
+include: file://$TESTWD/schema/cosine.ldif
+include: file://$TESTWD/schema/inetorgperson.ldif
+
+dn: olcDatabase=config,cn=config
+objectClass: olcDatabaseConfig
+olcDatabase: config
+
+dn: olcDatabase={1}$BACKEND,cn=config
+objectClass: olcDatabaseConfig
+objectClass: olc${BACKEND}Config
+olcDatabase: $BACKEND
+olcSuffix: $BASEDN
+olcRootDN: $MANAGERDN
+olcRootPW:< file://$CONFIGPWF
+olcDbDirectory: $TESTDIR/db.1.a
+olcDbIndex: objectClass eq,pres
+olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
+
+dn: olcOverlay=constraint,olcDatabase={1}$BACKEND,cn=config
+objectClass: olcOverlayConfig
+objectClass: olcConstraintConfig
+olcOverlay: constraint
+olcConstraintAttribute: mail count 3
+olcConstraintAttribute: mail regex ^[[:alnum:]]+@example.com$
+olcConstraintAttribute: description count 2
+
+EOF
+
+$SLAPD -F $CONFDIR -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
+PID=$!
+if test $WAIT != 0 ; then
+    echo PID $PID
+    read foo
+fi
+
+sleep 1
+
+echo "Adding basic structure..."
+$LDAPADD -D $MANAGERDN -H $URI1 -y $CONFIGPWF -f $ROOTLDIF &>/dev/null
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapadd failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $PID
+       exit $RC
+fi
+$LDAPADD -D $MANAGERDN -H $URI1 -y $CONFIGPWF -f $USERLDIF &>/dev/null
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapadd failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $PID
+       exit $RC
+fi
+
+echo "Running constraint tests..."
+for ldif in $SRCDIR/data/constraint/{*ok*,*fail*}.ldif; do
+       ### reload
+       $LDAPDELETE -D $MANAGERDN -H $URI1 -y $CONFIGPWF $USERDN &>/dev/null
+       RC=$?
+       if test $RC != 0 ; then
+               echo "ldapdelete failed ($RC)!"
+               test $KILLSERVERS != no && kill -HUP $PID
+               exit $RC
+       fi
+       $LDAPADD -D $MANAGERDN -H $URI1 -y $CONFIGPWF -f $USERLDIF &>/dev/null
+       RC=$?
+       if test $RC != 0 ; then
+               echo "ldapadd failed ($RC)!"
+               test $KILLSERVERS != no && kill -HUP $PID
+               exit $RC
+       fi
+
+       ### info
+       echo -n "  [$ldif]: "
+
+       ### modify
+       $LDAPMODIFY -H $URI1 -x -D "$MANAGERDN" -f $ldif -y $CONFIGPWF &>/dev/null
+       RC=$?
+       if test $RC == 0 ; then
+               echo "OK" | tee -a $SCRIPTOUT
+       elif test $RC == 19 ; then
+               echo "FAIL" | tee -a $SCRIPTOUT
+       else
+               echo "UNEXPECTED ($RC)"
+       fi
+done
+
+echo "Comparing output..."
+$DIFF $SCRIPTOUT $RESULTOUT > $CMPOUT
+RC=$?
+if test $RC != 0 ; then
+       echo "Comparison failed"
+       test $KILLSERVERS != no && kill -HUP $PID
+       exit $RC
+fi
+
+test $KILLSERVERS != no && kill -HUP $PID
+
+echo ">>>>> Test succeeded"
+
+test $KILLSERVERS != no && wait
+
+exit 0