From b1d456d8abf15616afb6c6893af90473b4941365 Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Mon, 21 Sep 2020 15:42:47 -0400 Subject: metrics: Fix panic when headers aren't written (#3737) Signed-off-by: Dave Henderson --- modules/caddyhttp/metrics_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'modules/caddyhttp/metrics_test.go') diff --git a/modules/caddyhttp/metrics_test.go b/modules/caddyhttp/metrics_test.go index 6ac591f..72f29a7 100644 --- a/modules/caddyhttp/metrics_test.go +++ b/modules/caddyhttp/metrics_test.go @@ -57,6 +57,24 @@ func TestMetricsInstrumentedHandler(t *testing.T) { if err := ih.ServeHTTP(w, r, h); err != nil { t.Errorf("Received unexpected error: %w", err) } + + // an empty handler - no errors, no header written + mh = middlewareHandlerFunc(func(w http.ResponseWriter, r *http.Request, h Handler) error { + return nil + }) + ih = newMetricsInstrumentedHandler("empty", mh) + r = httptest.NewRequest("GET", "/", nil) + w = httptest.NewRecorder() + + if err := ih.ServeHTTP(w, r, h); err != nil { + t.Errorf("Received unexpected error: %w", err) + } + if actual := w.Result().StatusCode; actual != 200 { + t.Errorf("Not same: expected status code %#v, but got %#v", 200, actual) + } + if actual := w.Result().Header; len(actual) != 0 { + t.Errorf("Not empty: expected headers to be empty, but got %#v", actual) + } } type middlewareHandlerFunc func(http.ResponseWriter, *http.Request, Handler) error -- cgit v1.2.3