diff options
Diffstat (limited to 'pw/tests')
-rw-r--r-- | pw/tests/Makefile | 10 | ||||
-rw-r--r-- | pw/tests/group | 3 | ||||
-rwxr-xr-x | pw/tests/helper_functions.shin | 15 | ||||
-rw-r--r-- | pw/tests/master.passwd | 4 | ||||
-rwxr-xr-x | pw/tests/pw_delete.sh | 24 |
5 files changed, 56 insertions, 0 deletions
diff --git a/pw/tests/Makefile b/pw/tests/Makefile new file mode 100644 index 0000000..577ea93 --- /dev/null +++ b/pw/tests/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +TESTSDIR= ${TESTSBASE}/usr.sbin/pw + +ATF_TESTS_SH= pw_delete + +FILES= group helper_functions.shin master.passwd +FILESDIR= ${TESTSDIR} + +.include <bsd.test.mk> diff --git a/pw/tests/group b/pw/tests/group new file mode 100644 index 0000000..620c588 --- /dev/null +++ b/pw/tests/group @@ -0,0 +1,3 @@ +# $FreeBSD$ +# +wheel:*:0:root diff --git a/pw/tests/helper_functions.shin b/pw/tests/helper_functions.shin new file mode 100755 index 0000000..f87b1e7 --- /dev/null +++ b/pw/tests/helper_functions.shin @@ -0,0 +1,15 @@ +# $FreeBSD$ + +# Workdir to run tests in +TESTDIR=$(atf_get_srcdir) + +# Populate the files pw needs to use into $HOME/etc +populate_etc_skel() { + cp ${TESTDIR}/master.passwd ${HOME} || \ + atf_fail "Populating master.passwd in ${HOME}" + cp ${TESTDIR}/group ${HOME} || atf_fail "Populating group in ${HOME}" + + # Generate the passwd file + pwd_mkdb -p -d ${HOME} ${HOME}/master.passwd || \ + atf_fail "generate passwd from master.passwd" +} diff --git a/pw/tests/master.passwd b/pw/tests/master.passwd new file mode 100644 index 0000000..f7dc837 --- /dev/null +++ b/pw/tests/master.passwd @@ -0,0 +1,4 @@ +# $FreeBSD$ +# +root:*:0:0::0:0:Charlie &:/root:/bin/csh +toor:*:0:0::0:0:Bourne-again Superuser:/root: diff --git a/pw/tests/pw_delete.sh b/pw/tests/pw_delete.sh new file mode 100755 index 0000000..0636629 --- /dev/null +++ b/pw/tests/pw_delete.sh @@ -0,0 +1,24 @@ +# $FreeBSD$ + +# Import helper functions +. $(atf_get_srcdir)/helper_functions.shin + +# Test that a user can be deleted when another user is part of this +# user's default group and does not go into an infinate loop. +# PR: 191427 +atf_test_case rmuser_seperate_group cleanup +rmuser_seperate_group_head() { + atf_set "timeout" "30" +} +rmuser_seperate_group_body() { + populate_etc_skel + pw -V ${HOME} useradd test || atf_fail "Creating test user" + pw -V ${HOME} groupmod test -M 'test,root' || \ + atf_fail "Modifying the group" + pw -V ${HOME} userdel test || atf_fail "delete the user" +} + + +atf_init_test_cases() { + atf_add_test_case rmuser_seperate_group +} |