selftest: Set winbind separator = /
[garming/samba-autobuild/.git] / nsswitch / tests / test_idmap_rfc2307.sh
1 #!/bin/sh
2 # Test id mapping through idmap_rfc2307 module
3 if [ $# -lt 9 ]; then
4         echo Usage: $0 DOMAIN USERNAME UID GROUPNAME GID LDAPPREFIX DC_SERVER DC_USERNAME DC_PASSWORD
5         exit 1
6 fi
7
8 DOMAIN="$1"
9 USERNAME="$2"
10 USERUID="$3"
11 GROUPNAME="$4"
12 GROUPGID="$5"
13 LDAPPREFIX="$6"
14 DC_SERVER="$7"
15 DC_USERNAME="$8"
16 DC_PASSWORD="$9"
17
18 echo called with: $1 $2 $3 $4 $5 $6 $7 $8 $9
19
20 wbinfo="$VALGRIND $BINDIR/wbinfo"
21
22 ldbadd="ldbadd"
23 if [ -x "$BINDIR/ldbadd" ]; then
24         ldbadd="$BINDIR/ldbadd"
25 fi
26
27 ldbdel="ldbdel"
28 if [ -x "$BINDIR/ldbdel" ]; then
29         ldbdel="$BINDIR/ldbdel"
30 fi
31
32 failed=0
33
34 . `dirname $0`/../../testprogs/blackbox/subunit.sh
35
36 # Delete LDAP records
37 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$USERNAME,$LDAPPREFIX"
38 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$GROUPNAME,$LDAPPREFIX"
39 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "$LDAPPREFIX"
40
41 # Add id mapping information to LDAP
42
43 cat > $PREFIX/tmpldb <<EOF
44 dn: $LDAPPREFIX
45 objectclass: organizationalUnit
46 EOF
47
48 testit "add ldap prefix" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
49
50 cat > $PREFIX/tmpldb <<EOF
51 dn: cn=$USERNAME,$LDAPPREFIX
52 objectClass: organizationalPerson
53 objectClass: posixAccount
54 ou: People
55 cn: $USERNAME
56 uid: $USERNAME
57 uidNumber: $USERUID
58 gidNumber: 1
59 homeDirectory: /home/admin
60 EOF
61
62 testit "add ldap user mapping record" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
63
64 cat > $PREFIX/tmpldb <<EOF
65 dn: cn=$GROUPNAME,$LDAPPREFIX
66 objectClass: posixGroup
67 objectClass: groupOfNames
68 cn: $GROUPNAME
69 gidNumber: $GROUPGID
70 member: cn=$USERNAME,$LDAPPREFIX
71 EOF
72
73 testit "add ldap group mapping record" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
74
75 rm -f $PREFIX/tmpldbmodify
76
77 testit "wbinfo --name-to-sid" $wbinfo --name-to-sid "$DOMAIN/$USERNAME" || failed=$(expr $failed + 1)
78 user_sid=$($wbinfo -n "$DOMAIN/$USERNAME" | cut -d " " -f1)
79 echo "$DOMAIN/$USERNAME resolved to $user_sid"
80
81 testit "wbinfo --sid-to-uid=$user_sid" $wbinfo --sid-to-uid=$user_sid || failed=$(expr $failed + 1)
82 user_uid=$($wbinfo --sid-to-uid=$user_sid | cut -d " " -f1)
83 echo "$DOMAIN/$USERNAME resolved to $user_uid"
84
85 testit "test $user_uid -eq $USERUID" test $user_uid -eq $USERUID || failed=$(expr $failed + 1)
86
87 # Not sure how to get group names with spaces to resolve through testit
88 #testit "wbinfo --name-to-sid" $wbinfo --name-to-sid="$DOMAIN/$GROUPNAME" || failed=$(expr $failed + 1)
89 group_sid=$($wbinfo --name-to-sid="$DOMAIN/$GROUPNAME" | cut -d " " -f1)
90 echo "$DOMAIN/$GROUPNAME resolved to $group_sid"
91
92 testit "wbinfo --sid-to-gid=$group_sid" $wbinfo --sid-to-gid=$group_sid || failed=$(expr $failed + 1)
93 group_gid=$($wbinfo --sid-to-gid=$group_sid | cut -d " " -f1)
94 echo "$DOMAIN/$GROUPNAME resolved to $group_gid"
95
96 testit "test $group_gid -eq $GROUPGID" test $group_gid -eq $GROUPGID || failed=$(expr $failed + 1)
97
98 # Delete LDAP records
99 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$USERNAME,$LDAPPREFIX"
100 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$GROUPNAME,$LDAPPREFIX"
101 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "$LDAPPREFIX"
102
103 exit $failed