#!/usr/bin/env bash
# Détecte une duplication de l'en-tête ou de la navigation dans le HTML rendu.
#
# Le nombre de boutons « Prendre rendez-vous » n'est PAS un indicateur : les
# pages intérieures en ont légitimement un second en bas de page. On compte
# donc les éléments structurels, qui doivent être uniques par page.
B="http://localhost:8080"

compte() {
    local url="$1" motif="$2" libelle="$3"
    local n
    n=$(curl -s "$B$url" | grep -c "$motif")
    if [ "$n" -eq 1 ]; then
        printf '  OK        %-26s %-18s %s\n' "$url" "$libelle" "$n"
    else
        printf '  ANOMALIE  %-26s %-18s %s (attendu 1)\n' "$url" "$libelle" "$n"
    fi
}

echo "── Site public ──"
for u in / /qui-suis-je /approche /cabinet /visio /ateliers /faq /contact \
         /mentions-legales /politique-confidentialite; do
    compte "$u" '<header' 'en-tête'
    compte "$u" '<nav class="nav-desktop"' 'nav bureau'
    compte "$u" 'data-menu-open' 'bouton burger'
    compte "$u" 'data-mg-menu' 'panneau rideau'
done

echo
echo "── Back-office (authentifié) ──"
J=$(mktemp)
token=$(curl -s -c "$J" "$B/admin/connexion" | grep -oE 'name="_csrf_token" value="[^"]+' | sed 's/.*value="//')
curl -s -b "$J" -c "$J" -o /dev/null \
    -d "email=admin@salam-gp.com" -d "password=Admin1234!" -d "_csrf_token=$token" \
    "$B/admin/connexion"

for u in /admin/dashboard /admin/pages /admin/messages; do
    page=$(mktemp)
    curl -s -b "$J" -o "$page" "$B$u"
    nav=$(grep -c '<aside class="bo__aside"' "$page")
    actif=$(grep -c 'bo-nav__link is-active' "$page")
    # Texte parasite : ce qui suit </html>, hors barre de debug Symfony.
    apres=$(sed 's/.*<\/html>//' "$page" | tr -d '[:space:]' | head -c 40)
    printf '  %-22s sidebar=%s  rubrique active=%s  après </html>="%s"\n' \
        "$u" "$nav" "$actif" "$apres"
    rm -f "$page"
done
rm -f "$J"
