(t *testing.T)
| 64 | } |
| 65 | |
| 66 | func TestMiddlewareContextFields(t *testing.T) { |
| 67 | t.Parallel() |
| 68 | |
| 69 | chatID := uuid.New() |
| 70 | sink := testutil.NewFakeSink(t) |
| 71 | handler := tracing.StatusWriterMiddleware(loggermw.Logger(sink.Logger(), nil)( |
| 72 | agentchat.Middleware(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { |
| 73 | sink.Logger().With(agentchat.Fields(r.Context())...).Info(r.Context(), "handler log") |
| 74 | rw.WriteHeader(http.StatusNoContent) |
| 75 | })), |
| 76 | )) |
| 77 | |
| 78 | req := httptest.NewRequest(http.MethodGet, "/test", nil) |
| 79 | req.Header.Set(workspacesdk.CoderChatIDHeader, chatID.String()) |
| 80 | rw := httptest.NewRecorder() |
| 81 | handler.ServeHTTP(rw, req) |
| 82 | require.Equal(t, http.StatusNoContent, rw.Code) |
| 83 | |
| 84 | entries := sink.Entries() |
| 85 | require.Len(t, entries, 2) |
| 86 | for _, entry := range entries { |
| 87 | if entry.Message != "handler log" { |
| 88 | continue |
| 89 | } |
| 90 | fields := fieldsByName(entry.Fields) |
| 91 | require.Equal(t, chatID.String(), fields["chat_id"]) |
| 92 | return |
| 93 | } |
| 94 | t.Fatal("handler log entry not found") |
| 95 | } |
| 96 | |
| 97 | func fieldsByName(fields []slog.Field) map[string]any { |
| 98 | byName := make(map[string]any, len(fields)) |
nothing calls this directly
no test coverage detected