]> CyberLeo.Net >> Repos - FreeBSD/releng/10.3.git/blob - usr.sbin/pw/tests/pw_usermod.sh
- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1
[FreeBSD/releng/10.3.git] / usr.sbin / pw / tests / pw_usermod.sh
1 # $FreeBSD$
2
3 # Import helper functions
4 . $(atf_get_srcdir)/helper_functions.shin
5
6 # Test modifying a user
7 atf_test_case user_mod
8 user_mod_body() {
9         populate_etc_skel
10
11         atf_check -s exit:67 -e match:"no such user" ${PW} usermod test
12         atf_check -s exit:0 ${PW} useradd test
13         atf_check -s exit:0 ${PW} usermod test
14         atf_check -s exit:0 -o match:"^test:.*" \
15                 grep "^test:.*" $HOME/master.passwd
16 }
17
18 # Test modifying a user with option -N
19 atf_test_case user_mod_noupdate
20 user_mod_noupdate_body() {
21         populate_etc_skel
22
23         atf_check -s exit:67 -e match:"no such user" ${PW} usermod test -N
24         atf_check -s exit:0 ${PW} useradd test
25         atf_check -s exit:0 -o match:"^test:.*" ${PW} usermod test -N
26         atf_check -s exit:0 -o match:"^test:.*" \
27                 grep "^test:.*" $HOME/master.passwd
28 }
29
30 # Test modifying a user with comments
31 atf_test_case user_mod_comments
32 user_mod_comments_body() {
33         populate_etc_skel
34
35         atf_check -s exit:0 ${PW} useradd test -c "Test User,home,123,456"
36         atf_check -s exit:0 ${PW} usermod test -c "Test User,work,123,456"
37         atf_check -s exit:0 -o match:"^test:.*:Test User,work,123,456:" \
38                 grep "^test:.*:Test User,work,123,456:" $HOME/master.passwd
39 }
40
41 # Test modifying a user with comments with option -N
42 atf_test_case user_mod_comments_noupdate
43 user_mod_comments_noupdate_body() {
44         populate_etc_skel
45
46         atf_check -s exit:0 ${PW} useradd test -c "Test User,home,123,456"
47         atf_check -s exit:0 -o match:"^test:.*:Test User,work,123,456:" \
48                 ${PW} usermod test -c "Test User,work,123,456" -N
49         atf_check -s exit:0 -o match:"^test:.*:Test User,home,123,456:" \
50                 grep "^test:.*:Test User,home,123,456:" $HOME/master.passwd
51 }
52
53 # Test modifying a user with invalid comments
54 atf_test_case user_mod_comments_invalid
55 user_mod_comments_invalid_body() {
56         populate_etc_skel
57
58         atf_check -s exit:0 ${PW} useradd test
59         atf_check -s exit:65 -e match:"invalid character" \
60                 ${PW} usermod test -c "Test User,work,123:456,456"
61         atf_check -s exit:1 -o empty \
62                 grep "^test:.*:Test User,work,123:456,456:" $HOME/master.passwd
63         atf_check -s exit:0 -o match:"^test:\*" \
64                 grep "^test:\*" $HOME/master.passwd
65 }
66
67 # Test modifying a user with invalid comments with option -N
68 atf_test_case user_mod_comments_invalid_noupdate
69 user_mod_comments_invalid_noupdate_body() {
70         populate_etc_skel
71
72         atf_check -s exit:0 ${PW} useradd test
73         atf_check -s exit:65 -e match:"invalid character" \
74                 ${PW} usermod test -c "Test User,work,123:456,456" -N
75         atf_check -s exit:1 -o empty \
76                 grep "^test:.*:Test User,work,123:456,456:" $HOME/master.passwd
77         atf_check -s exit:0 -o match:"^test:\*" \
78                 grep "^test:\*" $HOME/master.passwd
79 }
80
81 # Test modifying a user name with -l
82 atf_test_case user_mod_name
83 user_mod_name_body() {
84         populate_etc_skel
85
86         atf_check -s exit:0 ${PW} useradd foo
87         atf_check -s exit:0 ${PW} usermod foo -l "bar"
88         atf_check -s exit:0 -o match:"^bar:.*" \
89                 grep "^bar:.*" $HOME/master.passwd
90 }
91
92 # Test modifying a user name with -l with option -N
93 atf_test_case user_mod_name_noupdate
94 user_mod_name_noupdate_body() {
95         populate_etc_skel
96
97         atf_check -s exit:0 ${PW} useradd foo
98         atf_check -s exit:0 -o match:"^bar:.*" ${PW} usermod foo -l "bar" -N
99         atf_check -s exit:0 -o match:"^foo:.*" \
100                 grep "^foo:.*" $HOME/master.passwd
101 }
102
103 atf_test_case user_mod_rename_multigroups
104 user_mod_rename_multigroups_body() {
105         populate_etc_skel
106
107         atf_check -s exit:0 ${PW} groupadd test1
108         atf_check -s exit:0 ${PW} groupadd test2
109         atf_check -s exit:0 ${PW} useradd foo -G test1,test2
110         atf_check -o match:"foo" -s exit:0 ${PW} groupshow test1
111         atf_check -o match:"foo" -s exit:0 ${PW} groupshow test2
112         atf_check -s exit:0 ${PW} usermod foo -l bar
113         atf_check -o match:"bar" -s exit:0 ${PW} groupshow test1
114         atf_check -o match:"bar" -s exit:0 ${PW} groupshow test2
115 }
116
117 atf_test_case user_mod_nogroups
118 user_mod_nogroups_body() {
119         populate_etc_skel
120
121         atf_check -s exit:0 ${PW} groupadd test1
122         atf_check -s exit:0 ${PW} groupadd test2
123         atf_check -s exit:0 ${PW} groupadd test3
124         atf_check -s exit:0 ${PW} groupadd test4
125         atf_check -s exit:0 ${PW} useradd foo -G test1,test2
126         atf_check -o match:"foo" -s exit:0 ${PW} groupshow test1
127         atf_check -o match:"foo" -s exit:0 ${PW} groupshow test2
128         atf_check -s exit:0 ${PW} usermod foo -G test3,test4
129         atf_check -s exit:0 -o inline:"test3\ntest4\n" \
130                 awk -F\: '$4 == "foo" { print $1 }' ${HOME}/group
131 }
132
133 atf_test_case user_mod_rename
134 user_mod_rename_body() {
135         populate_etc_skel
136
137         atf_check -s exit:0 ${PW} useradd foo
138         atf_check -s exit:0 ${PW} usermod foo -l bar
139         atf_check -s exit:0 -o match:"^bar:.*" \
140                 grep "^bar:.*" ${HOME}/master.passwd
141 }
142
143 atf_test_case user_mod_rename_too_long
144 user_mod_rename_too_long_body() {
145         populate_etc_skel
146
147         atf_check -s exit:0 ${PW} useradd foo
148         atf_check -s exit:64 -e match:"too long" ${PW} usermod foo \
149                 -l name_very_very_very_very_very_long
150 }
151
152 atf_test_case user_mod_h
153 user_mod_h_body() {
154         populate_etc_skel
155
156         atf_check -s exit:0 ${PW} useradd foo
157         atf_check -s exit:0 ${PW} usermod foo -h 0 <<- EOF
158         $(echo a)
159         EOF
160         atf_check -s exit:0 -o not-match:"^foo:\*:.*" \
161                 grep "^foo" ${HOME}/master.passwd
162         atf_check -s exit:0 ${PW} usermod foo -h - <<- EOF
163         $(echo b)
164         EOF
165         atf_check -s exit:0 -o match:"^foo:\*:.*" \
166                 grep "^foo" ${HOME}/master.passwd
167         atf_check -e inline:"pw: Bad file descriptor 'a': invalid\n" \
168                 -s exit:64 ${PW} usermod foo -h a <<- EOF
169         $(echo a)
170         EOF
171 }
172
173 atf_test_case user_mod_H
174 user_mod_H_body() {
175         populate_etc_skel
176
177         atf_check -s exit:0 ${PW} useradd foo
178         atf_check -s exit:0 ${PW} usermod foo -H 0 <<- EOF
179         $(echo a)
180         EOF
181         atf_check -s exit:0 -o match:"^foo:a:.*" \
182                 grep "^foo" ${HOME}/master.passwd
183         atf_check -s exit:64 -e inline:"pw: -H expects a file descriptor\n" \
184                 ${PW} usermod foo -H -
185 }
186
187 atf_test_case user_mod_renamehome
188 user_mod_renamehome_body() {
189         populate_root_etc_skel
190
191         mkdir -p ${HOME}/home
192         atf_check -s exit:0 ${RPW} useradd foo -m
193         test -d ${HOME}/home/foo || atf_fail "Directory not created"
194         atf_check -s exit:0 ${RPW} usermod foo -l bar -d /home/bar -m
195         test -d ${HOME}/home/bar || atf_fail "Directory not created"
196 }
197
198 atf_test_case user_mod_uid
199 user_mod_uid_body() {
200         populate_etc_skel
201
202         atf_check -s exit:0 ${PW} useradd foo
203         atf_check -s exit:0 ${PW} usermod foo -u 5000
204 }
205
206 atf_init_test_cases() {
207         atf_add_test_case user_mod
208         atf_add_test_case user_mod_noupdate
209         atf_add_test_case user_mod_comments
210         atf_add_test_case user_mod_comments_noupdate
211         atf_add_test_case user_mod_comments_invalid
212         atf_add_test_case user_mod_comments_invalid_noupdate
213         atf_add_test_case user_mod_nogroups
214         atf_add_test_case user_mod_rename
215         atf_add_test_case user_mod_name_noupdate
216         atf_add_test_case user_mod_rename_too_long
217         atf_add_test_case user_mod_rename_multigroups
218         atf_add_test_case user_mod_h
219         atf_add_test_case user_mod_H
220         atf_add_test_case user_mod_renamehome
221         atf_add_test_case user_mod_uid
222 }