nsswitch: Extend idmap_rfc2307 testcase for reverse lookup
[Samba.git] / nsswitch / tests / test_idmap_rfc2307.sh
blobfc4c383c424d139e79dafac6716d5929d9a52563
1 #!/bin/sh
2 # Test id mapping through idmap_rfc2307 module
3 if [ $# -lt 9 ]; then
4 echo Usage: $0 DOMAIN USERNAME UID USERNAME2 UID2 GROUPNAME GID GROUPNAME2 GID2 LDAPPREFIX DC_SERVER DC_USERNAME DC_PASSWORD
5 exit 1
6 fi
8 DOMAIN="$1"
9 USERNAME="$2"
10 USERUID="$3"
11 USERNAME2="$4"
12 USERUID2="$5"
13 GROUPNAME="$6"
14 GROUPGID="$7"
15 GROUPNAME2="$8"
16 GROUPGID2="$9"
17 shift 9
18 LDAPPREFIX="$1"
19 DC_SERVER="$2"
20 DC_USERNAME="$3"
21 DC_PASSWORD="$4"
23 wbinfo="$VALGRIND $BINDIR/wbinfo"
24 ldbadd="$BINDIR/ldbadd"
25 ldbdel="$BINDIR/ldbdel"
26 failed=0
28 . `dirname $0`/../../testprogs/blackbox/subunit.sh
30 # Delete LDAP records
31 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$USERNAME,$LDAPPREFIX"
32 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$USERNAME2,$LDAPPREFIX"
33 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$GROUPNAME,$LDAPPREFIX"
34 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$GROUPNAME2,$LDAPPREFIX"
35 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "$LDAPPREFIX"
37 # Add id mapping information to LDAP
39 cat > $PREFIX/tmpldb <<EOF
40 dn: $LDAPPREFIX
41 objectclass: organizationalUnit
42 EOF
44 testit "add ldap prefix" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
46 cat > $PREFIX/tmpldb <<EOF
47 dn: cn=$USERNAME,$LDAPPREFIX
48 objectClass: organizationalPerson
49 objectClass: posixAccount
50 ou: People
51 cn: $USERNAME
52 uid: $USERNAME
53 uidNumber: $USERUID
54 gidNumber: 1
55 homeDirectory: /home/admin
56 EOF
58 testit "add ldap user mapping record" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
60 cat > $PREFIX/tmpldb <<EOF
61 dn: cn=$USERNAME2,$LDAPPREFIX
62 objectClass: organizationalPerson
63 objectClass: posixAccount
64 ou: People
65 cn: $USERNAME2
66 uid: $USERNAME2
67 uidNumber: $USERUID2
68 gidNumber: 2
69 homeDirectory: /home/admin
70 EOF
72 testit "add second ldap user mapping record" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
74 cat > $PREFIX/tmpldb <<EOF
75 dn: cn=$GROUPNAME,$LDAPPREFIX
76 objectClass: posixGroup
77 objectClass: groupOfNames
78 cn: $GROUPNAME
79 gidNumber: $GROUPGID
80 member: cn=$USERNAME,$LDAPPREFIX
81 EOF
83 testit "add ldap group mapping record" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
85 cat > $PREFIX/tmpldb <<EOF
86 dn: cn=$GROUPNAME2,$LDAPPREFIX
87 objectClass: posixGroup
88 objectClass: groupOfNames
89 cn: $GROUPNAME2
90 gidNumber: $GROUPGID2
91 member: cn=$USERNAME,$LDAPPREFIX
92 EOF
94 testit "add second ldap group mapping record" $VALGRIND $ldbadd -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD $PREFIX/tmpldb
96 rm -f $PREFIX/tmpldbmodify
98 testit "wbinfo --name-to-sid" $wbinfo --name-to-sid "$DOMAIN\\$USERNAME" || failed=$(expr $failed + 1)
99 user_sid=$($wbinfo -n "$DOMAIN\\$USERNAME" | cut -d " " -f1)
100 echo "$DOMAIN\\$USERNAME resolved to $user_sid"
102 testit "wbinfo --sid-to-uid=$user_sid" $wbinfo --sid-to-uid=$user_sid || failed=$(expr $failed + 1)
103 user_uid=$($wbinfo --sid-to-uid=$user_sid | cut -d " " -f1)
104 echo "$DOMAIN\\$USERNAME resolved to $user_uid"
106 testit "test $user_uid -eq $USERUID" test $user_uid -eq $USERUID || failed=$(expr $failed + 1)
108 # Not sure how to get group names with spaces to resolve through testit
109 #testit "wbinfo --name-to-sid" $wbinfo --name-to-sid="$DOMAIN\\$GROUPNAME" || failed=$(expr $failed + 1)
110 group_sid=$($wbinfo --name-to-sid="$DOMAIN\\$GROUPNAME" | cut -d " " -f1)
111 echo "$DOMAIN\\$GROUPNAME resolved to $group_sid"
113 testit "wbinfo --sid-to-gid=$group_sid" $wbinfo --sid-to-gid=$group_sid || failed=$(expr $failed + 1)
114 group_gid=$($wbinfo --sid-to-gid=$group_sid | cut -d " " -f1)
115 echo "$DOMAIN\\$GROUPNAME resolved to $group_gid"
117 testit "test $group_gid -eq $GROUPGID" test $group_gid -eq $GROUPGID || failed=$(expr $failed + 1)
119 # Use different user and group for reverse lookup to not read from cache
121 testit "$wbinfo --uid-to-sid=$USERUID2" $wbinfo --uid-to-sid=$USERUID2 || failed=$(expr $failed + 1)
122 user_sid2=$($wbinfo --uid-to-sid=$USERUID2 | cut -d " " -f1)
123 echo "UID $USERUID2 resolved to SID $user_sid2"
125 testit "$wbinfo --sid-to-name=$user_sid2" $wbinfo --sid-to-name=$user_sid2 || failed=$(expr $failed + 1)
126 user_name2=$($wbinfo --sid-to-name=$user_sid2 | cut -d " " -f1)
127 echo "SID $user_sid2 resolved to $user_name2"
129 testit "test $user_name2 = $DOMAIN\\$USERNAME2" test "$(echo $user_name2 | tr A-Z a-z)" = "$(echo $DOMAIN\\$USERNAME2 | tr A-Z a-z)" || failed=$(expr $failed + 1)
131 testit "$wbinfo --gid-to-sid=$GROUPGID2" $wbinfo --gid-to-sid=$GROUPGID2 || failed=$(expr $failed + 1)
132 group_sid2=$($wbinfo --gid-to-sid=$GROUPGID2 | cut -d " " -f1)
133 echo "GID $GROUPGID2 resolved to SID $group_sid2"
135 testit "$wbinfo --sid-to-name=$group_sid2" $wbinfo --sid-to-name=$group_sid2 || failed=$(expr $failed + 1)
136 group_name2=$($wbinfo --sid-to-name=$group_sid2 | cut -d " " -f1)
137 echo "SID $group_sid2 resolved to $group_name2"
139 testit "test $group_name2 = $DOMAIN\\$GROUPNAME2" test "$(echo $group_name2 | tr A-Z a-z)" = "$(echo $DOMAIN\\$GROUPNAME2 | tr A-Z a-z)" || failed=$(expr $failed + 1)
141 # Delete LDAP records
142 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$USERNAME,$LDAPPREFIX"
143 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$USERNAME2,$LDAPPREFIX"
144 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$GROUPNAME,$LDAPPREFIX"
145 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "cn=$GROUPNAME2,$LDAPPREFIX"
146 $VALGRIND $ldbdel -H ldap://$DC_SERVER -U$DOMAIN/$DC_USERNAME%$DC_PASSWORD "$LDAPPREFIX"
148 exit $failed