#!/usr/bin/env bash
# Checks the legacy-URL redirects in public/.htaccess against a running site.
# Apache rules can't be covered by Pest, so this is their test: run it after a
# deploy that touches .htaccess. Exits non-zero if any URL misbehaves.
#
#   scripts/check-legacy-redirects.sh                      # production
#   scripts/check-legacy-redirects.sh https://staging.example.com
set -u

BASE="${1:-https://www.patiospoolsanddriveways.com}"
BASE="${BASE%/}"

# "<legacy path> <expected status> <expected Location path, or - for none>"
CASES=(
  "/about-us 301 /about"
  "/about/2794120 301 /about"
  "/contact/2563355 301 /contact"
  "/home/2563348 301 /"
  "/services/ 301 /"
  "/services/2563349 301 /"
  "/blog/2794222 301 /"
  "/testimonials/2563350 301 /"
  "/thank-you 301 /"
  "/gallery/2563352 301 /gallery"
  "/projects/ 301 /gallery"
  "/pool-renovation/ 301 /pool-renovation-palm-beach-broward"
  "/pool-renovation-services 301 /pool-renovation-palm-beach-broward"
  "/pool-resurfacing/2794163 301 /pool-resurfacing-palm-beach-broward"
  "/pool-resurfing/2794163 301 /pool-resurfacing-palm-beach-broward"
  "/pool-accents/2794187 301 /pool-sunshelf-water-features-palm-beach-broward"
  "/pavers/ 301 /paver-driveways-palm-beach-broward"
  "/pavers/2794149 301 /paver-driveways-palm-beach-broward"
  "/paver-installation-services 301 /paver-driveways-palm-beach-broward"
  "/travertine/ 301 /paver-pool-decks-palm-beach-broward"
  "/travertine-installation-services 301 /paver-pool-decks-palm-beach-broward"
  "/decorative-concrete/ 301 /concrete-overlay-patios-walkways-palm-beach-broward"
  "/decorative-concrete/2794128 301 /concrete-overlay-patios-walkways-palm-beach-broward"
  "/decorative-concrete-services 301 /concrete-overlay-patios-walkways-palm-beach-broward"
  "/copy-of-decorative-concrete-services 301 /concrete-overlay-patios-walkways-palm-beach-broward"
  "/screen-enclosures/ 410 -"
  "/screen-enclosures/2794198 410 -"
  "/copy-of-screen-enclosure-installation 410 -"
  "/outdoor-kitchens/ 410 -"
  # Current URLs that the legacy patterns must NOT catch.
  "/pool-renovation-boca-raton 200 -"
  "/gallery/pools 200 -"
  "/about 200 -"
)

fail=0
for case in "${CASES[@]}"; do
  read -r path want_code want_loc <<<"$case"
  read -r code loc < <(curl -s -o /dev/null -w '%{http_code} %{redirect_url}' "$BASE$path")
  loc="${loc#"$BASE"}"
  [ -z "$loc" ] && loc="-"

  if [ "$code" = "$want_code" ] && [ "$loc" = "$want_loc" ]; then
    echo "ok    $path -> $code $loc"
  else
    echo "FAIL  $path -> $code $loc (expected $want_code $want_loc)"
    fail=1
  fi
done

exit $fail
