pw_usermod_test.sh revision 286196
1# $FreeBSD: head/usr.sbin/pw/tests/pw_usermod.sh 286196 2015-08-02 12:47:50Z bapt $ 2 3# Import helper functions 4. $(atf_get_srcdir)/helper_functions.shin 5 6# Test modifying a user 7atf_test_case user_mod 8user_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 19atf_test_case user_mod_noupdate 20user_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 31atf_test_case user_mod_comments 32user_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 42atf_test_case user_mod_comments_noupdate 43user_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 54atf_test_case user_mod_comments_invalid 55user_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 68atf_test_case user_mod_comments_invalid_noupdate 69user_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 82atf_test_case user_mod_name 83user_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 93atf_test_case user_mod_name_noupdate 94user_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 103atf_test_case user_mod_rename_multigroups 104user_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 117atf_test_case user_mod_nogroups 118user_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 133atf_test_case user_mod_rename 134user_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 143atf_test_case user_mod_rename_too_long 144user_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 152atf_test_case user_mod_h 153user_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 173atf_test_case user_mod_H 174user_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 187atf_test_case user_mod_renamehome 188user_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 198atf_init_test_cases() { 199 atf_add_test_case user_mod 200 atf_add_test_case user_mod_noupdate 201 atf_add_test_case user_mod_comments 202 atf_add_test_case user_mod_comments_noupdate 203 atf_add_test_case user_mod_comments_invalid 204 atf_add_test_case user_mod_comments_invalid_noupdate 205 atf_add_test_case user_mod_nogroups 206 atf_add_test_case user_mod_rename 207 atf_add_test_case user_mod_name_noupdate 208 atf_add_test_case user_mod_rename_too_long 209 atf_add_test_case user_mod_rename_multigroups 210 atf_add_test_case user_mod_h 211 atf_add_test_case user_mod_H 212 atf_add_test_case user_mod_renamehome 213} 214