5 Usage: test_alias_membership.sh PREFIX
11 ADDC_CONFIGFILE
="$PREFIX/ad_dc/etc/smb.conf"
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.
48 # User: user1 (no need to create, already available)
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
() {
63 GNUPGHOME
="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
64 group add
"${_group_name}" --configfile="${ADDC_CONFIGFILE}"
66 if [ ${_ret} -ne 0 ]; then
67 echo "Failed to create group ${_group_name}"
73 function delete_group
() {
75 GNUPGHOME
="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
76 group delete
"${_group_name}" --configfile="${ADDC_CONFIGFILE}"
78 if [ ${_ret} -ne 0 ]; then
79 echo "Failed to delete group ${_group_name}"
85 function create_user
() {
88 GNUPGHOME
="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
89 user create
"${_user_name}" "${_password}" \
90 --configfile="${ADDC_CONFIGFILE}"
92 if [ ${_ret} -ne 0 ]; then
93 echo "Failed to create user ${_user_name}"
99 function delete_user
() {
101 GNUPGHOME
="${PREFIX}/ad_dc/gnupg" "${PYTHON}" "${BINDIR}/samba-tool" \
102 user delete
"${_user_name}" --configfile="${ADDC_CONFIGFILE}"
104 if [ ${_ret} -ne 0 ]; then
105 echo "Failed to delete user ${_user_name}"
113 testit
"create group '$G'" create_group
"${G}" || failed
=$
((failed
+ 1))
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))
125 testit
"add member '$member' to group '$group'" "$PYTHON" "$BINDIR/samba-tool" group addmembers
--configfile="$ADDC_CONFIGFILE" "$group" "$member" || failed
=$
((failed
+ 1))
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))
145 # do not use testit_grep (that would call 9 times wbinfo) but use grep on the
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))
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))
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))
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))
173 testit
"del member '$member' from group '$group'" "$PYTHON" "$BINDIR/samba-tool" group removemembers
--configfile="$ADDC_CONFIGFILE" "$group" "$member" || failed
=$
((failed
+ 1))
186 testit
"delete group '$G'" delete_group
"${G}" || failed
=$
((failed
+ 1))
189 for U
in G1U1 G1U2 G2U1 G2U2 G3U1 G3U2 A1U1 A1U2
191 testit
"delete user '$U'" delete_user
"${U}" || failed
=$
((failed
+ 1))