diff options
author | Dave Henderson <dhenderson@gmail.com> | 2020-09-21 15:42:47 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-21 13:42:47 -0600 |
commit | b1d456d8abf15616afb6c6893af90473b4941365 (patch) | |
tree | 7fb46662b887e2bcd20401d31935b7c4fc49199a /modules/caddyhttp/metrics_test.go | |
parent | d16ede358a2ec049bda28bf37e79c9cfcaa64c29 (diff) |
metrics: Fix panic when headers aren't written (#3737)
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'modules/caddyhttp/metrics_test.go')
-rw-r--r-- | modules/caddyhttp/metrics_test.go | 18 |
1 files changed, 18 insertions, 0 deletions
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 |