]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: (su) add more options tests
authorcgoesche <cgoesc2@wgu.edu>
Sun, 2 Nov 2025 17:54:02 +0000 (12:54 -0500)
committercgoesche <cgoesc2@wgu.edu>
Mon, 3 Nov 2025 21:16:08 +0000 (16:16 -0500)
Signed-off-by: cgoesche <cgoesc2@wgu.edu>
tests/expected/su/group-primary-login [new file with mode: 0644]
tests/expected/su/group-primary-no-login [new file with mode: 0644]
tests/expected/su/group-supplemental-login [new file with mode: 0644]
tests/expected/su/group-supplemental-no-login [new file with mode: 0644]
tests/expected/su/shell-additional-args [new file with mode: 0644]
tests/expected/su/shell-command-option [new file with mode: 0644]
tests/ts/su/group [new file with mode: 0755]
tests/ts/su/shell [new file with mode: 0755]

diff --git a/tests/expected/su/group-primary-login b/tests/expected/su/group-primary-login
new file mode 100644 (file)
index 0000000..b4b6910
--- /dev/null
@@ -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 (file)
index 0000000..b4b6910
--- /dev/null
@@ -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 (file)
index 0000000..b4b6910
--- /dev/null
@@ -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 (file)
index 0000000..b4b6910
--- /dev/null
@@ -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 (file)
index 0000000..01dca2d
--- /dev/null
@@ -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 (file)
index 0000000..01dca2d
--- /dev/null
@@ -0,0 +1 @@
+/bin/bash
diff --git a/tests/ts/su/group b/tests/ts/su/group
new file mode 100755 (executable)
index 0000000..9bb4b14
--- /dev/null
@@ -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 (executable)
index 0000000..dc77b0b
--- /dev/null
@@ -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