pw_usermod_test.sh revision 285133
1275657Sbrd# $FreeBSD: head/usr.sbin/pw/tests/pw_usermod.sh 285133 2015-07-04 15:27:04Z bapt $
2275657Sbrd
3275657Sbrd# Import helper functions
4275657Sbrd. $(atf_get_srcdir)/helper_functions.shin
5275657Sbrd
6275657Sbrd# Test modifying a user
7275657Sbrdatf_test_case user_mod
8275657Sbrduser_mod_body() {
9275657Sbrd	populate_etc_skel
10275657Sbrd
11275657Sbrd	atf_check -s exit:67 -e match:"no such user" ${PW} usermod test
12275657Sbrd	atf_check -s exit:0 ${PW} useradd test
13275657Sbrd	atf_check -s exit:0 ${PW} usermod test
14275657Sbrd	atf_check -s exit:0 -o match:"^test:.*" \
15275657Sbrd		grep "^test:.*" $HOME/master.passwd
16275657Sbrd}
17275657Sbrd
18275829Sbrd# Test modifying a user with option -N
19275829Sbrdatf_test_case user_mod_noupdate
20275829Sbrduser_mod_noupdate_body() {
21275829Sbrd	populate_etc_skel
22275829Sbrd
23275829Sbrd	atf_check -s exit:67 -e match:"no such user" ${PW} usermod test -N
24275829Sbrd	atf_check -s exit:0 ${PW} useradd test
25275829Sbrd	atf_check -s exit:0 -o match:"^test:.*" ${PW} usermod test -N
26275829Sbrd	atf_check -s exit:0 -o match:"^test:.*" \
27275829Sbrd		grep "^test:.*" $HOME/master.passwd
28275829Sbrd}
29275829Sbrd
30275657Sbrd# Test modifying a user with comments
31275657Sbrdatf_test_case user_mod_comments
32275657Sbrduser_mod_comments_body() {
33275657Sbrd	populate_etc_skel
34275657Sbrd
35275657Sbrd	atf_check -s exit:0 ${PW} useradd test -c "Test User,home,123,456"
36275657Sbrd	atf_check -s exit:0 ${PW} usermod test -c "Test User,work,123,456"
37275657Sbrd	atf_check -s exit:0 -o match:"^test:.*:Test User,work,123,456:" \
38275657Sbrd		grep "^test:.*:Test User,work,123,456:" $HOME/master.passwd
39275657Sbrd}
40275657Sbrd
41275829Sbrd# Test modifying a user with comments with option -N
42275829Sbrdatf_test_case user_mod_comments_noupdate
43275829Sbrduser_mod_comments_noupdate_body() {
44275829Sbrd	populate_etc_skel
45275829Sbrd
46275829Sbrd	atf_check -s exit:0 ${PW} useradd test -c "Test User,home,123,456"
47275829Sbrd	atf_check -s exit:0 -o match:"^test:.*:Test User,work,123,456:" \
48275829Sbrd		${PW} usermod test -c "Test User,work,123,456" -N
49275829Sbrd	atf_check -s exit:0 -o match:"^test:.*:Test User,home,123,456:" \
50275829Sbrd		grep "^test:.*:Test User,home,123,456:" $HOME/master.passwd
51275829Sbrd}
52275829Sbrd
53275657Sbrd# Test modifying a user with invalid comments
54275657Sbrdatf_test_case user_mod_comments_invalid
55275657Sbrduser_mod_comments_invalid_body() {
56275657Sbrd	populate_etc_skel
57275657Sbrd
58275657Sbrd	atf_check -s exit:0 ${PW} useradd test
59275657Sbrd	atf_check -s exit:65 -e match:"invalid character" \
60275657Sbrd		${PW} usermod test -c "Test User,work,123:456,456"
61275657Sbrd	atf_check -s exit:1 -o empty \
62275657Sbrd		grep "^test:.*:Test User,work,123:456,456:" $HOME/master.passwd
63275829Sbrd	atf_check -s exit:0 -o match:"^test:\*" \
64275829Sbrd		grep "^test:\*" $HOME/master.passwd
65275657Sbrd}
66275657Sbrd
67275829Sbrd# Test modifying a user with invalid comments with option -N
68275829Sbrdatf_test_case user_mod_comments_invalid_noupdate
69275829Sbrduser_mod_comments_invalid_noupdate_body() {
70275829Sbrd	populate_etc_skel
71275829Sbrd
72275829Sbrd	atf_check -s exit:0 ${PW} useradd test
73275829Sbrd	atf_check -s exit:65 -e match:"invalid character" \
74275829Sbrd		${PW} usermod test -c "Test User,work,123:456,456" -N
75275829Sbrd	atf_check -s exit:1 -o empty \
76275829Sbrd		grep "^test:.*:Test User,work,123:456,456:" $HOME/master.passwd
77275829Sbrd	atf_check -s exit:0 -o match:"^test:\*" \
78275829Sbrd		grep "^test:\*" $HOME/master.passwd
79275829Sbrd}
80275829Sbrd
81275657Sbrd# Test modifying a user name with -l
82275657Sbrdatf_test_case user_mod_name
83275657Sbrduser_mod_name_body() {
84275657Sbrd	populate_etc_skel
85275657Sbrd
86275657Sbrd	atf_check -s exit:0 ${PW} useradd foo
87275657Sbrd	atf_check -s exit:0 ${PW} usermod foo -l "bar"
88275657Sbrd	atf_check -s exit:0 -o match:"^bar:.*" \
89275657Sbrd		grep "^bar:.*" $HOME/master.passwd
90275657Sbrd}
91275829Sbrd
92275829Sbrd# Test modifying a user name with -l with option -N
93275829Sbrdatf_test_case user_mod_name_noupdate
94275829Sbrduser_mod_name_noupdate_body() {
95275829Sbrd	populate_etc_skel
96275829Sbrd
97275829Sbrd	atf_check -s exit:0 ${PW} useradd foo
98275829Sbrd	atf_check -s exit:0 -o match:"^bar:.*" ${PW} usermod foo -l "bar" -N
99275829Sbrd	atf_check -s exit:0 -o match:"^foo:.*" \
100275829Sbrd		grep "^foo:.*" $HOME/master.passwd
101275829Sbrd}
102275829Sbrd
103284129Sbaptatf_test_case user_mod_rename
104284129Sbaptuser_mod_rename_body() {
105284129Sbapt	populate_etc_skel
106284129Sbapt
107284129Sbapt	atf_check -s exit:0 ${PW} useradd foo
108284129Sbapt	atf_check -s exit:0 ${PW} usermod foo -l bar
109284129Sbapt	atf_check -s exit:0 -o match:"^bar:.*" \
110284129Sbapt		grep "^bar:.*" ${HOME}/master.passwd
111284129Sbapt}
112284129Sbapt
113284129Sbaptatf_test_case user_mod_rename_too_long
114284129Sbaptuser_mod_rename_too_long_body() {
115284129Sbapt	populate_etc_skel
116284129Sbapt
117284129Sbapt	atf_check -s exit:0 ${PW} useradd foo
118284129Sbapt	atf_check -s exit:64 -e match:"too long" ${PW} usermod foo \
119284129Sbapt		-l name_very_very_very_very_very_long
120284129Sbapt}
121284129Sbapt
122285133Sbaptatf_test_case user_mod_h
123285133Sbaptuser_mod_h_body() {
124285133Sbapt	populate_etc_skel
125285133Sbapt
126285133Sbapt	atf_check -s exit:0 ${PW} useradd foo
127285133Sbapt	atf_check -s exit:0 ${PW} usermod foo -h 0 <<- EOF
128285133Sbapt	$(echo a)
129285133Sbapt	EOF
130285133Sbapt	atf_check -s exit:0 -o not-match:"^foo:\*:.*" \
131285133Sbapt		grep "^foo" ${HOME}/master.passwd
132285133Sbapt	atf_check -s exit:0 ${PW} usermod foo -h - <<- EOF
133285133Sbapt	$(echo b)
134285133Sbapt	EOF
135285133Sbapt	atf_check -s exit:0 -o match:"^foo:\*:.*" \
136285133Sbapt		grep "^foo" ${HOME}/master.passwd
137285133Sbapt	atf_check -e inline:"pw: '-h' expects a file descriptor or '-'\n" \
138285133Sbapt		-s exit:64 ${PW} usermod foo -h a <<- EOF
139285133Sbapt	$(echo a)
140285133Sbapt	EOF
141285133Sbapt}
142285133Sbapt
143285133Sbaptatf_test_case user_mod_H
144285133Sbaptuser_mod_H_body() {
145285133Sbapt	populate_etc_skel
146285133Sbapt
147285133Sbapt	atf_check -s exit:0 ${PW} useradd foo
148285133Sbapt	atf_check -s exit:0 ${PW} usermod foo -H 0 <<- EOF
149285133Sbapt	$(echo a)
150285133Sbapt	EOF
151285133Sbapt	atf_check -s exit:0 -o match:"^foo:a:.*" \
152285133Sbapt		grep "^foo" ${HOME}/master.passwd
153285133Sbapt	atf_check -s exit:64 -e inline:"pw: '-H' expects a file descriptor\n" \
154285133Sbapt		${PW} usermod foo -H -
155285133Sbapt}
156285133Sbapt
157275657Sbrdatf_init_test_cases() {
158275657Sbrd	atf_add_test_case user_mod
159275829Sbrd	atf_add_test_case user_mod_noupdate
160275657Sbrd	atf_add_test_case user_mod_comments
161275829Sbrd	atf_add_test_case user_mod_comments_noupdate
162284129Sbapt	atf_add_test_case user_mod_comments_invalid
163284129Sbapt	atf_add_test_case user_mod_comments_invalid_noupdate
164284129Sbapt	atf_add_test_case user_mod_rename
165275829Sbrd	atf_add_test_case user_mod_name_noupdate
166284129Sbapt	atf_add_test_case user_mod_rename
167284129Sbapt	atf_add_test_case user_mod_rename_too_long
168285133Sbapt	atf_add_test_case user_mod_h
169285133Sbapt	atf_add_test_case user_mod_H
170275657Sbrd}
171