aboutsummaryrefslogtreecommitdiff
path: root/scripts/tests
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/tests')
-rw-r--r--scripts/tests/agent-page.bats68
1 files changed, 68 insertions, 0 deletions
diff --git a/scripts/tests/agent-page.bats b/scripts/tests/agent-page.bats
new file mode 100644
index 0000000..071e4b9
--- /dev/null
+++ b/scripts/tests/agent-page.bats
@@ -0,0 +1,68 @@
+#!/usr/bin/env bats
+# agent-page — the runtime-neutral phone pager. Pages Craig over Signal from
+# any machine on the tailnet: runs signal-cli directly on velox (where the
+# pager identity lives), ssh-relays to velox from everywhere else. These tests
+# stub ssh/uname/signal-cli on PATH to verify command construction without a
+# network or a phone.
+
+setup() {
+ REPO_ROOT="$(cd "$(dirname "$BATS_TEST_FILENAME")/../.." && pwd)"
+ PAGE="$REPO_ROOT/claude-templates/bin/agent-page"
+ STUBS="$(mktemp -d)"
+ LOG="$STUBS/calls.log"
+ cat > "$STUBS/ssh" <<EOF
+#!/bin/bash
+echo "ssh \$*" >> "$LOG"
+exit 0
+EOF
+ cat > "$STUBS/signal-cli" <<EOF
+#!/bin/bash
+echo "signal-cli \$*" >> "$LOG"
+exit 0
+EOF
+ chmod +x "$STUBS/ssh" "$STUBS/signal-cli"
+}
+
+teardown() {
+ rm -rf "$STUBS"
+}
+
+@test "no message exits 2 with usage" {
+ run bash "$PAGE"
+ [ "$status" -eq 2 ]
+ [[ "$output" == *"usage"* ]]
+}
+
+@test "relays through ssh to velox with the pager account and Craig's UUID" {
+ PATH="$STUBS:$PATH" run bash "$PAGE" build finished
+ [ "$status" -eq 0 ]
+ grep -q "^ssh .*velox" "$LOG"
+ grep -q "15045173983" "$LOG"
+ grep -q "b1b5601e-6126-47f8-afaa-0a59f5188fde" "$LOG"
+ # printf %q escapes the space, so the relayed message reads build\ finished.
+ grep -qF 'build\ finished' "$LOG"
+}
+
+@test "on velox itself, calls signal-cli directly (no ssh)" {
+ cat > "$STUBS/uname" <<'EOF'
+#!/bin/bash
+[ "$1" = "-n" ] && { echo velox; exit 0; }
+exec /usr/bin/uname "$@"
+EOF
+ chmod +x "$STUBS/uname"
+ PATH="$STUBS:$PATH" run bash "$PAGE" hello
+ [ "$status" -eq 0 ]
+ grep -q "^signal-cli " "$LOG"
+ ! grep -q "^ssh " "$LOG"
+}
+
+@test "a failed relay reports the desktop fallback and propagates failure" {
+ cat > "$STUBS/ssh" <<'EOF'
+#!/bin/bash
+exit 255
+EOF
+ chmod +x "$STUBS/ssh"
+ PATH="$STUBS:$PATH" run bash "$PAGE" urgent thing
+ [ "$status" -ne 0 ]
+ [[ "$output" == *"notify"* ]]
+}