check / check (push) Waiting to run
The package passes nothing to an app since rproxy took that over, so it is named after the command it serves. 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
41 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|