5 Usage: blackbox_group.sh PREFIX
13 . $
(dirname $0)/..
/..
/..
/testprogs
/blackbox
/subunit.sh
15 rm -rf $PREFIX/simple-dc
17 testit
"simple-dc" $PYTHON $BINDIR/samba-tool domain provision
--server-role="dc" --domain=FOO
--realm=foo.example.com
--domain-sid=S-1-5-21-4177067393-1453636373-93818738
--targetdir=$PREFIX/simple-dc
--use-ntvfs
18 samba_tool
="./bin/samba-tool"
20 CONFIG
="--configfile=$PREFIX/simple-dc/etc/smb.conf"
22 #creation of two test users
23 testit
"user add" $PYTHON $samba_tool user create
$CONFIG --given-name="User" --surname="Tester" --initial="UT" testuser testp@ssw0Rd
24 testit
"user add" $PYTHON $samba_tool user create
$CONFIG --given-name="User1" --surname="Tester" --initial="UT" testuser1 testp@ssw0Rd
26 # test samba-tool user getgroups command
27 user_getgroups_primary_only
()
29 res
=$
($PYTHON $samba_tool user getgroups
$CONFIG testuser
)
31 primary_group
=$
(echo $res)
32 echo $primary_group |
grep -q "^Domain Users$" ||
return 1
34 testit
"user getgroups primary only" user_getgroups_primary_only
36 #test creation of six different groups
37 testit
"group add" $PYTHON $samba_tool group add
$CONFIG --group-scope='Domain' --group-type='Security' --description='DomainSecurityGroup' --mail-address='dsg@samba.org' --notes='Notes' dsg
38 testit
"group add" $PYTHON $samba_tool group add
$CONFIG --group-scope='Global' --group-type='Security' --description='GlobalSecurityGroup' --mail-address='gsg@samba.org' --notes='Notes' gsg
39 testit
"group add" $PYTHON $samba_tool group add
$CONFIG --group-scope='Universal' --group-type='Security' --description='UniversalSecurityGroup' --mail-address='usg@samba.org' --notes='Notes' usg
40 testit
"group add" $PYTHON $samba_tool group add
$CONFIG --group-scope='Domain' --group-type='Distribution' --description='DomainDistributionGroup' --mail-address='ddg@samba.org' --notes='Notes' ddg
41 testit
"group add" $PYTHON $samba_tool group add
$CONFIG --group-scope='Global' --group-type='Distribution' --description='GlobalDistributionGroup' --mail-address='gdg@samba.org' --notes='Notes' gdg
42 testit
"group add" $PYTHON $samba_tool group add
$CONFIG --group-scope='Universal' --group-type='Distribution' --description='UniversalDistributionGroup' --mail-address='udg@samba.org' --notes='Notes' udg
44 #test adding test users to all groups by their username
45 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG dsg testuser
,testuser1
46 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG gsg testuser
,testuser1
47 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG usg testuser
,testuser1
48 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG ddg testuser
,testuser1
49 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG gdg testuser
,testuser1
50 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG udg testuser
,testuser1
52 # test samba-tool user getgroups command
55 groups
="dsg gsg usg ddg gdg udg"
57 res
=$
($PYTHON $samba_tool user getgroups
$CONFIG testuser
)
59 echo "$res" |
grep -q "^${g}$" ||
return 1
62 # the users primary group is expected in the first line
63 primary_group
=$
(echo "$res" |
head -1)
64 echo $primary_group |
grep -q "^Domain Users$" ||
return 1
66 testit
"user getgroups" user_getgroups
68 # test samba-tool user getgroups --full-dn command
69 user_getgroups_full_dn
()
71 groups
="dsg gsg usg ddg gdg udg"
73 res
=$
($PYTHON $samba_tool user getgroups
--full-dn $CONFIG testuser
)
75 group_dn
=$
($PYTHON $samba_tool group show
$CONFIG $g --attributes=dn
)
76 echo "$res" |
grep -q "^${group_dn}$" ||
return 1
79 # the users primary group is expected in the first line
80 primary_group
=$
(echo "$res" |
head -1)
81 group_dn
=$
($PYTHON $samba_tool group show
$CONFIG "Domain Users" --attributes=dn
)
82 echo $primary_group |
grep -q "^${group_dn}$" ||
return 1
84 testit
"user getgroups full-dn" user_getgroups
86 # test settings a users primary group
87 user_getgroups_primary_first
()
89 expected_primary_group
=$1
90 res
=$
($PYTHON $samba_tool user getgroups
$CONFIG testuser
)
92 # the users primary group is expected in the first line
93 primary_group
=$
(echo "$res" |
head -1)
94 echo $primary_group |
grep -q "^${expected_primary_group}$" ||
return 1
96 testit_expect_failure_grep
"user setprimarygroup domain-local" "ERROR: Failed to set primary group 'dsg' for user 'testuser'.*may not set resource group as primary group!" $PYTHON $samba_tool user setprimarygroup
$CONFIG testuser dsg
97 testit
"user setprimarygroup" $PYTHON $samba_tool user setprimarygroup
$CONFIG testuser gsg
98 testit
"user getgroups primary first" user_getgroups_primary_first gsg
100 # reset group (without testit, because I do not know how to quote the groupname)
101 $PYTHON $samba_tool user setprimarygroup
$CONFIG testuser
'Domain Users'
103 #test removing test users from all groups by their username
104 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG dsg testuser
,testuser1
105 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG gsg testuser
,testuser1
106 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG usg testuser
,testuser1
107 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG ddg testuser
,testuser1
108 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG gdg testuser
,testuser1
109 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG udg testuser
,testuser1
111 # creation of two test contacts
112 testit
"contact create" $PYTHON $samba_tool contact create
$CONFIG --given-name="Con" --surname="Tester" --initial="CT" testcontact
113 testit
"contact create" $PYTHON $samba_tool contact create
$CONFIG --given-name="Con1" --surname="Tester" --initial="CT" testcontact1
115 # test adding test contacts to all groups by their cn
116 testit
"group addmembers contact" $PYTHON $samba_tool group addmembers
$CONFIG dsg testcontact
,testcontact1
--object-types=contact
117 testit
"group addmembers contact" $PYTHON $samba_tool group addmembers
$CONFIG gsg testcontact
,testcontact1
--object-types=contact
118 testit
"group addmembers contact" $PYTHON $samba_tool group addmembers
$CONFIG usg testcontact
,testcontact1
--object-types=contact
119 testit
"group addmembers contact" $PYTHON $samba_tool group addmembers
$CONFIG ddg testcontact
,testcontact1
--object-types=contact
120 testit
"group addmembers contact" $PYTHON $samba_tool group addmembers
$CONFIG gdg testcontact
,testcontact1
--object-types=contact
121 testit
"group addmembers contact" $PYTHON $samba_tool group addmembers
$CONFIG udg testcontact
,testcontact1
--object-types=contact
123 # test removing test contacts from all groups by their cn
124 testit
"group removemembers contact" $PYTHON $samba_tool group removemembers
$CONFIG dsg testcontact
,testcontact1
--object-types=contact
125 testit
"group removemembers contact" $PYTHON $samba_tool group removemembers
$CONFIG gsg testcontact
,testcontact1
--object-types=contact
126 testit
"group removemembers contact" $PYTHON $samba_tool group removemembers
$CONFIG usg testcontact
,testcontact1
--object-types=contact
127 testit
"group removemembers contact" $PYTHON $samba_tool group removemembers
$CONFIG ddg testcontact
,testcontact1
--object-types=contact
128 testit
"group removemembers contact" $PYTHON $samba_tool group removemembers
$CONFIG gdg testcontact
,testcontact1
--object-types=contact
129 testit
"group removemembers contact" $PYTHON $samba_tool group removemembers
$CONFIG udg testcontact
,testcontact1
--object-types=contact
131 # should not find test contact, because --object-types=user is specified
132 testit_expect_failure
"group addmembers contact failure" $PYTHON $samba_tool group addmembers
$CONFIG dsg testcontact
--object-types=user
134 # test add contact with --object-types=all
135 testit
"group addmembers contact object-type all" $PYTHON $samba_tool group addmembers
$CONFIG dsg testcontact
--object-types=all
137 # test listing contacts as group members
138 testit_grep
"group listmembers contact" "^testcontact" $PYTHON $samba_tool group listmembers
$CONFIG dsg
140 # test listing contacts as group members
141 # Make sure that the test contact is listed, because it does not have the
142 # accountExpires attribute and can not expire.
143 testit_grep
"group listmembers contact hide-expired" "^testcontact" $PYTHON $samba_tool group listmembers
$CONFIG dsg
--hide-expired
144 testit_grep
"group listmembers contact hide-disabled" "^testcontact" $PYTHON $samba_tool group listmembers
$CONFIG dsg
--hide-disabled
146 # test remove contact with --object-types=all
147 testit
"group removemembers contact object-type all" $PYTHON $samba_tool group removemembers
$CONFIG dsg testcontact
--object-types=all
149 # add test contact by DN
150 testit
"group addmembers contact dn" $PYTHON $samba_tool group addmembers
$CONFIG dsg
--member-dn=CN
=testcontact
,DC
=foo
,DC
=example
,DC
=com
152 # remove test contact by DN
153 testit
"group removemembers contact dn" $PYTHON $samba_tool group removemembers
$CONFIG dsg
--member-dn=CN
=testcontact
,DC
=foo
,DC
=example
,DC
=com
155 # delete test contacts
156 testit
"contact delete" $PYTHON $samba_tool contact delete
$CONFIG testcontact
157 testit
"contact delete" $PYTHON $samba_tool contact delete
$CONFIG testcontact1
159 # creation of two test contacts with the same name in different OUs
160 testit
"ou create" $PYTHON $samba_tool ou create
$CONFIG OU
=tconou1
161 testit
"ou create" $PYTHON $samba_tool ou create
$CONFIG OU
=tconou2
162 testit
"contact create ou" $PYTHON $samba_tool contact create
$CONFIG testcontact
--ou=OU
=tconou1
163 testit
"contact create ou" $PYTHON $samba_tool contact create
$CONFIG testcontact
--ou=OU
=tconou2
165 # expect failure here, since there are multiple results for testcontact
166 testit_expect_failure
"group addmembers contact same name failure" $PYTHON $samba_tool group addmembers
$CONFIG dsg testcontact
168 # add both contacts by DN
169 testit
"group addmembers contact dn" $PYTHON $samba_tool group addmembers
$CONFIG dsg
--member-dn=CN
=testcontact
,OU
=tconou1
,DC
=foo
,DC
=example
,DC
=com
--member-dn=CN
=testcontact
,OU
=tconou2
,DC
=foo
,DC
=example
,DC
=com
171 # remove both contacts by DN
172 testit
"group removemembers contact dn" $PYTHON $samba_tool group removemembers
$CONFIG dsg
--member-dn=CN
=testcontact
,OU
=tconou1
,DC
=foo
,DC
=example
,DC
=com
--member-dn=CN
=testcontact
,OU
=tconou2
,DC
=foo
,DC
=example
,DC
=com
174 # delete both contacts by DN
175 testit
"contact delete" $PYTHON $samba_tool contact delete
$CONFIG CN
=testcontact
,OU
=tconou1
176 testit
"contact delete" $PYTHON $samba_tool contact delete
$CONFIG CN
=testcontact
,OU
=tconou2
178 #test adding test users to all groups by their cn
179 #testit "group addmembers" $samba_tool group addmembers $CONFIG dsg "User UT. Tester,User1 UT. Tester"
180 #testit "group addmembers" $samba_tool group addmembers $CONFIG gsg "User UT. Tester,User1 UT. Tester"
181 #testit "group addmembers" $samba_tool group addmembers $CONFIG usg "User UT. Tester,User1 UT. Tester"
182 #testit "group addmembers" $samba_tool group addmembers $CONFIG ddg "User UT. Tester,User1 UT. Tester"
183 #testit "group addmembers" $samba_tool group addmembers $CONFIG gdg "User UT. Tester,User1 UT. Tester"
184 #testit "group addmembers" $samba_tool group addmembers $CONFIG udg "User UT. Tester,User1 UT. Tester"
186 #test removing test users from all groups by their cn
187 #testit "group removemembers" $samba_tool group removemembers $CONFIG dsg "User UT. Tester,User1 UT. Tester"
188 #testit "group removemembers" $samba_tool group removemembers $CONFIG gsg "User UT. Tester,User1 UT. Tester"
189 #testit "group removemembers" $samba_tool group removemembers $CONFIG usg "User UT. Tester,User1 UT. Tester"
190 #testit "group removemembers" $samba_tool group removemembers $CONFIG ddg "User UT. Tester,User1 UT. Tester"
191 #testit "group removemembers" $samba_tool group removemembers $CONFIG gdg "User UT. Tester,User1 UT. Tester"
192 #testit "group removemembers" $samba_tool group removemembers $CONFIG ugg "User UT. Tester,User1 UT. Tester"
195 testit
"user delete" $PYTHON $samba_tool user delete
$CONFIG testuser
196 testit
"user delete" $PYTHON $samba_tool user delete
$CONFIG testuser1
198 # creation of two new test users without spaces in cn
199 # testit fails when spaces are used in arguments
200 testit
"user add" $PYTHON $samba_tool user create
$CONFIG --given-name="User" --surname="Tester" --initial="UT" --use-username-as-cn testuser testp@ssw0Rd
201 testit
"user add" $PYTHON $samba_tool user create
$CONFIG --given-name="User1" --surname="Tester" --initial="UT" --use-username-as-cn testuser1 testp@ssw0Rd
203 # test adding test users to all groups by their DN
204 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG dsg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
206 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG dsg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
207 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG gsg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
208 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG gsg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
209 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG usg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
210 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG usg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
211 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG ddg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
212 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG ddg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
214 # add two members by DN and listofmembers in one call
215 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG gdg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com testuser1
217 # add two members by DN with one call
218 testit
"group addmembers" $PYTHON $samba_tool group addmembers
$CONFIG udg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
220 # test removing test users from all groups by their DN
221 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG dsg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
222 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG dsg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
223 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG gsg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
224 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG gsg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
225 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG usg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
226 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG usg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
227 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG ddg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
228 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG ddg
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
230 # remove two members by DN and listofmembers in one call
231 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG gdg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com testuser1
233 # remove two members by DN with one call
234 testit
"group removemembers" $PYTHON $samba_tool group removemembers
$CONFIG udg
--member-dn=CN
=testuser
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
--member-dn=CN
=testuser1
,CN
=Users
,DC
=foo
,DC
=example
,DC
=com
236 # test --member-base-dn option - expect failure here, due to invalid base
237 testit_expect_failure
"group addmembers with invalid search member base" $PYTHON $samba_tool group addmembers
$CONFIG dsg testcontact
--member-base-dn=OU
=doesnotexist
,DC
=foo
,DC
=example
,DC
=com
239 # test --member-base-dn option
240 testit
"group addmembers with member search base" $PYTHON $samba_tool group addmembers
$CONFIG dsg testuser
--member-base-dn=CN
=Users
,DC
=foo
,DC
=example
,DC
=com
241 testit
"group removemembers with member search base" $PYTHON $samba_tool group removemembers
$CONFIG dsg testuser
--member-base-dn=CN
=Users
,DC
=foo
,DC
=example
,DC
=com
243 #test deletion of the groups
244 testit
"group delete" $PYTHON $samba_tool group delete
$CONFIG dsg
245 testit
"group delete" $PYTHON $samba_tool group delete
$CONFIG gsg
246 testit
"group delete" $PYTHON $samba_tool group delete
$CONFIG usg
247 testit
"group delete" $PYTHON $samba_tool group delete
$CONFIG ddg
248 testit
"group delete" $PYTHON $samba_tool group delete
$CONFIG gdg
249 testit
"group delete" $PYTHON $samba_tool group delete
$CONFIG udg
252 testit
"user delete" $PYTHON $samba_tool user delete
$CONFIG testuser
253 testit
"user delete" $PYTHON $samba_tool user delete
$CONFIG testuser1
255 #test listing of all groups
256 testit
"group list" $PYTHON $samba_tool group list
$CONFIG
258 #test listing of members of a particular group
259 testit
"group listmembers" $PYTHON $samba_tool group listmembers
$CONFIG Users