(t *testing.T)
| 212 | } |
| 213 | |
| 214 | func 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 | |
| 235 | type errorWriter struct { |
| 236 | err error |
nothing calls this directly
no test coverage detected