pw_groupmod_test.sh revision 316257
1132720Skan# $FreeBSD: stable/10/usr.sbin/pw/tests/pw_groupmod_test.sh 316257 2017-03-30 06:20:58Z ngie $
2132720Skan
3169691Skan# Import helper functions
4132720Skan. $(atf_get_srcdir)/helper_functions.shin
5132720Skan
6132720Skan
7132720Skan# Test adding & removing a user from a group
8132720Skanatf_test_case groupmod_user
9132720Skangroupmod_user_body() {
10132720Skan	populate_etc_skel
11132720Skan	atf_check -s exit:0 ${PW} addgroup test
12132720Skan	atf_check -s exit:0 ${PW} groupmod test -m root
13132720Skan	atf_check -s exit:0 -o match:"^test:\*:1001:root$" \
14132720Skan		grep "^test:\*:.*:root$" $HOME/group
15132720Skan	atf_check -s exit:0 ${PW} groupmod test -d root
16132720Skan	atf_check -s exit:0 -o match:"^test:\*:1001:$" \
17132720Skan		grep "^test:\*:.*:$" $HOME/group
18132720Skan}
19169691Skan
20132720Skan
21132720Skan# Test adding and removing a user that does not exist
22132720Skanatf_test_case groupmod_invalid_user
23132720Skangroupmod_invalid_user_body() {
24132720Skan	populate_etc_skel
25132720Skan	atf_check -s exit:0 ${PW} addgroup test
26132720Skan	atf_check -s exit:67 -e match:"does not exist" ${PW} groupmod test -m foo
27132720Skan	atf_check -s exit:0  ${PW} groupmod test -d foo
28132720Skan}
29132720Skan
30132720Skanatf_test_case groupmod_bug_193704
31169691Skangroupmod_bug_193704_head() {
32169691Skan	atf_set "descr" "Regression test for the #193704 bug"
33169691Skan}
34169691Skangroupmod_bug_193704_body() {
35132720Skan	populate_etc_skel
36132720Skan	atf_check -s exit:0 -x ${PW} groupadd test
37132720Skan	atf_check -s exit:0 -x ${PW} groupmod test -l newgroupname
38132720Skan	atf_check -s exit:65 -e match:"^pw: unknown group" -x ${PW} groupshow test
39132720Skan}
40132720Skan
41132720Skanatf_test_case usermod_bug_185666
42169691Skanusermod_bug_185666_head() {
43132720Skan	atf_set "descr" "Regression test for the #185666 bug"
44169691Skan}
45169691Skan
46132720Skanusermod_bug_185666_body() {
47132720Skan	populate_etc_skel
48132720Skan	atf_check -s exit:0 -x ${PW} useradd testuser
49132720Skan	atf_check -s exit:0 -x ${PW} groupadd testgroup
50132720Skan	atf_check -s exit:0 -x ${PW} groupadd testgroup2
51132720Skan	atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup
52132720Skan	atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser
53132720Skan	atf_check -o inline:"testgroup:*:1002:testuser\n" -x ${PW} groupshow testgroup
54132720Skan	atf_check -o inline:"testgroup2:*:1003:\n" -x ${PW} groupshow testgroup2
55132720Skan	atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup2
56132720Skan	atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser
57132720Skan	atf_check -o inline:"testgroup:*:1002:\n" -x ${PW} groupshow testgroup
58132720Skan	atf_check -o inline:"testgroup2:*:1003:testuser\n" -x ${PW} groupshow testgroup2
59132720Skan}
60132720Skan
61132720Skanatf_test_case do_not_duplicate_group_on_gid_change
62169691Skando_not_duplicate_group_on_gid_change_head() {
63169691Skan	atf_set "descr" "Do not duplicate group on gid change"
64132720Skan}
65132720Skan
66132720Skando_not_duplicate_group_on_gid_change_body() {
67132720Skan	populate_etc_skel
68132720Skan	atf_check -s exit:0 -x ${PW} groupadd testgroup
69132720Skan	atf_check -s exit:0 -x ${PW} groupmod testgroup -g 12345
70132720Skan	# use grep to see if the entry has not be duplicated
71132720Skan	atf_check -o inline:"testgroup:*:12345:\n" -s exit:0 -x grep "^testgroup" ${HOME}/group
72169691Skan}
73169691Skan
74132720Skanatf_test_case groupmod_rename
75132720Skangroupmod_rename_body() {
76132720Skan	populate_etc_skel
77132720Skan
78132720Skan	atf_check -s exit:0 ${PW} groupadd foo
79132720Skan	atf_check -s exit:0 ${PW} groupmod foo -l bar
80132720Skan	atf_check -s exit:0 -o match:"^bar:.*" \
81132720Skan		grep "^bar:.*" ${HOME}/group
82132720Skan}
83132720Skan
84132720Skanatf_test_case groupmod_members
85132720Skangroupmod_members_body() {
86132720Skan	populate_etc_skel
87132720Skan
88132720Skan	for i in user1 user2 user3 user4; do
89132720Skan		atf_check -s exit:0 ${PW} useradd $i
90132720Skan	done
91132720Skan
92132720Skan	atf_check -s exit:0 ${PW} groupadd foo -M "user1, user2"
93132720Skan	atf_check -o inline:"foo:*:1005:user1,user2\n" -s exit:0 \
94132720Skan		${PW} groupshow foo
95132720Skan	atf_check -s exit:0 ${PW} groupmod foo -m "user3, user4"
96132720Skan	atf_check -o inline:"foo:*:1005:user1,user2,user3,user4\n" -s exit:0 \
97132720Skan		${PW} groupshow foo
98132720Skan	atf_check -s exit:0 ${PW} groupmod foo -M "user1, user4"
99132720Skan	atf_check -o inline:"foo:*:1005:user1,user4\n" -s exit:0 \
100132720Skan		${PW} groupshow foo
101132720Skan	# what about duplicates
102132720Skan	atf_check -s exit:0 ${PW} groupmod foo -m "user1, user2, user3, user4"
103132720Skan	atf_check -o inline:"foo:*:1005:user1,user4,user2,user3\n" -s exit:0 \
104132720Skan		${PW} groupshow foo
105132720Skan	atf_check -s exit:0 ${PW} groupmod foo -d "user1, user3"
106132720Skan	atf_check -o inline:"foo:*:1005:user4,user2\n" -s exit:0 \
107132720Skan		${PW} groupshow foo
108132720Skan}
109132720Skan
110132720Skanatf_init_test_cases() {
111132720Skan	atf_add_test_case groupmod_user
112132720Skan	atf_add_test_case groupmod_invalid_user
113132720Skan	atf_add_test_case groupmod_bug_193704
114132720Skan	atf_add_test_case usermod_bug_185666
115132720Skan	atf_add_test_case do_not_duplicate_group_on_gid_change
116132720Skan	atf_add_test_case groupmod_rename
117132720Skan	atf_add_test_case groupmod_members
118132720Skan}
119132720Skan