#!/bin/bash set -euo pipefail source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh" timezone_menu="$ROOT/bin/omarchy-menu-timezone" sudoers_file="$ROOT/etc/sudoers.d/omarchy-tzupdate" grep -F '%wheel ALL=(root) NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl set-timezone *' "$sudoers_file" >/dev/null || fail "timezone sudoers rule allows passwordless timedatectl timezone changes" grep -F 'sudo timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || fail "timezone menu uses the passwordless sudoers timedatectl rule" ! grep -F 'pkexec timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || fail "timezone menu does not wrap timedatectl in pkexec" ! grep -F 'pkexec /usr/bin/timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || fail "timezone menu does not wrap timedatectl in pkexec" ! grep -F 'sudo /usr/bin/timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || fail "timezone menu lets sudo resolve timedatectl from its secure path" ! grep -Fx 'timedatectl set-timezone "$timezone"' "$timezone_menu" >/dev/null || fail "timezone menu does not use bare timedatectl, which triggers polkit" grep -F 'omarchy-shell -q omarchy.clock refresh' "$timezone_menu" >/dev/null || fail "timezone menu refreshes the namespaced clock IPC target" ! grep -F 'omarchy-shell -q Clock refresh' "$timezone_menu" >/dev/null || fail "timezone menu no longer refreshes the retired Clock IPC target" pass "timezone menu refreshes clock after timezone changes"