#!/usr/bin/env bash
# Post-deployment smoke test
# Usage: ./scripts/smoke-test.sh [APP_URL]
# Default APP_URL: http://localhost

set -euo pipefail

APP_URL="${1:-http://localhost}"
APP_URL="${APP_URL%/}"  # strip trailing slash

PASS=0
FAIL=0

check() {
    local label="$1"
    local url="$2"
    local expected="${3:-200}"

    local actual
    actual=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$url")

    if [ "$actual" = "$expected" ]; then
        echo "  PASS  $label ($url) — HTTP $actual"
        PASS=$((PASS + 1))
    else
        echo "  FAIL  $label ($url) — expected HTTP $expected, got HTTP $actual"
        FAIL=$((FAIL + 1))
    fi
}

echo ""
echo "Smoke test: $APP_URL"
echo "=================================================="

check "Health check"   "$APP_URL/up"
check "Robots.txt"     "$APP_URL/robots.txt"
check "Sitemap"        "$APP_URL/sitemap.xml"
check "Homepage"       "$APP_URL/"
check "Login"          "$APP_URL/login"
check "Register"       "$APP_URL/register"
check "Pricing"        "$APP_URL/pricing"
check "Blog"           "$APP_URL/blog"
check "Features"       "$APP_URL/features"

echo "--------------------------------------------------"
echo "Results: $PASS passed, $FAIL failed"
echo ""

if [ "$FAIL" -gt 0 ]; then
    echo "SMOKE TEST FAILED"
    exit 1
fi

echo "SMOKE TEST PASSED"
exit 0
