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, ) } } }