pidl:Wireshark Fix the type of array of pointerse to hf_ values
[Samba.git] / testprogs / blackbox / test_alias_membership.sh
blob510940a6f42959cd96168b179e28adc782d5d343
1 #!/bin/bash
3 if [ $# -lt 1 ]; then
4 cat <<EOF
5 Usage: test_alias_membership.sh PREFIX
6 EOF
7 exit 1
8 fi
10 PREFIX=$1
11 ADDC_CONFIGFILE="$PREFIX/ad_dc/etc/smb.conf"
12 shift 5
13 failed=0
15 . "$(dirname "$0")/subunit.sh"
16 . "$(dirname "$0")/common_test_fns.inc"
18 net_tool="${BINDIR}/net"
19 wbinfo="${BINDIR}/wbinfo"
21 # Create the following membership structure and test if exactly the 9 users
22 # are listed as members of the alias A1.
24 # A1
25 # |- A1U1
26 # |- A1U2
27 # |
28 # |- G1
29 # | |- G1U1
30 # | |- G1U2
31 # |
32 # |- G2
33 # | |- G2U1
34 # | |- G2U2
35 # | |
36 # | |- G3
37 # | |- G3U1
38 # | |- G3U2
39 # |
40 # |- LG1
41 # |- user1
44 # Local entities:
46 # Alias: A1
47 # Group: LG1
48 # User: user1 (no need to create, already available)
50 # Domain entities:
52 # Group: ADDOMAIN/G1 ADDOMAIN/G2 ADDOMAIN/G3
53 # User: ADDOMAIN/A1U1 ADDOMAIN/A1U2
54 # ADDOMAIN/G1U1 ADDOMAIN/G1U2
55 # ADDOMAIN/G2U1 ADDOMAIN/G2U2
56 # ADDOMAIN/G3U1 ADDOMAIN/G3U2
59 LOCALPREFIX="IDMAPRIDMEMBER"
61 function create_group() {
62 _group_name="${1}"
63 GNUPGHOME="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
64 group add "${_group_name}" --configfile="${ADDC_CONFIGFILE}"
65 _ret=$?
66 if [ ${_ret} -ne 0 ]; then
67 echo "Failed to create group ${_group_name}"
68 return 1
70 return 0
73 function delete_group() {
74 _group_name="${1}"
75 GNUPGHOME="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
76 group delete "${_group_name}" --configfile="${ADDC_CONFIGFILE}"
77 _ret=$?
78 if [ ${_ret} -ne 0 ]; then
79 echo "Failed to delete group ${_group_name}"
80 return 1
82 return 0
85 function create_user() {
86 _user_name="${1}"
87 _password="${2}"
88 GNUPGHOME="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
89 user create "${_user_name}" "${_password}" \
90 --configfile="${ADDC_CONFIGFILE}"
91 _ret=$?
92 if [ ${_ret} -ne 0 ]; then
93 echo "Failed to create user ${_user_name}"
94 return 1
96 return 0
99 function delete_user() {
100 _user_name="${1}"
101 GNUPGHOME="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
102 user delete "${_user_name}" --configfile="${ADDC_CONFIGFILE}"
103 _ret=$?
104 if [ ${_ret} -ne 0 ]; then
105 echo "Failed to delete user ${_user_name}"
106 return 1
108 return 0
111 for G in G1 G2 G3
113 testit "create group '$G'" create_group "${G}" || failed=$((failed + 1))
114 done
116 for U in G1U1 G1U2 G2U1 G2U2 G3U1 G3U2 A1U1 A1U2
118 testit "create user '$U'" create_user "${U}" Passw0rd.7 || failed=$((failed + 1))
119 done
121 while read -a line
123 group=${line[0]}
124 member=${line[1]}
125 testit "add member '$member' to group '$group'" "$PYTHON" "$BINDIR/samba-tool" group addmembers --configfile="$ADDC_CONFIGFILE" "$group" "$member" || failed=$((failed + 1))
126 done <<___MEMBERS
127 G1 G1U1
128 G1 G1U2
129 G2 G2U1
130 G2 G2U2
131 G2 G3
132 G3 G3U1
133 G3 G3U2
134 ___MEMBERS
136 testit "net sam createlocalgroup A1" "$VALGRIND" "$net_tool" sam createlocalgroup A1 || failed=$((failed + 1))
137 testit "net createdomaingroup LG1" "$VALGRIND" "$net_tool" sam createdomaingroup LG1 || failed=$((failed + 1))
138 testit "net sam addmem user1 to LG1" "$VALGRIND" "$net_tool" sam addmem LG1 "${LOCALPREFIX}\user1" || failed=$((failed + 1))
140 for M in "ADDOMAIN\A1U1" "ADDOMAIN\A1U2" "ADDOMAIN\G1" "ADDOMAIN\G2" "${LOCALPREFIX}\LG1"
142 testit "net sam addmem $M to A1" "$VALGRIND" "$net_tool" sam addmem A1 "$M" || failed=$((failed + 1))
143 done
145 # do not use testit_grep (that would call 9 times wbinfo) but use grep on the
146 # stored output
147 a1_alias=$( "$wbinfo" --group-info A1 )
149 for U in ADDOMAIN/a1u1 "${LOCALPREFIX}/user1" ADDOMAIN/g1u1 ADDOMAIN/g1u2 ADDOMAIN/g2u1 ADDOMAIN/g2u2 ADDOMAIN/g3u1 ADDOMAIN/g3u2 ADDOMAIN/a1u2;
151 count=$(echo "$a1_alias" | grep -c "$U")
152 testit "User $U is in alias" test "$count" -eq 1 || failed=$((failed + 1))
153 done
155 # check that there are exactly 8 commas separating the 9 users
156 count=$(echo "$a1_alias" | grep -o , | wc -l)
157 testit "There are 9 users" test "$count" -eq 8 || failed=$((failed + 1))
159 # cleanup
161 for M in "ADDOMAIN\A1U1" "ADDOMAIN\A1U2" "ADDOMAIN\G1" "ADDOMAIN\G2" "${LOCALPREFIX}\LG1"
163 testit "net sam delmem $M from A1" "$VALGRIND" "$net_tool" sam delmem A1 "$M" || failed=$((failed + 1))
164 done
165 testit "net sam delmem user1 from LG1" "$VALGRIND" "$net_tool" sam delmem LG1 "${LOCALPREFIX}\user1" || failed=$((failed + 1))
166 testit "net sam deletelocalgroup A1" "$VALGRIND" "$net_tool" sam deletelocalgroup A1 || failed=$((failed + 1))
167 testit "net sam deletedomaingroup LG1" "$VALGRIND" "$net_tool" sam deletedomaingroup LG1 || failed=$((failed + 1))
169 while read -a line
171 group=${line[0]}
172 member=${line[1]}
173 testit "del member '$member' from group '$group'" "$PYTHON" "$BINDIR/samba-tool" group removemembers --configfile="$ADDC_CONFIGFILE" "$group" "$member" || failed=$((failed + 1))
174 done <<___MEMBERS
175 G1 G1U1
176 G1 G1U2
177 G2 G2U1
178 G2 G2U2
179 G2 G3
180 G3 G3U1
181 G3 G3U2
182 ___MEMBERS
184 for G in G1 G2 G3
186 testit "delete group '$G'" delete_group "${G}" || failed=$((failed + 1))
187 done
189 for U in G1U1 G1U2 G2U1 G2U2 G3U1 G3U2 A1U1 A1U2
191 testit "delete user '$U'" delete_user "${U}" || failed=$((failed + 1))
192 done
194 exit $failed