56 lines
1.7 KiB
Bash
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
|