1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-26 10:04:02 +03:00
samba-mirror/source4/lib/ldb/tests/test-tdb-features.sh
Andrew Bartlett c64116e158 r25218: After discussion with Simo, remove the subclass support from LDB.
Subclass support was designed to avoid needing to spell out the full
list of objectClasses that an entry was in.  However, Samba4 now
enforces this restriction in the objectClass module, and the way
subclass matching was handled was complex and counter-intuitive in my
opinion (and did not match LDAP).

Andrew Bartlett
(This used to be commit f5ce04b904e14445a2a7e7f92e7e1f64b645c6f2)
2007-10-10 15:06:56 -05:00

161 lines
3.1 KiB
Bash

#!/bin/sh
echo "Running tdb feature tests"
mv $LDB_URL $LDB_URL.2
checkcount() {
count=$1
expression="$2"
n=`bin/ldbsearch "$expression" | grep '^dn' | wc -l`
if [ $n != $count ]; then
echo "Got $n but expected $count for $expression"
$VALGRIND bin/ldbsearch "$expression"
exit 1
fi
echo "OK: $count $expression"
}
echo "Testing case sensitive search"
cat <<EOF | $VALGRIND bin/ldbadd || exit 1
dn: cn=t1,cn=TEST
objectClass: testclass
test: foo
EOF
checkcount 1 '(test=foo)'
checkcount 0 '(test=FOO)'
checkcount 0 '(test=FO*)'
echo "Making case insensitive"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: @ATTRIBUTES
changetype: add
add: test
test: CASE_INSENSITIVE
EOF
echo $ldif | $VALGRIND bin/ldbmodify || exit 1
checkcount 1 '(test=foo)'
checkcount 1 '(test=FOO)'
checkcount 1 '(test=fo*)'
echo "adding i"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: cn=t1,cn=TEST
changetype: modify
add: i
i: 0x100
EOF
checkcount 1 '(i=0x100)'
checkcount 0 '(i=256)'
echo "marking i as INTEGER"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: @ATTRIBUTES
changetype: modify
add: i
i: INTEGER
EOF
checkcount 1 '(i=0x100)'
checkcount 1 '(i=256)'
echo "adding j"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: cn=t1,cn=TEST
changetype: modify
add: j
j: 0x100
EOF
checkcount 1 '(j=0x100)'
checkcount 0 '(j=256)'
echo "Adding wildcard attribute"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: @ATTRIBUTES
changetype: modify
add: *
*: INTEGER
EOF
checkcount 1 '(j=0x100)'
checkcount 1 '(j=256)'
echo "Testing class search"
checkcount 0 '(objectClass=otherclass)'
checkcount 1 '(objectClass=testclass)'
echo "Adding index"
cat <<EOF | $VALGRIND bin/ldbadd || exit 1
dn: @INDEXLIST
@IDXATTR: i
@IDXATTR: test
EOF
checkcount 1 '(i=0x100)'
checkcount 1 '(i=256)'
checkcount 0 '(i=-256)'
checkcount 1 '(test=foo)'
checkcount 1 '(test=FOO)'
checkcount 1 '(test=*f*o)'
echo "making test case sensitive"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: @ATTRIBUTES
changetype: modify
replace: test
test: NONE
EOF
checkcount 1 '(test=foo)'
checkcount 0 '(test=FOO)'
checkcount 1 '(test=f*o*)'
checkone() {
count=$1
base="$2"
expression="$3"
n=`bin/ldbsearch -s one -b "$base" "$expression" | grep '^dn' | wc -l`
if [ $n != $count ]; then
echo "Got $n but expected $count for $expression"
$VALGRIND bin/ldbsearch -s one -b "$base" "$expression"
exit 1
fi
echo "OK: $count $expression"
}
echo "Removing wildcard attribute"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: @ATTRIBUTES
changetype: modify
delete: *
*: INTEGER
EOF
echo "Adding one level indexes"
cat <<EOF | $VALGRIND bin/ldbmodify || exit 1
dn: @INDEXLIST
changetype: modify
add: @IDXONE
@IDXONE: 1
EOF
echo "Testing one level indexed search"
cat <<EOF | $VALGRIND bin/ldbadd || exit 1
dn: cn=one,cn=t1,cn=TEST
objectClass: oneclass
cn: one
test: one
EOF
checkone 1 "cn=t1,cn=TEST" '(test=one)'
cat <<EOF | $VALGRIND bin/ldbadd || exit 1
dn: cn=two,cn=t1,cn=TEST
objectClass: oneclass
cn: two
test: one
dn: cn=three,cn=t1,cn=TEST
objectClass: oneclass
cn: three
test: one
EOF
checkone 3 "cn=t1,cn=TEST" '(test=one)'
checkone 1 "cn=t1,cn=TEST" '(cn=two)'