aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcgoesche <cgoesc2@wgu.edu>2025-11-02 12:54:02 -0500
committercgoesche <cgoesc2@wgu.edu>2025-11-03 16:16:08 -0500
commit28e91d087ed1b9e3851bb16b129a1acda9253986 (patch)
tree911505918d3cb4ad96cf9032915087686c0d12bc
parentac0147fd14b348097c82c1c89a5417b582e26bad (diff)
downloadutil-linux-28e91d087ed1b9e3851bb16b129a1acda9253986.tar.gz
tests: (su) add more options tests
Signed-off-by: cgoesche <cgoesc2@wgu.edu>
-rw-r--r--tests/expected/su/group-primary-login1
-rw-r--r--tests/expected/su/group-primary-no-login1
-rw-r--r--tests/expected/su/group-supplemental-login1
-rw-r--r--tests/expected/su/group-supplemental-no-login1
-rw-r--r--tests/expected/su/shell-additional-args1
-rw-r--r--tests/expected/su/shell-command-option1
-rwxr-xr-xtests/ts/su/group78
-rwxr-xr-xtests/ts/su/shell35
8 files changed, 119 insertions, 0 deletions
diff --git a/tests/expected/su/group-primary-login b/tests/expected/su/group-primary-login
new file mode 100644
index 0000000000..b4b6910249
--- /dev/null
+++ b/tests/expected/su/group-primary-login
@@ -0,0 +1 @@
+ts_grp
diff --git a/tests/expected/su/group-primary-no-login b/tests/expected/su/group-primary-no-login
new file mode 100644
index 0000000000..b4b6910249
--- /dev/null
+++ b/tests/expected/su/group-primary-no-login
@@ -0,0 +1 @@
+ts_grp
diff --git a/tests/expected/su/group-supplemental-login b/tests/expected/su/group-supplemental-login
new file mode 100644
index 0000000000..b4b6910249
--- /dev/null
+++ b/tests/expected/su/group-supplemental-login
@@ -0,0 +1 @@
+ts_grp
diff --git a/tests/expected/su/group-supplemental-no-login b/tests/expected/su/group-supplemental-no-login
new file mode 100644
index 0000000000..b4b6910249
--- /dev/null
+++ b/tests/expected/su/group-supplemental-no-login
@@ -0,0 +1 @@
+ts_grp
diff --git a/tests/expected/su/shell-additional-args b/tests/expected/su/shell-additional-args
new file mode 100644
index 0000000000..01dca2d74b
--- /dev/null
+++ b/tests/expected/su/shell-additional-args
@@ -0,0 +1 @@
+/bin/bash
diff --git a/tests/expected/su/shell-command-option b/tests/expected/su/shell-command-option
new file mode 100644
index 0000000000..01dca2d74b
--- /dev/null
+++ b/tests/expected/su/shell-command-option
@@ -0,0 +1 @@
+/bin/bash
diff --git a/tests/ts/su/group b/tests/ts/su/group
new file mode 100755
index 0000000000..9bb4b14f0a
--- /dev/null
+++ b/tests/ts/su/group
@@ -0,0 +1,78 @@
+#!/bin/bash
+
+# This file is part of util-linux.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# Copyright (C) 2025 Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
+
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="group"
+
+. "$TS_TOPDIR/functions.sh"
+ts_init "$*"
+
+ts_skip_nonroot
+ts_check_test_command "$TS_CMD_SU"
+ts_check_prog "groupadd"
+ts_check_prog "groupdel"
+ts_check_prog "getent"
+
+TS_CMD_ID="id"
+
+username="$(whoami)"
+grp_name="ts_grp"
+
+if ! groupadd --force "$grp_name"; then
+ ts_skip "could not create group '$grp_name'"
+fi
+
+# Since here '-c' comes after <user> it'll be passed to the actual shell
+# instead of being interpreted by su(1).
+ts_init_subtest "primary-no-login"
+
+"$TS_CMD_SU" --group "$grp_name" "$username" \
+ -c "$TS_CMD_ID --groups --name" 2>> "$TS_ERRLOG" \
+ | grep -o "$grp_name" \
+ | uniq >> "$TS_OUTPUT"
+
+ts_finalize_subtest
+
+ts_init_subtest "primary-login"
+"$TS_CMD_SU" --group "$grp_name" - "$username" \
+ -c "$TS_CMD_ID --groups --name" 2>> "$TS_ERRLOG" \
+ | grep -o "$grp_name" \
+ | uniq >> "$TS_OUTPUT"
+
+grep -q 'Authentication failure' "$TS_ERRLOG"
+[ "$?" -eq 0 ] && ts_skip_subtest "authentication failure"
+ts_finalize_subtest
+
+ts_init_subtest "supplemental-no-login"
+"$TS_CMD_SU" --supp-group "$grp_name" "$username" \
+ -c "$TS_CMD_ID --groups --name" 2>> "$TS_ERRLOG" \
+ | grep -o "$grp_name" \
+ | uniq >> "$TS_OUTPUT"
+ts_finalize_subtest
+
+ts_init_subtest "supplemental-login"
+"$TS_CMD_SU" --supp-group "$grp_name" - "$username" \
+ -c "$TS_CMD_ID --groups --name" 2>> "$TS_ERRLOG" \
+ | grep -o "$grp_name" \
+ | uniq >> "$TS_OUTPUT"
+
+grep -q 'Authentication failure' "$TS_ERRLOG"
+[ "$?" -eq 0 ] && ts_skip_subtest "authentication failure"
+ts_finalize_subtest
+
+groupdel "$grp_name"
+
+ts_finalize \ No newline at end of file
diff --git a/tests/ts/su/shell b/tests/ts/su/shell
new file mode 100755
index 0000000000..dc77b0b4fb
--- /dev/null
+++ b/tests/ts/su/shell
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# This file is part of util-linux.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# Copyright (C) 2025 Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
+
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="shell"
+
+. "$TS_TOPDIR/functions.sh"
+ts_init "$*"
+
+ts_skip_nonroot
+
+username="$(whoami)"
+
+ts_init_subtest "command-option"
+"$TS_CMD_SU" --shell "/bin/bash" --command "echo \$SHELL" "$username" >> "$TS_OUTPUT" 2>> "$TS_ERRLOG"
+ts_finalize_subtest
+
+ts_init_subtest "additional-args"
+"$TS_CMD_SU" --shell "/bin/bash" "$username" -c "echo \$SHELL" >> "$TS_OUTPUT" 2>> "$TS_ERRLOG"
+ts_finalize_subtest
+
+ts_finalize \ No newline at end of file