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