Files
smallwebwaf/internal/servewaf/health_test.go
T
sneak 1b949fddc6
check / check (push) Successful in 6m11s
Rename internal/proxy to internal/servewaf (closes #173)
The package passes nothing to an app since rproxy took that over, so it
is named after the command it serves. Its constructor is New, like
rproxy's. The rproxy tests call their stand-in for servewaf standIn,
since a local servewaf would hide the package. No change of behaviour.

Model: opus-5-5
2026-11-06 18:29:22 +00:00

41 lines
1.1 KiB
Go

package servewaf_test
import (
"net/http"
"testing"
"sneak.berlin/go/smallwebwaf/internal/requestlog"
"sneak.berlin/go/smallwebwaf/internal/servewaf"
)
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.adminRequest("", http.MethodGet, servewaf.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)
}
}
}