tests: Test samba-tool user setprimarygroup command
[samba.git] / source4 / setup / tests / blackbox_group.sh
1 #!/bin/sh
2
3 if [ $# -lt 1 ]; then
4 cat <<EOF
5 Usage: blackbox_group.sh PREFIX
6 EOF
7 exit 1;
8 fi
9
10 PREFIX="$1"
11 shift 1
12
13 . `dirname $0`/../../../testprogs/blackbox/subunit.sh
14
15
16 rm -rf $PREFIX/simple-dc
17 mkdir -p $PREFIX
18 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
19 samba_tool="./bin/samba-tool"
20
21 CONFIG="--configfile=$PREFIX/simple-dc/etc/smb.conf"
22
23 #creation of two test subjects
24 testit "user add" $PYTHON $samba_tool user create $CONFIG --given-name="User" --surname="Tester" --initial="UT" testuser testp@ssw0Rd
25 testit "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
28 user_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 }
34 testit "user getgroups primary only" user_getgroups_primary_only
35
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
43
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
51
52 # test samba-tool user getgroups command
53 user_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 }
65 testit "user getgroups" user_getgroups
66
67 # test settings a users primary group
68 user_getgroups_primary_first() {
69         expected_primary_group=$1
70         res=$($PYTHON $samba_tool user getgroups $CONFIG testuser)
71
72         # the users primary group is expected in the first line
73         primary_group=$(echo "$res" | head -1)
74         echo $primary_group | grep -q "^${expected_primary_group}$" || return 1
75 }
76 testit "user setprimarygroup" $PYTHON $samba_tool user setprimarygroup $CONFIG testuser dsg
77 testit "user getgroups primary first" user_getgroups_primary_first dsg
78 testit "user setprimarygroup" $PYTHON $samba_tool user setprimarygroup $CONFIG testuser gsg
79 testit "user getgroups primary first" user_getgroups_primary_first gsg
80
81 # reset group (without testit, because I do not know how to quote the groupname)
82 $PYTHON $samba_tool user setprimarygroup $CONFIG testuser 'Domain Users'
83
84 #test removing test users from all groups by their username
85 testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG dsg testuser,testuser1
86 testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG gsg testuser,testuser1
87 testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG usg testuser,testuser1
88 testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG ddg testuser,testuser1
89 testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG gdg testuser,testuser1
90 testit "group removemembers" $PYTHON $samba_tool group removemembers $CONFIG udg testuser,testuser1
91
92 #test adding test users to all groups by their cn
93 #testit "group addmembers" $samba_tool group addmembers $CONFIG dsg "User UT. Tester,User1 UT. Tester"
94 #testit "group addmembers" $samba_tool group addmembers $CONFIG gsg "User UT. Tester,User1 UT. Tester"
95 #testit "group addmembers" $samba_tool group addmembers $CONFIG usg "User UT. Tester,User1 UT. Tester"
96 #testit "group addmembers" $samba_tool group addmembers $CONFIG ddg "User UT. Tester,User1 UT. Tester"
97 #testit "group addmembers" $samba_tool group addmembers $CONFIG gdg "User UT. Tester,User1 UT. Tester"
98 #testit "group addmembers" $samba_tool group addmembers $CONFIG udg "User UT. Tester,User1 UT. Tester"
99
100 #test removing test users from all groups by their cn
101 #testit "group removemembers" $samba_tool group removemembers $CONFIG dsg "User UT. Tester,User1 UT. Tester"
102 #testit "group removemembers" $samba_tool group removemembers $CONFIG gsg "User UT. Tester,User1 UT. Tester"
103 #testit "group removemembers" $samba_tool group removemembers $CONFIG usg "User UT. Tester,User1 UT. Tester"
104 #testit "group removemembers" $samba_tool group removemembers $CONFIG ddg "User UT. Tester,User1 UT. Tester"
105 #testit "group removemembers" $samba_tool group removemembers $CONFIG gdg "User UT. Tester,User1 UT. Tester"
106 #testit "group removemembers" $samba_tool group removemembers $CONFIG ugg "User UT. Tester,User1 UT. Tester"
107
108 #test deletion of the groups
109 testit "group delete" $PYTHON $samba_tool group delete $CONFIG dsg
110 testit "group delete" $PYTHON $samba_tool group delete $CONFIG gsg
111 testit "group delete" $PYTHON $samba_tool group delete $CONFIG usg
112 testit "group delete" $PYTHON $samba_tool group delete $CONFIG ddg
113 testit "group delete" $PYTHON $samba_tool group delete $CONFIG gdg
114 testit "group delete" $PYTHON $samba_tool group delete $CONFIG udg
115
116 #test listing of all groups
117 testit "group list" $PYTHON $samba_tool group list $CONFIG
118
119 #test listing of members of a particular group
120 testit "group listmembers" $PYTHON $samba_tool group listmembers $CONFIG Users
121
122 exit $failed