1*458cbf0aSEnji Cooper 2*458cbf0aSEnji Cooper# Import helper functions 3*458cbf0aSEnji Cooper. $(atf_get_srcdir)/helper_functions.shin 4*458cbf0aSEnji Cooper 5*458cbf0aSEnji Cooper 6*458cbf0aSEnji Cooper# Test adding & removing a user from a group 7*458cbf0aSEnji Cooperatf_test_case groupmod_user 8*458cbf0aSEnji Coopergroupmod_user_body() { 9*458cbf0aSEnji Cooper populate_etc_skel 10*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} addgroup test 11*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod test -m root 12*458cbf0aSEnji Cooper atf_check -s exit:0 -o match:"^test:\*:1001:root$" \ 13*458cbf0aSEnji Cooper grep "^test:\*:.*:root$" $HOME/group 14*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod test -d root 15*458cbf0aSEnji Cooper atf_check -s exit:0 -o match:"^test:\*:1001:$" \ 16*458cbf0aSEnji Cooper grep "^test:\*:.*:$" $HOME/group 17*458cbf0aSEnji Cooper} 18*458cbf0aSEnji Cooper 19*458cbf0aSEnji Cooper 20*458cbf0aSEnji Cooper# Test adding and removing a user that does not exist 21*458cbf0aSEnji Cooperatf_test_case groupmod_invalid_user 22*458cbf0aSEnji Coopergroupmod_invalid_user_body() { 23*458cbf0aSEnji Cooper populate_etc_skel 24*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} addgroup test 25*458cbf0aSEnji Cooper atf_check -s exit:67 -e match:"does not exist" ${PW} groupmod test -m foo 26*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod test -d foo 27*458cbf0aSEnji Cooper} 28*458cbf0aSEnji Cooper 29*458cbf0aSEnji Cooperatf_test_case groupmod_bug_193704 30*458cbf0aSEnji Coopergroupmod_bug_193704_head() { 31*458cbf0aSEnji Cooper atf_set "descr" "Regression test for the #193704 bug" 32*458cbf0aSEnji Cooper} 33*458cbf0aSEnji Coopergroupmod_bug_193704_body() { 34*458cbf0aSEnji Cooper populate_etc_skel 35*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} groupadd test 36*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} groupmod test -l newgroupname 37*458cbf0aSEnji Cooper atf_check -s exit:65 -e match:"^pw: unknown group" -x ${PW} groupshow test 38*458cbf0aSEnji Cooper} 39*458cbf0aSEnji Cooper 40*458cbf0aSEnji Cooperatf_test_case usermod_bug_185666 41*458cbf0aSEnji Cooperusermod_bug_185666_head() { 42*458cbf0aSEnji Cooper atf_set "descr" "Regression test for the #185666 bug" 43*458cbf0aSEnji Cooper} 44*458cbf0aSEnji Cooper 45*458cbf0aSEnji Cooperusermod_bug_185666_body() { 46*458cbf0aSEnji Cooper populate_etc_skel 47*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} useradd testuser 48*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} groupadd testgroup 49*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} groupadd testgroup2 50*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup 51*458cbf0aSEnji Cooper atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser 52*458cbf0aSEnji Cooper atf_check -o inline:"testgroup:*:1002:testuser\n" -x ${PW} groupshow testgroup 53*458cbf0aSEnji Cooper atf_check -o inline:"testgroup2:*:1003:\n" -x ${PW} groupshow testgroup2 54*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} usermod testuser -G testgroup2 55*458cbf0aSEnji Cooper atf_check -o inline:"testuser:*:1001:\n" -x ${PW} groupshow testuser 56*458cbf0aSEnji Cooper atf_check -o inline:"testgroup:*:1002:\n" -x ${PW} groupshow testgroup 57*458cbf0aSEnji Cooper atf_check -o inline:"testgroup2:*:1003:testuser\n" -x ${PW} groupshow testgroup2 58*458cbf0aSEnji Cooper} 59*458cbf0aSEnji Cooper 60*458cbf0aSEnji Cooperatf_test_case do_not_duplicate_group_on_gid_change 61*458cbf0aSEnji Cooperdo_not_duplicate_group_on_gid_change_head() { 62*458cbf0aSEnji Cooper atf_set "descr" "Do not duplicate group on gid change" 63*458cbf0aSEnji Cooper} 64*458cbf0aSEnji Cooper 65*458cbf0aSEnji Cooperdo_not_duplicate_group_on_gid_change_body() { 66*458cbf0aSEnji Cooper populate_etc_skel 67*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} groupadd testgroup 68*458cbf0aSEnji Cooper atf_check -s exit:0 -x ${PW} groupmod testgroup -g 12345 69*458cbf0aSEnji Cooper # use grep to see if the entry has not be duplicated 70*458cbf0aSEnji Cooper atf_check -o inline:"testgroup:*:12345:\n" -s exit:0 -x grep "^testgroup" ${HOME}/group 71*458cbf0aSEnji Cooper} 72*458cbf0aSEnji Cooper 73*458cbf0aSEnji Cooperatf_test_case groupmod_rename 74*458cbf0aSEnji Coopergroupmod_rename_body() { 75*458cbf0aSEnji Cooper populate_etc_skel 76*458cbf0aSEnji Cooper 77*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupadd foo 78*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod foo -l bar 79*458cbf0aSEnji Cooper atf_check -s exit:0 -o match:"^bar:.*" \ 80*458cbf0aSEnji Cooper grep "^bar:.*" ${HOME}/group 81*458cbf0aSEnji Cooper} 82*458cbf0aSEnji Cooper 83*458cbf0aSEnji Cooperatf_test_case groupmod_members 84*458cbf0aSEnji Coopergroupmod_members_body() { 85*458cbf0aSEnji Cooper populate_etc_skel 86*458cbf0aSEnji Cooper 87*458cbf0aSEnji Cooper for i in user1 user2 user3 user4; do 88*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} useradd $i 89*458cbf0aSEnji Cooper done 90*458cbf0aSEnji Cooper 91*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupadd foo -M "user1, user2" 92*458cbf0aSEnji Cooper atf_check -o inline:"foo:*:1005:user1,user2\n" -s exit:0 \ 93*458cbf0aSEnji Cooper ${PW} groupshow foo 94*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod foo -m "user3, user4" 95*458cbf0aSEnji Cooper atf_check -o inline:"foo:*:1005:user1,user2,user3,user4\n" -s exit:0 \ 96*458cbf0aSEnji Cooper ${PW} groupshow foo 97*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod foo -M "user1, user4" 98*458cbf0aSEnji Cooper atf_check -o inline:"foo:*:1005:user1,user4\n" -s exit:0 \ 99*458cbf0aSEnji Cooper ${PW} groupshow foo 100*458cbf0aSEnji Cooper # what about duplicates 101*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod foo -m "user1, user2, user3, user4" 102*458cbf0aSEnji Cooper atf_check -o inline:"foo:*:1005:user1,user4,user2,user3\n" -s exit:0 \ 103*458cbf0aSEnji Cooper ${PW} groupshow foo 104*458cbf0aSEnji Cooper atf_check -s exit:0 ${PW} groupmod foo -d "user1, user3" 105*458cbf0aSEnji Cooper atf_check -o inline:"foo:*:1005:user4,user2\n" -s exit:0 \ 106*458cbf0aSEnji Cooper ${PW} groupshow foo 107*458cbf0aSEnji Cooper} 108*458cbf0aSEnji Cooper 109*458cbf0aSEnji Cooperatf_init_test_cases() { 110*458cbf0aSEnji Cooper atf_add_test_case groupmod_user 111*458cbf0aSEnji Cooper atf_add_test_case groupmod_invalid_user 112*458cbf0aSEnji Cooper atf_add_test_case groupmod_bug_193704 113*458cbf0aSEnji Cooper atf_add_test_case usermod_bug_185666 114*458cbf0aSEnji Cooper atf_add_test_case do_not_duplicate_group_on_gid_change 115*458cbf0aSEnji Cooper atf_add_test_case groupmod_rename 116*458cbf0aSEnji Cooper atf_add_test_case groupmod_members 117*458cbf0aSEnji Cooper} 118