mirror of
https://github.com/tw93/Mole.git
synced 2026-03-22 17:55:08 +00:00
fix: pass through sudo's native prompt instead of hardcoding 'Password:' (#599)
* pass through sudo prompt instead of hardcoding Password: * simplify: remove redundant retry loop, sudo handles retries internally * keep stty safety net and styled prefix * fix: clear clamshell sudo prompt lines correctly --------- Co-authored-by: Tw93 <hitw93@gmail.com>
This commit is contained in:
@@ -70,3 +70,59 @@ setup() {
|
||||
result=$(bash -c "source '$PROJECT_ROOT/lib/core/common.sh'; source '$PROJECT_ROOT/lib/core/sudo.sh'; echo \$MOLE_SUDO_ESTABLISHED")
|
||||
[[ "$result" == "false" ]] || [[ -z "$result" ]]
|
||||
}
|
||||
|
||||
@test "request_sudo_access clears four lines in clamshell mode when Touch ID hint is shown" {
|
||||
run bash -c '
|
||||
source "'"$PROJECT_ROOT"'/lib/core/common.sh"
|
||||
source "'"$PROJECT_ROOT"'/lib/core/sudo.sh"
|
||||
|
||||
tty_file="$(mktemp)"
|
||||
chmod 600 "$tty_file"
|
||||
|
||||
sudo() {
|
||||
case "$1" in
|
||||
-n) return 1 ;;
|
||||
-k) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
tty() { printf "%s\n" "$tty_file"; }
|
||||
is_clamshell_mode() { return 0; }
|
||||
check_touchid_support() { return 0; }
|
||||
_request_password() { return 0; }
|
||||
safe_clear_lines() { printf "CLEAR:%s\n" "$1"; }
|
||||
|
||||
request_sudo_access "Admin access required"
|
||||
'
|
||||
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"CLEAR:4"* ]]
|
||||
}
|
||||
|
||||
@test "request_sudo_access keeps three-line cleanup in clamshell mode without Touch ID" {
|
||||
run bash -c '
|
||||
source "'"$PROJECT_ROOT"'/lib/core/common.sh"
|
||||
source "'"$PROJECT_ROOT"'/lib/core/sudo.sh"
|
||||
|
||||
tty_file="$(mktemp)"
|
||||
chmod 600 "$tty_file"
|
||||
|
||||
sudo() {
|
||||
case "$1" in
|
||||
-n) return 1 ;;
|
||||
-k) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
tty() { printf "%s\n" "$tty_file"; }
|
||||
is_clamshell_mode() { return 0; }
|
||||
check_touchid_support() { return 1; }
|
||||
_request_password() { return 0; }
|
||||
safe_clear_lines() { printf "CLEAR:%s\n" "$1"; }
|
||||
|
||||
request_sudo_access "Admin access required"
|
||||
'
|
||||
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == *"CLEAR:3"* ]]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user