#!/usr/bin/env bash set -u SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)" source "$SCRIPT_DIR/lib/common.sh" FAILURES=0 assert_eq() { if [ "$1" = "$2" ]; then echo "PASS: $3"; else echo "FAIL: $3 (expected '$1', got '$2')"; FAILURES=$((FAILURES + 1)); fi } # Test 1: --secret=KEY=VALUE replaces placeholder tmpdir=$(mktemp -d) cat > "$tmpdir/config.json" <>"] } } } EOF2 bash "$SCRIPT_DIR/lib/setup-secrets.sh" --secret=MAGIC_API_KEY=resolved_value "$tmpdir/config.json" result=$(jq -r '.mcpServers.magic.args[0]' "$tmpdir/config.json") assert_eq "API_KEY=resolved_value" "$result" "non-interactive: placeholder replaced" # Test 2: --skip-unresolved leaves placeholder + creates deferred file cat > "$tmpdir/config2.json" <>", "TOKEN=<>"] } EOF3 bash "$SCRIPT_DIR/lib/setup-secrets.sh" --skip-unresolved --secret=MAGIC_API_KEY=val "$tmpdir/config2.json" remaining=$(jq -r '.args[1]' "$tmpdir/config2.json") assert_eq "TOKEN=<>" "$remaining" "skip-unresolved: leaves unknown placeholder" # Test 3: list-unresolved shows placeholders without replacing cat > "$tmpdir/config3.json" <>", "k2": "<>", "k3": "<>"} EOF4 output=$(bash "$SCRIPT_DIR/lib/setup-secrets.sh" --list-unresolved "$tmpdir/config3.json" 2>&1) case "$output" in *"<>"*"<>"*) assert_eq "ok" "ok" "list-unresolved finds both" ;; *) assert_eq "ok" "fail" "list-unresolved finds both" ;; esac # Verify file untouched unchanged=$(jq -r '.k1' "$tmpdir/config3.json") assert_eq "<>" "$unchanged" "list-unresolved: file untouched" rm -rf "$tmpdir" echo "---" echo "Failures: $FAILURES" exit $FAILURES