From 45b91d4c987d3573dc50ea7e59c241fbeeaade0b Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Thu, 26 Mar 2026 15:20:27 +0100 Subject: [PATCH] refactor: update French comments and variable names in test-endpoints script for consistency --- scripts/test-endpoints.sh | 228 +++++++++++++++++++------------------- 1 file changed, 117 insertions(+), 111 deletions(-) diff --git a/scripts/test-endpoints.sh b/scripts/test-endpoints.sh index a768ecd..146cfcb 100644 --- a/scripts/test-endpoints.sh +++ b/scripts/test-endpoints.sh @@ -1,13 +1,13 @@ #!/usr/bin/env bash # ============================================================================= # test-endpoints.sh -# Tests all Webzine endpoints and reports which ones exceed the threshold. +# Teste tous les endpoints du Webzine et signale ceux qui dépassent le seuil. # -# Usage: -# ./scripts/test-endpoints.sh [BASE_URL] [MAX_MS] +# Usage : +# ./scripts/test-endpoints.sh [URL_BASE] [MAX_MS] # -# Examples: -# ./scripts/test-endpoints.sh # defaults: localhost:5038, 1000ms +# Exemples : +# ./scripts/test-endpoints.sh # défauts : localhost:5038, 1000ms # ./scripts/test-endpoints.sh http://localhost:5038 500 # ============================================================================= @@ -15,207 +15,213 @@ set -euo pipefail BASE_URL="${1:-http://localhost:5038}" MAX_MS="${2:-1000}" -REPORT_FILE="/tmp/webzine_endpoint_report.txt" -FAILED=0 +RAPPORT_FICHIER="/tmp/webzine_rapport_endpoints.txt" +ECHECS=0 TOTAL=0 -# ── Colours ────────────────────────────────────────────────────────────────── -RED='\033[0;31m' -YELLOW='\033[1;33m' -GREEN='\033[0;32m' +# ── Couleurs ────────────────────────────────────────────────────────────────── +ROUGE='\033[0;31m' +JAUNE='\033[1;33m' +VERT='\033[0;32m' CYAN='\033[0;36m' -BOLD='\033[1m' +GRAS='\033[1m' RESET='\033[0m' -# ── Helpers ────────────────────────────────────────────────────────────────── -log() { echo -e "$*"; } -pass() { log "${GREEN}[PASS]${RESET} $*"; } -fail() { log "${RED}[FAIL]${RESET} $*"; FAILED=$((FAILED + 1)); } -slow() { log "${YELLOW}[SLOW]${RESET} $*"; FAILED=$((FAILED + 1)); } -info() { log "${CYAN}$*${RESET}"; } +# ── Fonctions utilitaires ────────────────────────────────────────────────────── +log() { echo -e "$*"; } +succes() { log "${VERT}[OK]${RESET} $*"; } +echec() { log "${ROUGE}[ÉCHEC]${RESET} $*"; ECHECS=$((ECHECS + 1)); } +lent() { log "${JAUNE}[LENT]${RESET} $*"; ECHECS=$((ECHECS + 1)); } +info() { log "${CYAN}$*${RESET}"; } -# ── check_endpoint ──────────────────────────────────────────────────────────── -# Arguments: -# $1 HTTP method (GET | POST) -# $2 URL (absolute) -# $3 Label (human-readable) -# $4 Body data (optional, for POST) -# $5 Content-Type (optional, default: application/x-www-form-urlencoded) +# ── verifier_endpoint ───────────────────────────────────────────────────────── +# Arguments : +# $1 Méthode HTTP (GET | POST) +# $2 URL (absolue) +# $3 Libellé (texte lisible) +# $4 Corps (optionnel, pour POST) +# $5 Content-Type (optionnel, défaut : application/x-www-form-urlencoded) # ───────────────────────────────────────────────────────────────────────────── -check_endpoint() { - local METHOD="${1:-GET}" +verifier_endpoint() { + local METHODE="${1:-GET}" local URL="$2" - local LABEL="$3" - local BODY="${4:-}" - local CONTENT_TYPE="${5:-application/x-www-form-urlencoded}" + local LIBELLE="$3" + local CORPS="${4:-}" + local TYPE_CONTENU="${5:-application/x-www-form-urlencoded}" TOTAL=$((TOTAL + 1)) - if [ "$METHOD" = "POST" ] && [ -n "$BODY" ]; then - RESPONSE=$(curl -s -o /dev/null \ + # Exécution de la requête selon la méthode HTTP + if [ "$METHODE" = "POST" ] && [ -n "$CORPS" ]; then + REPONSE=$(curl -s -o /dev/null \ -w "%{http_code}|%{time_total}" \ -X POST \ - -H "Content-Type: $CONTENT_TYPE" \ - -d "$BODY" \ + -H "Content-Type: $TYPE_CONTENU" \ + -d "$CORPS" \ --max-time 10 \ - "$URL" 2>&1) || RESPONSE="000|9.999" + "$URL" 2>&1) || REPONSE="000|9.999" else - RESPONSE=$(curl -s -o /dev/null \ + REPONSE=$(curl -s -o /dev/null \ -w "%{http_code}|%{time_total}" \ -X GET \ --max-time 10 \ --location \ - "$URL" 2>&1) || RESPONSE="000|9.999" + "$URL" 2>&1) || REPONSE="000|9.999" fi - HTTP_CODE=$(echo "$RESPONSE" | cut -d'|' -f1) - TIME_TOTAL=$(echo "$RESPONSE" | cut -d'|' -f2) + # Extraction du code HTTP et du temps de réponse + CODE_HTTP=$(echo "$REPONSE" | cut -d'|' -f1) + TEMPS_TOTAL=$(echo "$REPONSE" | cut -d'|' -f2) - # Convert to integer milliseconds — awk is locale-safe, no bc/printf decimal issues - TIME_MS=$(awk "BEGIN {printf \"%.0f\", $TIME_TOTAL * 1000}") + # Conversion en millisecondes entières — awk évite les problèmes de locale décimale + TEMPS_MS=$(awk "BEGIN {printf \"%.0f\", $TEMPS_TOTAL * 1000}") - # Evaluate result - if [ "${HTTP_CODE:-0}" -ge 500 ] 2>/dev/null; then - slow "$LABEL → HTTP $HTTP_CODE (${TIME_MS}ms)" - echo "[FAIL] $LABEL → HTTP $HTTP_CODE (${TIME_MS}ms)" >> "$REPORT_FILE" - elif [ "${TIME_MS:-99999}" -gt "$MAX_MS" ] 2>/dev/null; then - slow "$LABEL → ${TIME_MS}ms exceeds ${MAX_MS}ms threshold" - echo "[SLOW] $LABEL → ${TIME_MS}ms (limit: ${MAX_MS}ms)" >> "$REPORT_FILE" + # Évaluation du résultat : erreur serveur, dépassement de seuil ou succès + if [ "${CODE_HTTP:-0}" -ge 500 ] 2>/dev/null; then + echec "$LIBELLE → HTTP $CODE_HTTP (${TEMPS_MS}ms)" + echo "[ÉCHEC] $LIBELLE → HTTP $CODE_HTTP (${TEMPS_MS}ms)" >> "$RAPPORT_FICHIER" + elif [ "${TEMPS_MS:-99999}" -gt "$MAX_MS" ] 2>/dev/null; then + lent "$LIBELLE → ${TEMPS_MS}ms dépasse le seuil de ${MAX_MS}ms" + echo "[LENT] $LIBELLE → ${TEMPS_MS}ms (limite : ${MAX_MS}ms)" >> "$RAPPORT_FICHIER" else - pass "$LABEL → ${TIME_MS}ms" - echo "[OK] $LABEL → ${TIME_MS}ms" >> "$REPORT_FILE" + succes "$LIBELLE → ${TEMPS_MS}ms" + echo "[OK] $LIBELLE → ${TEMPS_MS}ms" >> "$RAPPORT_FICHIER" fi } # ============================================================================= -# MAIN +# PROGRAMME PRINCIPAL # ============================================================================= -# Initialise report -> "$REPORT_FILE" -cat >> "$REPORT_FILE" < "$RAPPORT_FICHIER" +cat >> "$RAPPORT_FICHIER" </dev/null || echo "$STYLE") - check_endpoint GET "$BASE_URL/titre/style/$ENCODED" "GET /titre/style/$STYLE" + ENCODE=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$STYLE'))" 2>/dev/null || echo "$STYLE") + verifier_endpoint GET "$BASE_URL/titre/style/$ENCODE" "GET /titre/style/$STYLE" done log "" info "── Artiste ───────────────────────────────────────────────" +# Test des pages artiste avec des noms en kebab-case ARTISTES=("fatal-bazooka" "daft-punk" "justice" "kraftwerk") for ARTISTE in "${ARTISTES[@]}"; do - check_endpoint GET "$BASE_URL/artiste/$ARTISTE" "GET /artiste/$ARTISTE" + verifier_endpoint GET "$BASE_URL/artiste/$ARTISTE" "GET /artiste/$ARTISTE" done log "" info "── Recherche (POST) ──────────────────────────────────────" +# Test de la recherche plein texte par mots-clés MOTS=("rock" "jazz" "pop" "metal") for MOT in "${MOTS[@]}"; do - check_endpoint POST "$BASE_URL/recherche" \ + verifier_endpoint POST "$BASE_URL/recherche" \ "POST /recherche (mot=$MOT)" \ "mot=$MOT" done log "" -# ── ADMINISTRATION SECTION ──────────────────────────────────────────────────── -info "── Administration – Dashboard ────────────────────────────" -check_endpoint GET "$BASE_URL/Administration/Dashboard" "GET /Administration/Dashboard" +# ── SECTION ADMINISTRATION ──────────────────────────────────────────────────── +info "── Administration – Tableau de bord ──────────────────────" +verifier_endpoint GET "$BASE_URL/Administration/Dashboard" "GET /Administration/Dashboard" log "" info "── Administration – Artiste ──────────────────────────────" -check_endpoint GET "$BASE_URL/Administration/Artiste" "GET /Administration/Artiste (Index)" -check_endpoint GET "$BASE_URL/Administration/Artiste/Create" "GET /Administration/Artiste/Create" -check_endpoint GET "$BASE_URL/Administration/Artiste/Edit/1" "GET /Administration/Artiste/Edit/1" -check_endpoint GET "$BASE_URL/Administration/Artiste/Delete/1" "GET /Administration/Artiste/Delete/1" +verifier_endpoint GET "$BASE_URL/Administration/Artiste" "GET /Administration/Artiste (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Artiste/Create" "GET /Administration/Artiste/Create" +verifier_endpoint GET "$BASE_URL/Administration/Artiste/Edit/1" "GET /Administration/Artiste/Edit/1" +verifier_endpoint GET "$BASE_URL/Administration/Artiste/Delete/1" "GET /Administration/Artiste/Delete/1" log "" info "── Administration – Commentaire ──────────────────────────" -check_endpoint GET "$BASE_URL/Administration/Commentaire" "GET /Administration/Commentaire (Index)" -check_endpoint GET "$BASE_URL/Administration/Commentaire/Delete/1" \ - "GET /Administration/Commentaire/Delete/1" +verifier_endpoint GET "$BASE_URL/Administration/Commentaire" "GET /Administration/Commentaire (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Commentaire/Delete/1" "GET /Administration/Commentaire/Delete/1" log "" info "── Administration – Style ────────────────────────────────" -check_endpoint GET "$BASE_URL/Administration/Style" "GET /Administration/Style (Index)" -check_endpoint GET "$BASE_URL/Administration/Style/Create" "GET /Administration/Style/Create" -check_endpoint GET "$BASE_URL/Administration/Style/Edit/1" "GET /Administration/Style/Edit/1" -check_endpoint GET "$BASE_URL/Administration/Style/Delete/1" "GET /Administration/Style/Delete/1" +verifier_endpoint GET "$BASE_URL/Administration/Style" "GET /Administration/Style (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Style/Create" "GET /Administration/Style/Create" +verifier_endpoint GET "$BASE_URL/Administration/Style/Edit/1" "GET /Administration/Style/Edit/1" +verifier_endpoint GET "$BASE_URL/Administration/Style/Delete/1" "GET /Administration/Style/Delete/1" log "" info "── Administration – Titre ────────────────────────────────" -check_endpoint GET "$BASE_URL/Administration/Titre" "GET /Administration/Titre (Index)" -check_endpoint GET "$BASE_URL/Administration/Titre/Create" "GET /Administration/Titre/Create" -check_endpoint GET "$BASE_URL/Administration/Titre/Edit/1" "GET /Administration/Titre/Edit/1" -check_endpoint GET "$BASE_URL/Administration/Titre/Delete/1" "GET /Administration/Titre/Delete/1" +verifier_endpoint GET "$BASE_URL/Administration/Titre" "GET /Administration/Titre (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Titre/Create" "GET /Administration/Titre/Create" +verifier_endpoint GET "$BASE_URL/Administration/Titre/Edit/1" "GET /Administration/Titre/Edit/1" +verifier_endpoint GET "$BASE_URL/Administration/Titre/Delete/1" "GET /Administration/Titre/Delete/1" -# ── SUMMARY ─────────────────────────────────────────────────────────────────── -PASSED=$((TOTAL - FAILED)) +# ── RÉCAPITULATIF ───────────────────────────────────────────────────────────── +REUSSIS=$((TOTAL - ECHECS)) log "" info "╔══════════════════════════════════════════════════════════╗" -info "║ Results ║" +info "║ Résultats ║" info "╚══════════════════════════════════════════════════════════╝" -log " Total : ${TOTAL}" -log " ${GREEN}Passed${RESET} : ${PASSED}" +log " Total : ${TOTAL}" +log " ${VERT}Réussis${RESET} : ${REUSSIS}" -if [ "$FAILED" -gt 0 ]; then - log " ${RED}Failed${RESET} : ${FAILED}" +if [ "$ECHECS" -gt 0 ]; then + log " ${ROUGE}Échecs${RESET} : ${ECHECS}" log "" - log "${RED}${BOLD}❌ FAILED ENDPOINTS:${RESET}" - grep -E "^\[(FAIL|SLOW)\]" "$REPORT_FILE" | while IFS= read -r line; do - log " ${RED}→${RESET} $line" + log "${ROUGE}${GRAS}❌ ENDPOINTS EN ÉCHEC :${RESET}" + # Affichage de tous les endpoints ayant échoué ou dépassé le seuil + grep -E "^\[(ÉCHEC|LENT)\]" "$RAPPORT_FICHIER" | while IFS= read -r ligne; do + log " ${ROUGE}→${RESET} $ligne" done log "" - log "${RED}PR should be rejected. Fix the endpoints above.${RESET}" + log "${ROUGE}La PR doit être rejetée. Corrigez les endpoints ci-dessus.${RESET}" else - log " ${GREEN}Failed${RESET} : 0" + log " ${VERT}Échecs${RESET} : 0" log "" - log "${GREEN}${BOLD}✅ All endpoints are within the ${MAX_MS}ms threshold.${RESET}" + log "${VERT}${GRAS}✅ Tous les endpoints respectent le seuil de ${MAX_MS}ms.${RESET}" fi log "" -log "Full report saved to: ${REPORT_FILE}" +log "Rapport complet enregistré dans : ${RAPPORT_FICHIER}" log "" -# Write summary to report -cat >> "$REPORT_FILE" <> "$RAPPORT_FICHIER" <