diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/bin/adduser | 92 | ||||
-rwxr-xr-x | tests/fake_adduser_test | 21 |
2 files changed, 113 insertions, 0 deletions
diff --git a/tests/bin/adduser b/tests/bin/adduser new file mode 100755 index 0000000..72defc4 --- /dev/null +++ b/tests/bin/adduser @@ -0,0 +1,92 @@ +#!/bin/sh + +prog=${0##*/} +usage() { + cat <<EOF +BusyBox v1.35.0 (2022-06-21 14:15:10 UTC) multi-call binary. + +Usage: adduser [OPTIONS] USER [GROUP] + +Create new user, or add USER to GROUP + + -h DIR Home directory + -g GECOS GECOS field + -s SHELL Login shell + -G GRP Group + -S Create a system user + -D Don't assign a password + -H Don't create home directory + -u UID User id + -k SKEL Skeleton directory (/etc/skel) +EOF +} + +OPTS=$(getopt -l help -o "h:g:s:G:SDHu:k:" -n $prog -- "$@") || { + usage >&2 + exit 1 +} + +eval set -- "$OPTS" +while true; do + opt="$1" + case "$opt" in + --help) + usage >&2 + exit 0 + ;; + -h) + shift + homedir="$1" + ;; + -g) + shift + gecos="$1" + ;; + -s) + shift + shell="$1" + ;; + -G) + shift + shell="$1" + ;; + -S) + systemuser=1 + ;; + -D) + omitpassword=1 + ;; + -H) + omithomedir=1 + ;; + -u) + shift + uid="$1" + ;; + -k) + shift + skel="$1" + ;; + --) + shift + break + ;; + *) usage "1" >&2 + ;; + esac + shift +done + +if [ $# -eq 0 ]; then + usage >&2 + exit 1 +fi + +if [ "$ADDUSER_EXIST" = "$1" ]; then + echo "adduser: user '$1' in use" >&2 + exit 1 +fi + +eval set -- "$OPTS" +echo "adduser $@" + diff --git a/tests/fake_adduser_test b/tests/fake_adduser_test new file mode 100755 index 0000000..fe13690 --- /dev/null +++ b/tests/fake_adduser_test @@ -0,0 +1,21 @@ +#!/usr/bin/env atf-sh + +. $(atf_get_srcdir)/test_env.sh +init_tests \ + fake_adduser_usage \ + fake_adduser_failure + +fake_adduser_usage_body() { + init_env + atf_check -s exit:0 \ + -e match:"Usage: adduser" \ + adduser --help +} + +fake_adduser_failure_body() { + init_env + ADDUSER_EXIST=juser atf_check -s exit:1 \ + -e match:"adduser: user 'juser' in use" \ + adduser juser +} + |