check / check (push) Waiting to run
script/fmt now runs golines -m 77 after gofmt, repeating golines until it changes nothing, since one pass can leave a line the next splits. script/fmt-check fails when either would change a file. script/bootstrap installs golines v0.13.0 with go install, pinned to its commit, and checks the installed version with go version -m. The tree is reformatted. The longer lines this makes are fixed by hand: nolint directives moved onto their own line above the statement, one string split, and 20 functions over funlen's 80 lines shortened or split, RunWAF and limitPercentages among them. Model: opus-5-5
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package waf_test
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
|
|
"sneak.berlin/go/smallwebwaf/internal/requestlog"
|
|
"sneak.berlin/go/smallwebwaf/internal/waf"
|
|
)
|
|
|
|
func TestHealthEndpointCountsTowardNoLimit(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// With a limit of one request a minute, any request counted before
|
|
// the last one would have it refused.
|
|
s, _, _ := startWithClock(
|
|
t,
|
|
"",
|
|
map[string]string{rateLimitPerMinute: "1"},
|
|
)
|
|
|
|
const (
|
|
healthChecks = 3
|
|
contentType = "text/plain; charset=utf-8"
|
|
)
|
|
|
|
for range healthChecks {
|
|
got := s.ownEndpointRequest("", http.MethodGet, waf.HealthPath, "",
|
|
http.StatusOK)
|
|
|
|
if string(got.body) != "ok\n" ||
|
|
got.header.Get("Content-Type") != contentType {
|
|
t.Errorf(
|
|
"health endpoint answered %q with Content-Type %q, want ok "+
|
|
"with %q",
|
|
got.body,
|
|
got.header.Get("Content-Type"),
|
|
contentType,
|
|
)
|
|
}
|
|
}
|
|
|
|
s.get(client, http.StatusOK, requestlog.ActionForward)
|
|
|
|
for _, line := range s.out.endedLines(t, healthChecks)[:healthChecks] {
|
|
if line.ResponseContentType != contentType {
|
|
t.Errorf(
|
|
"health check's log line has response_content_type %q, "+
|
|
"want %q",
|
|
line.ResponseContentType,
|
|
contentType,
|
|
)
|
|
}
|
|
}
|
|
}
|