#!/usr/bin/env bash set -Eeuo pipefail API_URL="${API_URL:-http://127.0.0.1:9020}" API_KEY="${API_KEY:-admin-local-dev-key}" SCHEME_ID="${SCHEME_ID:-82086336d385427f9d56244f9e1dd772}" WORKDIR="$(mktemp -d)" trap 'rm -rf "$WORKDIR"' EXIT HDR_AUTH=(-H "X-API-Key: ${API_KEY}") HDR_JSON=(-H "Content-Type: application/json") step() { echo echo "===== $1 =====" } fail() { echo echo "[FAIL] $1" >&2 exit 1 } request() { local name="$1" local method="$2" local url="$3" local expected="$4" local body="${5:-}" local outfile="${WORKDIR}/${name}.body" local codefile="${WORKDIR}/${name}.code" if [[ -n "$body" ]]; then curl -sS \ -X "$method" \ "${HDR_AUTH[@]}" \ "${HDR_JSON[@]}" \ -o "$outfile" \ -w "%{http_code}" \ "$url" \ --data "$body" > "$codefile" else curl -sS \ -X "$method" \ "${HDR_AUTH[@]}" \ -o "$outfile" \ -w "%{http_code}" \ "$url" > "$codefile" fi local code code="$(cat "$codefile")" echo "[$method] $url -> $code" cat "$outfile" echo if [[ "$code" != "$expected" ]]; then fail "Unexpected HTTP status for ${name}: expected ${expected}, got ${code}" fi } json_get() { local file="$1" local expr="$2" python3 - <