1458cbf0aSEnji Cooper
2458cbf0aSEnji Cooper# Import helper functions
3458cbf0aSEnji Cooper. $(atf_get_srcdir)/helper_functions.shin
4458cbf0aSEnji Cooper
5458cbf0aSEnji Cooper
6458cbf0aSEnji Cooper# Test that a user can be deleted when another user is part of this
7458cbf0aSEnji Cooper# user's default group and does not go into an infinate loop.
8458cbf0aSEnji Cooper# PR: 191427
9458cbf0aSEnji Cooperatf_test_case rmuser_seperate_group cleanup
10458cbf0aSEnji Cooperrmuser_seperate_group_head() {
11458cbf0aSEnji Cooper	atf_set "timeout" "30"
12458cbf0aSEnji Cooper}
13458cbf0aSEnji Cooperrmuser_seperate_group_body() {
14458cbf0aSEnji Cooper	populate_etc_skel
15458cbf0aSEnji Cooper	${PW} useradd test || atf_fail "Creating test user"
16458cbf0aSEnji Cooper	${PW} groupmod test -M 'test,root' || \
17458cbf0aSEnji Cooper		atf_fail "Modifying the group"
18458cbf0aSEnji Cooper	${PW} userdel test || atf_fail "Delete the test user"
19458cbf0aSEnji Cooper}
20458cbf0aSEnji Cooper
21458cbf0aSEnji Cooper
22458cbf0aSEnji Cooperatf_test_case user_do_not_try_to_delete_root_if_user_unknown
23458cbf0aSEnji Cooperuser_do_not_try_to_delete_root_if_user_unknown_head() {
24458cbf0aSEnji Cooper	atf_set "descr" \
25458cbf0aSEnji Cooper		"Make sure not to try to remove root if deleting an unknown user"
26458cbf0aSEnji Cooper}
27458cbf0aSEnji Cooperuser_do_not_try_to_delete_root_if_user_unknown_body() {
28458cbf0aSEnji Cooper	populate_etc_skel
29458cbf0aSEnji Cooper	atf_check -e inline:"pw: Bad id 'plop': invalid\n" -s exit:64 -x \
30458cbf0aSEnji Cooper		${PW} userdel -u plop
31458cbf0aSEnji Cooper}
32458cbf0aSEnji Cooper
33458cbf0aSEnji Cooperatf_test_case delete_files
34458cbf0aSEnji Cooperdelete_files_body() {
35458cbf0aSEnji Cooper	populate_root_etc_skel
36458cbf0aSEnji Cooper
37458cbf0aSEnji Cooper	mkdir -p ${HOME}/skel
38458cbf0aSEnji Cooper	touch ${HOME}/skel/a
39458cbf0aSEnji Cooper	mkdir -p ${HOME}/home
40458cbf0aSEnji Cooper	mkdir -p ${HOME}/var/mail
41458cbf0aSEnji Cooper	atf_check -s exit:0 ${RPW} useradd foo -k /skel -m
42458cbf0aSEnji Cooper	test -d ${HOME}/home || atf_fail "Fail to create home directory"
43458cbf0aSEnji Cooper	test -f ${HOME}/var/mail/foo || atf_fail "Mail file not created"
44458cbf0aSEnji Cooper	atf_check -s exit:0 ${RPW} userdel foo -r
45458cbf0aSEnji Cooper	if test -f ${HOME}/var/mail/foo; then
46458cbf0aSEnji Cooper		atf_fail "Mail file not removed"
47458cbf0aSEnji Cooper	fi
48458cbf0aSEnji Cooper}
49458cbf0aSEnji Cooper
50458cbf0aSEnji Cooperatf_test_case delete_numeric_name
51458cbf0aSEnji Cooperdelete_numeric_name_body() {
52458cbf0aSEnji Cooper	populate_etc_skel
53458cbf0aSEnji Cooper
54458cbf0aSEnji Cooper	atf_check ${PW} useradd -n foo -u 4001
55458cbf0aSEnji Cooper	atf_check -e inline:"pw: no such user \`4001'\n" -s exit:67 \
56458cbf0aSEnji Cooper		${PW} userdel -n 4001
57458cbf0aSEnji Cooper}
58458cbf0aSEnji Cooper
59458cbf0aSEnji Cooperatf_test_case home_not_a_dir
60458cbf0aSEnji Cooperhome_not_a_dir_body() {
61458cbf0aSEnji Cooper	populate_root_etc_skel
62458cbf0aSEnji Cooper	touch ${HOME}/foo
63458cbf0aSEnji Cooper	atf_check ${RPW} useradd foo -d /foo
64458cbf0aSEnji Cooper	atf_check ${RPW} userdel foo -r
65458cbf0aSEnji Cooper}
66458cbf0aSEnji Cooper
67a75f9261SBaptiste Daroussinatf_test_case home_shared
68a75f9261SBaptiste Daroussinhome_shared_body() {
69a75f9261SBaptiste Daroussin	populate_root_etc_skel
70a75f9261SBaptiste Daroussin	mkdir ${HOME}/shared
71a75f9261SBaptiste Daroussin	atf_check ${RPW} useradd -n testuser1 -d /shared
72a75f9261SBaptiste Daroussin	atf_check ${RPW} useradd -n testuser2 -d /shared
73a75f9261SBaptiste Daroussin	atf_check ${RPW} userdel -n testuser1 -r
74a75f9261SBaptiste Daroussin	test -d ${HOME}/shared || atf_fail "Shared home has been removed"
75a75f9261SBaptiste Daroussin}
76a75f9261SBaptiste Daroussin
77a75f9261SBaptiste Daroussinatf_test_case home_regular_dir
78a75f9261SBaptiste Daroussinhome_regular_dir_body() {
79a75f9261SBaptiste Daroussin	populate_root_etc_skel
80a75f9261SBaptiste Daroussin	atf_check ${RPW} useradd -n foo -d /foo
81a75f9261SBaptiste Daroussin	atf_check ${RPW} userdel -n foo -r
82a75f9261SBaptiste Daroussin	[ ! -d ${HOME}/foo ] || atf_fail "Home has not been removed"
83a75f9261SBaptiste Daroussin}
84a75f9261SBaptiste Daroussin
85458cbf0aSEnji Cooperatf_init_test_cases() {
86458cbf0aSEnji Cooper	atf_add_test_case rmuser_seperate_group
87458cbf0aSEnji Cooper	atf_add_test_case user_do_not_try_to_delete_root_if_user_unknown
88458cbf0aSEnji Cooper	atf_add_test_case delete_files
89458cbf0aSEnji Cooper	atf_add_test_case delete_numeric_name
90458cbf0aSEnji Cooper	atf_add_test_case home_not_a_dir
91a75f9261SBaptiste Daroussin	atf_add_test_case home_shared
92a75f9261SBaptiste Daroussin	atf_add_test_case home_regular_dir
93458cbf0aSEnji Cooper}
94