MCPcopy
hub / github.com/grafana/dskit / TestResponseBodyEscapingInLogs

Function TestResponseBodyEscapingInLogs

middleware/logging_test.go:214–233  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

212}
213
214func TestResponseBodyEscapingInLogs(t *testing.T) {
215 responseBody := `{"status":"error","errorType":"timeout","error":"rpc error: code = DeadlineExceeded desc = context deadline exceeded"}` + "\n"
216 buf := bytes.NewBuffer(nil)
217 loggingMiddleware := Log{
218 Log: log.NewGoKitWithWriter(log.LogfmtFormat, buf),
219 }
220 handler := func(w http.ResponseWriter, _ *http.Request) {
221 w.WriteHeader(http.StatusGatewayTimeout)
222 _, _ = io.WriteString(w, responseBody)
223 }
224 loggingHandler := loggingMiddleware.Wrap(http.HandlerFunc(handler))
225
226 req := httptest.NewRequest("POST", "/loki/api/v1/push", nil)
227 loggingHandler.ServeHTTP(httptest.NewRecorder(), req)
228
229 output := buf.String()
230 require.Contains(t, output, "level=warn")
231 require.Contains(t, output, "POST /loki/api/v1/push (504)")
232 require.Contains(t, output, `Response: {\"status\":\"error\",\"errorType\":\"timeout\",\"error\":\"rpc error: code = DeadlineExceeded desc = context deadline exceeded\"}\n`)
233}
234
235type errorWriter struct {
236 err error

Callers

nothing calls this directly

Calls 5

WrapMethod · 0.95
NewGoKitWithWriterFunction · 0.92
StringMethod · 0.65
WriteHeaderMethod · 0.45
ServeHTTPMethod · 0.45

Tested by

no test coverage detected