Skip to content

Testing & Verification ​

RouteWarden contains a comprehensive, multi-layer testing architecture designed to guarantee correctness, concurrency safety, and total compliance with Traefik's Yaegi interpreter constraints.


Running Automated Tests ​

go test -v -race ./...

(Current statement coverage stands at >92% across all modules).


Test Architecture & Modular Coverage ​

RouteWarden isolates unit testing per component and uses integration tests to validate full HTTP request cycles:

Test FileScope & Focus
config_test.goDefault settings, regex dictionaries, validation of CreateConfig() and factory defaults.
path_normalizer_test.goRecursive URL unescaping (%252e%252e), semicolon matrix parameters (/;param/.env), Windows backslash normalization, and null byte injection attacks.
ip_filter_test.goExact IPv4/IPv6 addresses, CIDR subnet matching, parsing X-Forwarded-For, X-Real-IP, and invalid IP syntax error handling.
response_handler_test.goCustom JSON formatting, HTML templates, Turnstile/hCaptcha/reCAPTCHA markup generation, redirects, silent drops, and status codes.
routewarden_test.goMiddleware integration, default patterns, custom regex rules, allowlist overrides, query inspection, and disabled mode pass-through.
integration_test.goFull multi-middleware pipeline simulation (Tracing ➡️ RouteWarden ➡️ Upstream Backend Service).

Continuous Integration (GitHub Actions) ​

Every pull request and push to main runs RouteWarden's automated CI pipeline:

  • Validates code formatting with gofmt
  • Compiles with Go 1.22+ and 1.23+
  • Executes go test -v -race ./...

Released under the MIT License.