summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/metrics_test.go
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2020-09-21 15:42:47 -0400
committerGitHub <noreply@github.com>2020-09-21 13:42:47 -0600
commitb1d456d8abf15616afb6c6893af90473b4941365 (patch)
tree7fb46662b887e2bcd20401d31935b7c4fc49199a /modules/caddyhttp/metrics_test.go
parentd16ede358a2ec049bda28bf37e79c9cfcaa64c29 (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.go18
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