Revert "s3: vfs: add user_vfs_evg to connection_struct"
[Samba.git] / testprogs / blackbox / test_primary_group.sh
blob0fbc287114ad40b87b0cd91de82637dd06f64749
1 #!/bin/bash
3 if [ $# -lt 5 ]; then
4 cat <<EOF
5 Usage: test_primary_group.sh SERVER USERNAME PASSWORD DOMAIN PREFIX_ABS
6 EOF
7 exit 1;
8 fi
10 TMPDIR="$PREFIX_ABS/$(basename $0)"
11 export TMPDIR
13 SERVER=$1
14 USERNAME=$2
15 PASSWORD=$3
16 DOMAIN=$4
17 PREFIX_ABS=$5
18 shift 5
19 failed=0
21 . `dirname $0`/subunit.sh
22 . `dirname $0`/common_test_fns.inc
24 TZ=UTC
25 export TZ
27 N=$(date +%H%M%S)
29 testuser="testuser$N"
30 testgroup="testgroup$N"
32 echo "testuser: $testuser"
33 echo "testgroup: $testgroup"
35 testit "mkdir -p '${TMPDIR}'" mkdir -p ${TMPDIR} || failed=`expr $failed + 1`
37 testit "create '$testuser'" $VALGRIND $PYTHON $BINDIR/samba-tool user create "$testuser" Password.1 || failed=`expr $failed + 1`
38 testit "add '$testgroup'" $VALGRIND $PYTHON $BINDIR/samba-tool group add "$testgroup" || failed=`expr $failed + 1`
39 testit "addmembers '$testgroup' '$testuser'" $VALGRIND $PYTHON $BINDIR/samba-tool group addmembers "$testgroup" "$testuser" || failed=`expr $failed + 1`
41 testit "search1" $VALGRIND $BINDIR/ldbsearch -H ldap://$SERVER_IP -U$USERNAME%$PASSWORD -d0 sAMAccountName="$testgroup" objectSid || failed=`expr $failed + 1`
42 ldif="${TMPDIR}/search1.ldif"
43 $VALGRIND $BINDIR/ldbsearch -H ldap://$SERVER_IP -U$USERNAME%$PASSWORD -d0 sAMAccountName=$testgroup objectSid > $ldif
44 rid=$(cat $ldif | sed -n 's/^objectSid: S-1-5-21-.*-.*-.*-//p')
46 testit "search2" $VALGRIND $BINDIR/ldbsearch -H ldap://$SERVER_IP -U$USERNAME%$PASSWORD -d0 sAMAccountName="$testuser" dn || failed=`expr $failed + 1`
47 ldif="${TMPDIR}/search2.ldif"
48 $VALGRIND $BINDIR/ldbsearch -H ldap://$SERVER_IP -U$USERNAME%$PASSWORD -d0 sAMAccountName=$testuser dn > $ldif
49 user_dn=$(cat $ldif | sed -n 's/^dn: //p')
51 ldif="${TMPDIR}/modify1.ldif"
52 cat > $ldif <<EOF
53 dn: $user_dn
54 changetype: modify
55 replace: primaryGroupID
56 primaryGroupID: $rid
57 EOF
58 testit "Change primaryGroupID to $rid" $VALGRIND $BINDIR/ldbmodify -H ldap://$SERVER_IP -U$USERNAME%$PASSWORD -d0 --verbose < $ldif || failed=`expr $failed + 1`
60 testit "dbcheck run1" $VALGRIND $PYTHON $BINDIR/samba-tool dbcheck --attrs=member || failed=`expr $failed + 1`
62 ldif="${TMPDIR}/modify2.ldif"
63 cat > $ldif <<EOF
64 dn: $user_dn
65 changetype: modify
66 replace: primaryGroupID
67 primaryGroupID: 513
68 EOF
69 testit "Change primaryGroupID to 513" $VALGRIND $BINDIR/ldbmodify -H ldap://$SERVER_IP -U$USERNAME%$PASSWORD -d0 < $ldif || failed=`expr $failed + 1`
71 testit "dbcheck run2" $VALGRIND $PYTHON $BINDIR/samba-tool dbcheck --attrs=member || failed=`expr $failed + 1`
73 testit "delete '$testuser'" $VALGRIND $PYTHON $BINDIR/samba-tool user delete "$testuser" || failed=`expr $failed + 1`
74 testit "delete '$testgroup'" $VALGRIND $PYTHON $BINDIR/samba-tool group delete "$testgroup" || failed=`expr $failed + 1`
77 # As we don't support phantom objects and virtual backlinks
78 # the deletion of the user prior to the group causes dangling links,
79 # which are detected like this:
81 # WARNING: target DN is deleted for member in object
83 # Specifically, this happens because after the member link is
84 # deactivated the memberOf is gone, and so there is no way to find the
85 # now redundant forward link to clean it up.
87 testit_expect_failure "dbcheck run3" $VALGRIND $PYTHON $BINDIR/samba-tool dbcheck --attrs=member --fix --yes || failed=`expr $failed + 1`
88 testit "dbcheck run4" $VALGRIND $PYTHON $BINDIR/samba-tool dbcheck --attrs=member || failed=`expr $failed + 1`
90 exit $failed