#!/usr/bin/env bash # Une requête bloquée doit apparaître dans /var/log/nginx/maintenance.log # avec l'IP du client, et NE DOIT PAS y apparaître en mode passant. set -euo pipefail # shellcheck source-path=SCRIPTDIR # shellcheck source=../lib.sh source "$(dirname "$0")/../lib.sh" # Scénario bloqué (whitelist sans l'IP du client) restart_proxy whitelist "10.99.99.99" # Vide le log avant le test pour partir d'un état connu proxy_exec sh -c ': > /var/log/nginx/maintenance.log' # Génère une requête bloquée status="$(curl_status)" assert_eq "503" "$status" "code HTTP attendu" # Petit délai pour laisser Nginx flusher le log sleep 1 log_content="$(proxy_exec cat /var/log/nginx/maintenance.log)" assert_contains "172.28.5.50" "$log_content" "IP du client dans maintenance.log" # Vérifie qu'une requête passante (mode blacklist sans IP du client) ne logge PAS restart_proxy blacklist "10.99.99.99" proxy_exec sh -c ': > /var/log/nginx/maintenance.log' status="$(curl_status)" assert_eq "200" "$status" "code HTTP en mode passant" sleep 1 log_after_pass="$(proxy_exec cat /var/log/nginx/maintenance.log)" if [[ -n "$log_after_pass" ]]; then t_fail "maintenance.log devrait être vide après une requête non bloquée, contient : $log_after_pass" fi