1#!/bin/sh 2 3if [ $# -lt 1 ]; then 4cat <<EOF 5Usage: blackbox_group.sh PREFIX 6EOF 7exit 1; 8fi 9 10PREFIX="$1" 11shift 1 12 13. `dirname $0`/../../../testprogs/blackbox/subunit.sh 14 15 16rm -rf $PREFIX/simple-dc 17mkdir -p $PREFIX 18testit "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 19samba_tool="./bin/samba-tool" 20 21CONFIG="--configfile=$PREFIX/simple-dc/etc/smb.conf" 22 23#creation of two test users 24testit "user add" $PYTHON $samba_tool user create $CONFIG --given-name="User" --surname="Tester" --initial="UT" testuser testp@ssw0Rd 25testit "user add" $PYTHON $samba_tool user create $CONFIG --given-name="User1" --surname="Tester" --initial="UT" testuser1 testp@ssw0Rd 26 27# test samba-tool user getgroups command 28user_getgroups_primary_only() { 29 res=$($PYTHON $samba_tool user getgroups $CONFIG testuser) 30 31 primary_group=$(echo $res) 32 echo $primary_group | grep -q "^Domain Users$" || return 1 33} 34testit "user getgroups primary only" user_getgroups_primary_only 35 36#test creation of six different groups 37testit "group add" $PYTHON $samba_tool group add $CONFIG --group-scope='Domain' --group-type='Security' --description='DomainSecurityGroup' --mail-address='dsg@samba.org' --notes='Notes' dsg 38testit "group add" $PYTHON $samba_tool group add $CONFIG --group-scope='Global' --group-type='Security' --description='GlobalSecurityGroup' --mail-address='gsg@samba.org' --notes='Notes' gsg 39testit "group add" $PYTHON $samba_tool group add $CONFIG --group-scope='Universal' --group-type='Security' --description='UniversalSecurityGroup' --mail-address='usg@samba.org' --notes='Notes' usg 40testit "group add" $PYTHON $samba_tool group add $CONFIG --group-scope='Domain' --group-type='Distribution' --description='DomainDistributionGroup' --mail-address='ddg@samba.org' --notes='Notes' ddg 41testit "group add" $PYTHON $samba_tool group add $CONFIG --group-scope='Global' --group-type='Distribution' --description='GlobalDistributionGroup' --mail-address='gdg@samba.org' --notes='Notes' gdg 42testit "group add" $PYTHON $samba_tool group add $CONFIG --group-scope='Universal' --group-type='Distribution' --description='UniversalDistributionGroup' --mail-address='udg@samba.org' --notes='Notes' udg 43 44#test adding test users to all groups by their username 45testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG dsg testuser,testuser1 46testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG gsg testuser,testuser1 47testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG usg testuser,testuser1 48testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG ddg testuser,testuser1 49testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG gdg testuser,testuser1 50testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG udg testuser,testuser1 51 52# test samba-tool user getgroups command 53user_getgroups() { 54 groups="dsg gsg usg ddg gdg udg" 55 56 res=$($PYTHON $samba_tool user getgroups $CONFIG testuser) 57 for g in $groups ; do 58 echo "$res" | grep -q "^${g}$" || return 1 59 done 60 61 # the users primary group is expected in the first line 62 primary_group=$(echo "$res" | head -1) 63 echo $primary_group | grep -q "^Domain Users$" || return 1 64} 65testit "user getgroups" user_getgroups 66 67# test samba-tool user getgroups --full-dn command 68user_getgroups_full_dn() { 69 groups="dsg gsg usg ddg gdg udg" 70 71 res=$($PYTHON $samba_tool user getgroups --full-dn $CONFIG testuser) 72 for g in $groups ; do 73 group_dn=$($PYTHON $samba_tool group show $CONFIG $g --attributes=dn) 74 echo "$res" | grep -q "^${group_dn}$" || return 1 75 done 76 77 # the users primary group is expected in the first line 78 primary_group=$(echo "$res" | head -1) 79 group_dn=$($PYTHON $samba_tool group show $CONFIG "Domain Users" --attributes=dn) 80 echo $primary_group | grep -q "^${group_dn}$" || return 1 81} 82testit "user getgroups full-dn" user_getgroups 83 84# test settings a users primary group 85user_getgroups_primary_first() { 86 expected_primary_group=$1 87 res=$($PYTHON $samba_tool user getgroups $CONFIG testuser) 88 89 # the users primary group is expected in the first line 90 primary_group=$(echo "$res" | head -1) 91 echo $primary_group | grep -q "^${expected_primary_group}$" || return 1 92} 93testit "user setprimarygroup" $PYTHON $samba_tool user setprimarygroup $CONFIG testuser dsg 94testit "user getgroups primary first" user_getgroups_primary_first dsg 95testit "user setprimarygroup" $PYTHON $samba_tool user setprimarygroup $CONFIG testuser gsg 96testit "user getgroups primary first" user_getgroups_primary_first gsg 97 98# reset group (without testit, because I do not know how to quote the groupname) 99$PYTHON $samba_tool user setprimarygroup $CONFIG testuser 'Domain Users' 100 101#test removing test users from all groups by their username 102testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG dsg testuser,testuser1 103testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG gsg testuser,testuser1 104testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG usg testuser,testuser1 105testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG ddg testuser,testuser1 106testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG gdg testuser,testuser1 107testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG udg testuser,testuser1 108 109# creation of two test contacts 110testit "contact create" $PYTHON $samba_tool contact create $CONFIG --given-name="Con" --surname="Tester" --initial="CT" testcontact 111testit "contact create" $PYTHON $samba_tool contact create $CONFIG --given-name="Con1" --surname="Tester" --initial="CT" testcontact1 112 113# test adding test contacts to all groups by their cn 114testit "group addmembers contact" $PYTHON $samba_tool group addmembers $CONFIG dsg testcontact,testcontact1 --object-types=contact 115testit "group addmembers contact" $PYTHON $samba_tool group addmembers $CONFIG gsg testcontact,testcontact1 --object-types=contact 116testit "group addmembers contact" $PYTHON $samba_tool group addmembers $CONFIG usg testcontact,testcontact1 --object-types=contact 117testit "group addmembers contact" $PYTHON $samba_tool group addmembers $CONFIG ddg testcontact,testcontact1 --object-types=contact 118testit "group addmembers contact" $PYTHON $samba_tool group addmembers $CONFIG gdg testcontact,testcontact1 --object-types=contact 119testit "group addmembers contact" $PYTHON $samba_tool group addmembers $CONFIG udg testcontact,testcontact1 --object-types=contact 120 121# test removing test contacts from all groups by their cn 122testit "group removemembers contact" $PYTHON $samba_tool group removemembers $CONFIG dsg testcontact,testcontact1 --object-types=contact 123testit "group removemembers contact" $PYTHON $samba_tool group removemembers $CONFIG gsg testcontact,testcontact1 --object-types=contact 124testit "group removemembers contact" $PYTHON $samba_tool group removemembers $CONFIG usg testcontact,testcontact1 --object-types=contact 125testit "group removemembers contact" $PYTHON $samba_tool group removemembers $CONFIG ddg testcontact,testcontact1 --object-types=contact 126testit "group removemembers contact" $PYTHON $samba_tool group removemembers $CONFIG gdg testcontact,testcontact1 --object-types=contact 127testit "group removemembers contact" $PYTHON $samba_tool group removemembers $CONFIG udg testcontact,testcontact1 --object-types=contact 128 129# should not find test contact, because --object-types=user is specified 130testit_expect_failure "group addmembers contact failure" $PYTHON $samba_tool group addmembers $CONFIG dsg testcontact --object-types=user 131 132# test add contact with --object-types=all 133testit "group addmembers contact object-type all" $PYTHON $samba_tool group addmembers $CONFIG dsg testcontact --object-types=all 134 135# test remove contact with --object-types=all 136testit "group removemembers contact object-type all" $PYTHON $samba_tool group removemembers $CONFIG dsg testcontact --object-types=all 137 138# add test contact by DN 139testit "group addmembers contact dn" $PYTHON $samba_tool group addmembers $CONFIG dsg --member-dn=CN=testcontact,DC=foo,DC=example,DC=com 140 141# remove test contact by DN 142testit "group removemembers contact dn" $PYTHON $samba_tool group removemembers $CONFIG dsg --member-dn=CN=testcontact,DC=foo,DC=example,DC=com 143 144# delete test contacts 145testit "contact delete" $PYTHON $samba_tool contact delete $CONFIG testcontact 146testit "contact delete" $PYTHON $samba_tool contact delete $CONFIG testcontact1 147 148# creation of two test contacts with the same name in different OUs 149testit "ou create" $PYTHON $samba_tool ou create $CONFIG OU=tconou1 150testit "ou create" $PYTHON $samba_tool ou create $CONFIG OU=tconou2 151testit "contact create ou" $PYTHON $samba_tool contact create $CONFIG testcontact --ou=OU=tconou1 152testit "contact create ou" $PYTHON $samba_tool contact create $CONFIG testcontact --ou=OU=tconou2 153 154# expect failure here, since there are multiple results for testcontact 155testit_expect_failure "group addmembers contact same name failure" $PYTHON $samba_tool group addmembers $CONFIG dsg testcontact 156 157# add both contacts by DN 158testit "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 159 160# remove both contacts by DN 161testit "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 162 163# delete both contacts by DN 164testit "contact delete" $PYTHON $samba_tool contact delete $CONFIG CN=testcontact,OU=tconou1 165testit "contact delete" $PYTHON $samba_tool contact delete $CONFIG CN=testcontact,OU=tconou2 166 167#test adding test users to all groups by their cn 168#testit "group addmembers" $samba_tool group addmembers $CONFIG dsg "User UT. Tester,User1 UT. Tester" 169#testit "group addmembers" $samba_tool group addmembers $CONFIG gsg "User UT. Tester,User1 UT. Tester" 170#testit "group addmembers" $samba_tool group addmembers $CONFIG usg "User UT. Tester,User1 UT. Tester" 171#testit "group addmembers" $samba_tool group addmembers $CONFIG ddg "User UT. Tester,User1 UT. Tester" 172#testit "group addmembers" $samba_tool group addmembers $CONFIG gdg "User UT. Tester,User1 UT. Tester" 173#testit "group addmembers" $samba_tool group addmembers $CONFIG udg "User UT. Tester,User1 UT. Tester" 174 175#test removing test users from all groups by their cn 176#testit "group removemembers" $samba_tool group removemembers $CONFIG dsg "User UT. Tester,User1 UT. Tester" 177#testit "group removemembers" $samba_tool group removemembers $CONFIG gsg "User UT. Tester,User1 UT. Tester" 178#testit "group removemembers" $samba_tool group removemembers $CONFIG usg "User UT. Tester,User1 UT. Tester" 179#testit "group removemembers" $samba_tool group removemembers $CONFIG ddg "User UT. Tester,User1 UT. Tester" 180#testit "group removemembers" $samba_tool group removemembers $CONFIG gdg "User UT. Tester,User1 UT. Tester" 181#testit "group removemembers" $samba_tool group removemembers $CONFIG ugg "User UT. Tester,User1 UT. Tester" 182 183# delete test users 184testit "user delete" $PYTHON $samba_tool user delete $CONFIG testuser 185testit "user delete" $PYTHON $samba_tool user delete $CONFIG testuser1 186 187# creation of two new test users without spaces in cn 188# testit fails when spaces are used in arguments 189testit "user add" $PYTHON $samba_tool user create $CONFIG --given-name="User" --surname="Tester" --initial="UT" --use-username-as-cn testuser testp@ssw0Rd 190testit "user add" $PYTHON $samba_tool user create $CONFIG --given-name="User1" --surname="Tester" --initial="UT" --use-username-as-cn testuser1 testp@ssw0Rd 191 192# test adding test users to all groups by their DN 193testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG dsg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 194 195testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG dsg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 196testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG gsg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 197testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG gsg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 198testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG usg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 199testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG usg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 200testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG ddg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 201testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG ddg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 202 203# add two members by DN and listofmembers in one call 204testit "group addmembers" $PYTHON $samba_tool group addmembers $CONFIG gdg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com testuser1 205 206# add two members by DN with one call 207testit "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 208 209# test removing test users from all groups by their DN 210testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG dsg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 211testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG dsg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 212testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG gsg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 213testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG gsg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 214testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG usg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 215testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG usg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 216testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG ddg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com 217testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG ddg --member-dn=CN=testuser1,CN=Users,DC=foo,DC=example,DC=com 218 219# remove two members by DN and listofmembers in one call 220testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG gdg --member-dn=CN=testuser,CN=Users,DC=foo,DC=example,DC=com testuser1 221 222# remove two members by DN with one call 223testit "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 224 225# test --member-base-dn option - expect failure here, due to invalid base 226testit_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 227 228# test --member-base-dn option 229testit "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 230testit "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 231 232#test deletion of the groups 233testit "group delete" $PYTHON $samba_tool group delete $CONFIG dsg 234testit "group delete" $PYTHON $samba_tool group delete $CONFIG gsg 235testit "group delete" $PYTHON $samba_tool group delete $CONFIG usg 236testit "group delete" $PYTHON $samba_tool group delete $CONFIG ddg 237testit "group delete" $PYTHON $samba_tool group delete $CONFIG gdg 238testit "group delete" $PYTHON $samba_tool group delete $CONFIG udg 239 240# delete test users 241testit "user delete" $PYTHON $samba_tool user delete $CONFIG testuser 242testit "user delete" $PYTHON $samba_tool user delete $CONFIG testuser1 243 244#test listing of all groups 245testit "group list" $PYTHON $samba_tool group list $CONFIG 246 247#test listing of members of a particular group 248testit "group listmembers" $PYTHON $samba_tool group listmembers $CONFIG Users 249 250exit $failed 251