mirror of
https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin.git
synced 2026-09-02 20:28:50 +02:00
The mock returns "f" (not banned) for 1.2.3.4 and "t" (banned) for 1.2.3.5, and the run.sh assertions match that. Both doc comments described the opposite mapping; correct them to match the code. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
26 lines
916 B
Bash
26 lines
916 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
# shellcheck source=../../lib/common.sh
|
|
source "$HERE/../../lib/common.sh"
|
|
|
|
SCENARIO=redis
|
|
|
|
# Redis cache check: the mock returns "f" (not banned) for 1.2.3.4 and "t"
|
|
# (banned) for 1.2.3.5. All other IPs return a miss, which falls through to the
|
|
# LAPI (no decision → allowed). This proves the plugin reads cached decisions
|
|
# from Redis correctly.
|
|
body() {
|
|
echo "[$SCENARIO] cached clean IP must pass"
|
|
assert_status "http://127.0.0.1:${WEB_PORT}/foo" 200 -H "X-Forwarded-For: 1.2.3.4"
|
|
|
|
echo "[$SCENARIO] cached banned IP must be blocked"
|
|
assert_status "http://127.0.0.1:${WEB_PORT}/foo" 403 -H "X-Forwarded-For: 1.2.3.5"
|
|
|
|
echo "[$SCENARIO] unknown IP (redis miss) must fall through to LAPI and pass"
|
|
assert_status "http://127.0.0.1:${WEB_PORT}/foo" 200 -H "X-Forwarded-For: 1.2.3.6"
|
|
}
|
|
|
|
run_scenario "$SCENARIO" "$HERE" body
|