38 lines
1.2 KiB
Bash
38 lines
1.2 KiB
Bash
|
|
#!/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
|