TEST-35-LOGIN: fix bus path when the session does not have corresponding audit session

If there is no corresponding audit session, then the session ID is
prefixed with 'c', and in that case the session ID should be used as is
in bus path.
This commit is contained in:
Yu Watanabe
2025-12-07 09:09:03 +09:00
parent 4722619c4b
commit ae2ccf9d6e
+17 -7
View File
@@ -25,6 +25,17 @@ setup_test_user() {
trap cleanup_test_user EXIT
}
session_bus_path() {
local session
session=$(loginctl list-sessions --no-legend | grep -v manager | awk '$3 == "logind-test-user" { print $1 }')
if ! [[ "${session?}" =~ c[0-9]* ]]; then
# When numeric, bus path is prefixed with '_3'
session="_3${session}"
fi
echo "/org/freedesktop/login1/session/${session}"
}
test_write_dropin() {
systemctl edit --runtime --stdin systemd-logind.service --drop-in=debug.conf <<EOF
[Service]
@@ -557,12 +568,11 @@ testcase_session_properties() {
trap cleanup_session RETURN
create_session
s=$(loginctl list-sessions --no-legend | grep -v manager | awk '$3 == "logind-test-user" { print $1 }')
/usr/lib/systemd/tests/unit-tests/manual/test-session-properties "/org/freedesktop/login1/session/_3${s?}" /dev/tty2
/usr/lib/systemd/tests/unit-tests/manual/test-session-properties "$(session_bus_path)" /dev/tty2
}
testcase_list_users_sessions_seats() {
local session seat
local path seat
if [[ ! -c /dev/tty2 ]]; then
echo "/dev/tty2 does not exist, skipping test ${FUNCNAME[0]}."
@@ -575,11 +585,11 @@ testcase_list_users_sessions_seats() {
# Activate the session
loginctl activate "$(loginctl --no-legend | grep -v manager | awk '$3 == "logind-test-user" { print $1 }')"
session=$(loginctl list-sessions --no-legend | grep -v manager | awk '$3 == "logind-test-user" { print $1 }')
path=$(session_bus_path)
: check that we got a valid session id
busctl get-property org.freedesktop.login1 "/org/freedesktop/login1/session/_3${session?}" org.freedesktop.login1.Session Id
busctl get-property org.freedesktop.login1 "/org/freedesktop/login1/session/_3${session?}" org.freedesktop.login1.Session CanIdle
busctl get-property org.freedesktop.login1 "/org/freedesktop/login1/session/_3${session?}" org.freedesktop.login1.Session CanLock
busctl get-property org.freedesktop.login1 "$path" org.freedesktop.login1.Session Id
busctl get-property org.freedesktop.login1 "$path" org.freedesktop.login1.Session CanIdle
busctl get-property org.freedesktop.login1 "$path" org.freedesktop.login1.Session CanLock
assert_eq "$(loginctl list-sessions --no-legend | grep -v manager | awk '$3 == "logind-test-user" { print $2 }')" "$(id -ru logind-test-user)"
seat=$(loginctl list-sessions --no-legend | grep -v manager | awk '$3 == "logind-test-user" { print $4 }')
assert_eq "$(loginctl list-sessions --no-legend | grep -v manager | awk '$3 == "logind-test-user" { print $6 }')" user