xref: /freebsd/usr.sbin/pw/tests/pw_groupmod_test.sh (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1*458cbf0aSEnji Cooper
2*458cbf0aSEnji Cooper# Import helper functions
3*458cbf0aSEnji Cooper. $(atf_get_srcdir)/helper_functions.shin
4*458cbf0aSEnji Cooper
5*458cbf0aSEnji Cooper
6*458cbf0aSEnji Cooper# Test adding & removing a user from a group
7*458cbf0aSEnji Cooperatf_test_case groupmod_user
8*458cbf0aSEnji Coopergroupmod_user_body() {
9*458cbf0aSEnji Cooper	populate_etc_skel
10*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} addgroup test
11*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupmod test -m root
12*458cbf0aSEnji Cooper	atf_check -s exit:0 -o match:"^test:\*:1001:root$" \
13*458cbf0aSEnji Cooper		grep "^test:\*:.*:root$" $HOME/group
14*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupmod test -d root
15*458cbf0aSEnji Cooper	atf_check -s exit:0 -o match:"^test:\*:1001:$" \
16*458cbf0aSEnji Cooper		grep "^test:\*:.*:$" $HOME/group
17*458cbf0aSEnji Cooper}
18*458cbf0aSEnji Cooper
19*458cbf0aSEnji Cooper
20*458cbf0aSEnji Cooper# Test adding and removing a user that does not exist
21*458cbf0aSEnji Cooperatf_test_case groupmod_invalid_user
22*458cbf0aSEnji Coopergroupmod_invalid_user_body() {
23*458cbf0aSEnji Cooper	populate_etc_skel
24*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} addgroup test
25*458cbf0aSEnji Cooper	atf_check -s exit:67 -e match:"does not exist" ${PW} groupmod test -m foo
26*458cbf0aSEnji Cooper	atf_check -s exit:0  ${PW} groupmod test -d foo
27*458cbf0aSEnji Cooper}
28*458cbf0aSEnji Cooper
29*458cbf0aSEnji Cooperatf_test_case groupmod_bug_193704
30*458cbf0aSEnji Coopergroupmod_bug_193704_head() {
31*458cbf0aSEnji Cooper	atf_set "descr" "Regression test for the #193704 bug"
32*458cbf0aSEnji Cooper}
33*458cbf0aSEnji Coopergroupmod_bug_193704_body() {
34*458cbf0aSEnji Cooper	populate_etc_skel
35*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} groupadd test
36*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} groupmod test -l newgroupname
37*458cbf0aSEnji Cooper	atf_check -s exit:65 -e match:"^pw: unknown group" -x ${PW} groupshow test
38*458cbf0aSEnji Cooper}
39*458cbf0aSEnji Cooper
40*458cbf0aSEnji Cooperatf_test_case usermod_bug_185666
41*458cbf0aSEnji Cooperusermod_bug_185666_head() {
42*458cbf0aSEnji Cooper	atf_set "descr" "Regression test for the #185666 bug"
43*458cbf0aSEnji Cooper}
44*458cbf0aSEnji Cooper
45*458cbf0aSEnji Cooperusermod_bug_185666_body() {
46*458cbf0aSEnji Cooper	populate_etc_skel
47*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} useradd testuser
48*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} groupadd testgroup
49*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} groupadd testgroup2
50*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup
51*458cbf0aSEnji Cooper	atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser
52*458cbf0aSEnji Cooper	atf_check -o inline:"testgroup:*:1002:testuser\n" -x ${PW} groupshow testgroup
53*458cbf0aSEnji Cooper	atf_check -o inline:"testgroup2:*:1003:\n" -x ${PW} groupshow testgroup2
54*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup2
55*458cbf0aSEnji Cooper	atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser
56*458cbf0aSEnji Cooper	atf_check -o inline:"testgroup:*:1002:\n" -x ${PW} groupshow testgroup
57*458cbf0aSEnji Cooper	atf_check -o inline:"testgroup2:*:1003:testuser\n" -x ${PW} groupshow testgroup2
58*458cbf0aSEnji Cooper}
59*458cbf0aSEnji Cooper
60*458cbf0aSEnji Cooperatf_test_case do_not_duplicate_group_on_gid_change
61*458cbf0aSEnji Cooperdo_not_duplicate_group_on_gid_change_head() {
62*458cbf0aSEnji Cooper	atf_set "descr" "Do not duplicate group on gid change"
63*458cbf0aSEnji Cooper}
64*458cbf0aSEnji Cooper
65*458cbf0aSEnji Cooperdo_not_duplicate_group_on_gid_change_body() {
66*458cbf0aSEnji Cooper	populate_etc_skel
67*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} groupadd testgroup
68*458cbf0aSEnji Cooper	atf_check -s exit:0 -x ${PW} groupmod testgroup -g 12345
69*458cbf0aSEnji Cooper	# use grep to see if the entry has not be duplicated
70*458cbf0aSEnji Cooper	atf_check -o inline:"testgroup:*:12345:\n" -s exit:0 -x grep "^testgroup" ${HOME}/group
71*458cbf0aSEnji Cooper}
72*458cbf0aSEnji Cooper
73*458cbf0aSEnji Cooperatf_test_case groupmod_rename
74*458cbf0aSEnji Coopergroupmod_rename_body() {
75*458cbf0aSEnji Cooper	populate_etc_skel
76*458cbf0aSEnji Cooper
77*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupadd foo
78*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupmod foo -l bar
79*458cbf0aSEnji Cooper	atf_check -s exit:0 -o match:"^bar:.*" \
80*458cbf0aSEnji Cooper		grep "^bar:.*" ${HOME}/group
81*458cbf0aSEnji Cooper}
82*458cbf0aSEnji Cooper
83*458cbf0aSEnji Cooperatf_test_case groupmod_members
84*458cbf0aSEnji Coopergroupmod_members_body() {
85*458cbf0aSEnji Cooper	populate_etc_skel
86*458cbf0aSEnji Cooper
87*458cbf0aSEnji Cooper	for i in user1 user2 user3 user4; do
88*458cbf0aSEnji Cooper		atf_check -s exit:0 ${PW} useradd $i
89*458cbf0aSEnji Cooper	done
90*458cbf0aSEnji Cooper
91*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupadd foo -M "user1, user2"
92*458cbf0aSEnji Cooper	atf_check -o inline:"foo:*:1005:user1,user2\n" -s exit:0 \
93*458cbf0aSEnji Cooper		${PW} groupshow foo
94*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupmod foo -m "user3, user4"
95*458cbf0aSEnji Cooper	atf_check -o inline:"foo:*:1005:user1,user2,user3,user4\n" -s exit:0 \
96*458cbf0aSEnji Cooper		${PW} groupshow foo
97*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupmod foo -M "user1, user4"
98*458cbf0aSEnji Cooper	atf_check -o inline:"foo:*:1005:user1,user4\n" -s exit:0 \
99*458cbf0aSEnji Cooper		${PW} groupshow foo
100*458cbf0aSEnji Cooper	# what about duplicates
101*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupmod foo -m "user1, user2, user3, user4"
102*458cbf0aSEnji Cooper	atf_check -o inline:"foo:*:1005:user1,user4,user2,user3\n" -s exit:0 \
103*458cbf0aSEnji Cooper		${PW} groupshow foo
104*458cbf0aSEnji Cooper	atf_check -s exit:0 ${PW} groupmod foo -d "user1, user3"
105*458cbf0aSEnji Cooper	atf_check -o inline:"foo:*:1005:user4,user2\n" -s exit:0 \
106*458cbf0aSEnji Cooper		${PW} groupshow foo
107*458cbf0aSEnji Cooper}
108*458cbf0aSEnji Cooper
109*458cbf0aSEnji Cooperatf_init_test_cases() {
110*458cbf0aSEnji Cooper	atf_add_test_case groupmod_user
111*458cbf0aSEnji Cooper	atf_add_test_case groupmod_invalid_user
112*458cbf0aSEnji Cooper	atf_add_test_case groupmod_bug_193704
113*458cbf0aSEnji Cooper	atf_add_test_case usermod_bug_185666
114*458cbf0aSEnji Cooper	atf_add_test_case do_not_duplicate_group_on_gid_change
115*458cbf0aSEnji Cooper	atf_add_test_case groupmod_rename
116*458cbf0aSEnji Cooper	atf_add_test_case groupmod_members
117*458cbf0aSEnji Cooper}
118