]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - usr.sbin/pw/tests/pw_usermod.sh
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.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
104 user_mod_rename_body() {
105         populate_etc_skel
106
107         atf_check -s exit:0 ${PW} useradd foo
108         atf_check -s exit:0 ${PW} usermod foo -l bar
109         atf_check -s exit:0 -o match:"^bar:.*" \
110                 grep "^bar:.*" ${HOME}/master.passwd
111 }
112
113 atf_test_case user_mod_rename_too_long
114 user_mod_rename_too_long_body() {
115         populate_etc_skel
116
117         atf_check -s exit:0 ${PW} useradd foo
118         atf_check -s exit:64 -e match:"too long" ${PW} usermod foo \
119                 -l name_very_very_very_very_very_long
120 }
121
122 atf_init_test_cases() {
123         atf_add_test_case user_mod
124         atf_add_test_case user_mod_noupdate
125         atf_add_test_case user_mod_comments
126         atf_add_test_case user_mod_comments_noupdate
127         atf_add_test_case user_mod_comments_invalid
128         atf_add_test_case user_mod_comments_invalid_noupdate
129         atf_add_test_case user_mod_rename
130         atf_add_test_case user_mod_name_noupdate
131         atf_add_test_case user_mod_rename
132         atf_add_test_case user_mod_rename_too_long
133 }