1272578Sbrd# $FreeBSD: releng/11.0/usr.sbin/pw/tests/pw_groupmod.sh 285411 2015-07-11 22:35:07Z bapt $
2272578Sbrd
3272578Sbrd# Import helper functions
4272578Sbrd. $(atf_get_srcdir)/helper_functions.shin
5272578Sbrd
6272578Sbrd
7272578Sbrd# Test adding & removing a user from a group
8272578Sbrdatf_test_case groupmod_user
9272578Sbrdgroupmod_user_body() {
10272578Sbrd	populate_etc_skel
11274727Sbrd	atf_check -s exit:0 ${PW} addgroup test
12274727Sbrd	atf_check -s exit:0 ${PW} groupmod test -m root
13272578Sbrd	atf_check -s exit:0 -o match:"^test:\*:1001:root$" \
14272578Sbrd		grep "^test:\*:.*:root$" $HOME/group
15274727Sbrd	atf_check -s exit:0 ${PW} groupmod test -d root
16272578Sbrd	atf_check -s exit:0 -o match:"^test:\*:1001:$" \
17272578Sbrd		grep "^test:\*:.*:$" $HOME/group
18272578Sbrd}
19272578Sbrd
20272578Sbrd
21272578Sbrd# Test adding and removing a user that does not exist
22272578Sbrdatf_test_case groupmod_invalid_user
23272578Sbrdgroupmod_invalid_user_body() {
24272578Sbrd	populate_etc_skel
25274727Sbrd	atf_check -s exit:0 ${PW} addgroup test
26274727Sbrd	atf_check -s exit:67 -e match:"does not exist" ${PW} groupmod test -m foo
27274727Sbrd	atf_check -s exit:0  ${PW} groupmod test -d foo
28272578Sbrd}
29272578Sbrd
30273772Sbaptatf_test_case groupmod_bug_193704
31273772Sbaptgroupmod_bug_193704_head() {
32273772Sbapt	atf_set "descr" "Regression test for the #193704 bug"
33273772Sbapt}
34273772Sbaptgroupmod_bug_193704_body() {
35273772Sbapt	populate_etc_skel
36274727Sbrd	atf_check -s exit:0 -x ${PW} groupadd test
37274727Sbrd	atf_check -s exit:0 -x ${PW} groupmod test -l newgroupname
38274727Sbrd	atf_check -s exit:65 -e match:"^pw: unknown group" -x ${PW} groupshow test
39273772Sbapt}
40272578Sbrd
41273779Sbaptatf_test_case usermod_bug_185666
42273779Sbaptusermod_bug_185666_head() {
43273779Sbapt	atf_set "descr" "Regression test for the #185666 bug"
44273779Sbapt}
45273779Sbapt
46273779Sbaptusermod_bug_185666_body() {
47273779Sbapt	populate_etc_skel
48274727Sbrd	atf_check -s exit:0 -x ${PW} useradd testuser
49274727Sbrd	atf_check -s exit:0 -x ${PW} groupadd testgroup
50274727Sbrd	atf_check -s exit:0 -x ${PW} groupadd testgroup2
51274727Sbrd	atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup
52274727Sbrd	atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser
53274727Sbrd	atf_check -o inline:"testgroup:*:1002:testuser\n" -x ${PW} groupshow testgroup
54274727Sbrd	atf_check -o inline:"testgroup2:*:1003:\n" -x ${PW} groupshow testgroup2
55274727Sbrd	atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup2
56274727Sbrd	atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser
57274727Sbrd	atf_check -o inline:"testgroup:*:1002:\n" -x ${PW} groupshow testgroup
58274727Sbrd	atf_check -o inline:"testgroup2:*:1003:testuser\n" -x ${PW} groupshow testgroup2
59273779Sbapt}
60273779Sbapt
61273791Sbaptatf_test_case do_not_duplicate_group_on_gid_change
62273791Sbaptdo_not_duplicate_group_on_gid_change_head() {
63273791Sbapt	atf_set "descr" "Do not duplicate group on gid change"
64273791Sbapt}
65273791Sbapt
66273791Sbaptdo_not_duplicate_group_on_gid_change_body() {
67273791Sbapt	populate_etc_skel
68274727Sbrd	atf_check -s exit:0 -x ${PW} groupadd testgroup
69274727Sbrd	atf_check -s exit:0 -x ${PW} groupmod testgroup -g 12345
70273791Sbapt	# use grep to see if the entry has not be duplicated
71273791Sbapt	atf_check -o inline:"testgroup:*:12345:\n" -s exit:0 -x grep "^testgroup" ${HOME}/group
72273791Sbapt}
73273791Sbapt
74284129Sbaptatf_test_case groupmod_rename
75284129Sbaptgroupmod_rename_body() {
76284129Sbapt	populate_etc_skel
77284129Sbapt
78284129Sbapt	atf_check -s exit:0 ${PW} groupadd foo
79284129Sbapt	atf_check -s exit:0 ${PW} groupmod foo -l bar
80284129Sbapt	atf_check -s exit:0 -o match:"^bar:.*" \
81284129Sbapt		grep "^bar:.*" ${HOME}/group
82284129Sbapt}
83284129Sbapt
84285411Sbaptatf_test_case groupmod_members
85285411Sbaptgroupmod_members_body() {
86285411Sbapt	populate_etc_skel
87285411Sbapt
88285411Sbapt	for i in user1 user2 user3 user4; do
89285411Sbapt		atf_check -s exit:0 ${PW} useradd $i
90285411Sbapt	done
91285411Sbapt
92285411Sbapt	atf_check -s exit:0 ${PW} groupadd foo -M "user1, user2"
93285411Sbapt	atf_check -o inline:"foo:*:1005:user1,user2\n" -s exit:0 \
94285411Sbapt		${PW} groupshow foo
95285411Sbapt	atf_check -s exit:0 ${PW} groupmod foo -m "user3, user4"
96285411Sbapt	atf_check -o inline:"foo:*:1005:user1,user2,user3,user4\n" -s exit:0 \
97285411Sbapt		${PW} groupshow foo
98285411Sbapt	atf_check -s exit:0 ${PW} groupmod foo -M "user1, user4"
99285411Sbapt	atf_check -o inline:"foo:*:1005:user1,user4\n" -s exit:0 \
100285411Sbapt		${PW} groupshow foo
101285411Sbapt	# what about duplicates
102285411Sbapt	atf_check -s exit:0 ${PW} groupmod foo -m "user1, user2, user3, user4"
103285411Sbapt	atf_check -o inline:"foo:*:1005:user1,user4,user2,user3\n" -s exit:0 \
104285411Sbapt		${PW} groupshow foo
105285411Sbapt	atf_check -s exit:0 ${PW} groupmod foo -d "user1, user3"
106285411Sbapt	atf_check -o inline:"foo:*:1005:user4,user2\n" -s exit:0 \
107285411Sbapt		${PW} groupshow foo
108285411Sbapt}
109285411Sbapt
110272578Sbrdatf_init_test_cases() {
111272578Sbrd	atf_add_test_case groupmod_user
112272578Sbrd	atf_add_test_case groupmod_invalid_user
113273772Sbapt	atf_add_test_case groupmod_bug_193704
114273779Sbapt	atf_add_test_case usermod_bug_185666
115273791Sbapt	atf_add_test_case do_not_duplicate_group_on_gid_change
116284129Sbapt	atf_add_test_case groupmod_rename
117285411Sbapt	atf_add_test_case groupmod_members
118272578Sbrd}
119