Files
brain/scripts/tests/setup-secrets-test.sh
T
2026-05-11 00:52:54 +03:00

56 lines
1.7 KiB
Bash

#!/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
{
"mcpServers": {
"magic": {
"args": ["API_KEY=<<MAGIC_API_KEY>>"]
}
}
}
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" <<EOF3
{
"args": ["API_KEY=<<MAGIC_API_KEY>>", "TOKEN=<<UNKNOWN_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=<<UNKNOWN_TOKEN>>" "$remaining" "skip-unresolved: leaves unknown placeholder"
# Test 3: list-unresolved shows placeholders without replacing
cat > "$tmpdir/config3.json" <<EOF4
{"k1": "<<A>>", "k2": "<<B>>", "k3": "<<A>>"}
EOF4
output=$(bash "$SCRIPT_DIR/lib/setup-secrets.sh" --list-unresolved "$tmpdir/config3.json" 2>&1)
case "$output" in
*"<<A>>"*"<<B>>"*) 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 "<<A>>" "$unchanged" "list-unresolved: file untouched"
rm -rf "$tmpdir"
echo "---"
echo "Failures: $FAILURES"
exit $FAILURES