#!/usr/bin/env bash set -euo pipefail APP_URL="${PHPSITE_URL:-http://127.0.0.1}" ADMIN_USER="${PHPSITE_ADMIN_USER:-admin}" ADMIN_PASS="${PHPSITE_ADMIN_PASS:-admin123}" COOKIE_JAR="$(mktemp)" LOGIN_HTML="$(mktemp)" APP_HTML="$(mktemp)" HEALTH_JSON="$(mktemp)" trap 'rm -f "$COOKIE_JAR" "$LOGIN_HTML" "$APP_HTML" "$HEALTH_JSON"' EXIT # Syntax check all PHP files for f in config.php sizes.php health.php index.php login.php logout.php send.php create.php requests.php cancel.php; do php -l "$f" >/dev/null done # Health curl -fsS "${APP_URL}/health.php" -o "$HEALTH_JSON" grep -q '"status": "ok"' "$HEALTH_JSON" grep -q '"database": "connected"' "$HEALTH_JSON" # Login page curl -fsS "${APP_URL}/login.php" -o "$LOGIN_HTML" grep -q 'Sign in' "$LOGIN_HTML" # Sign in curl -fsS -c "$COOKIE_JAR" -b "$COOKIE_JAR" \ -d "username=${ADMIN_USER}" \ -d "password=${ADMIN_PASS}" \ -o "$APP_HTML" \ -L "${APP_URL}/login.php" grep -q 'VM Shop' "$APP_HTML" # CSRF token (from shop page) CSRF_TOKEN="$(grep -oP 'name="csrf_token" value=\K[^"]+' "$APP_HTML" | head -n1)" if [[ -z "$CSRF_TOKEN" ]]; then echo "Missing CSRF token after login" >&2 exit 1 fi # Submit a VM request VM_NAME="e2e-$(date +%s%N)" curl -fsS -c "$COOKIE_JAR" -b "$COOKIE_JAR" \ -d "csrf_token=${CSRF_TOKEN}" \ -d "VM_Name=${VM_NAME}" \ -d "domain=domain1" \ -d "size=small" \ -o "$APP_HTML" \ -L "${APP_URL}/send.php" # Verify request shows up on My Requests page (sent.php redirects there) grep -q 'VM request cancelled\|created\|My VM Requests' "$APP_HTML" grep -q "$VM_NAME" "$APP_HTML" echo "E2E passed for ${APP_URL} with VM ${VM_NAME}"