AkurAI Build
Menu

Public repository / a2153fae6258fc7ad3dee8b9e7316314f1b8abda

AkurAI-EC2 / tests/test_deploy_receipt.sh

Latest change d8aa29121486f4b02d0016888d94fa66cac36ffe - Checkpoint WIP + rustfmt + AkurAI Build CI/CD pipeline by Ólafur Búi Ólafsson

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
mkdir -p "$TMP/bin" "$TMP/app"
printf '#!/bin/sh\n' > "$TMP/receipt"
printf 'asset\n' > "$TMP/app/index.html"
chmod 755 "$TMP/receipt"

cat > "$TMP/bin/ssh" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cat >/dev/null || true
cmd="${*: -1}"
case "$cmd" in
  *"[ -f /opt/receipt/bin/receipt ]"*) printf false ;;
  *"curl -s -o /dev/null -w '%{http_code}'"*) printf 200 ;;
esac
EOF
cat > "$TMP/bin/scp" <<'EOF'
#!/usr/bin/env bash
exit 0
EOF
chmod 755 "$TMP/bin/ssh" "$TMP/bin/scp"

PATH="$TMP/bin:$PATH" AKURAI_EC2_SSH=fake "$ROOT/bin/akurai-ec2" \
  deploy-binary receipt "$TMP/receipt" 8199 "$TMP/app" --json > "$TMP/out"
json="$(grep '^{' "$TMP/out" | tail -1)"
python3 - "$json" <<'PY'
import json, sys
receipt = json.loads(sys.argv[1])
assert receipt["app"] == "receipt"
assert receipt["port"] == 8199
assert receipt["binary_sha256"]
assert receipt["asset_tree_sha256"]
assert receipt["previous_binary_backed_up"] is False
assert receipt["systemd_state"] == "active"
assert receipt["loopback_http_status"] == 200
assert receipt["ok"] is True
PY
printf 'deployment receipt test: PASS\n'