MCPcopy Index your code
hub / github.com/coder/coder / TestMiddlewareContextFields

Function TestMiddlewareContextFields

agent/agentchat/log_test.go:66–95  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

64}
65
66func 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
97func fieldsByName(fields []slog.Field) map[string]any {
98 byName := make(map[string]any, len(fields))

Callers

nothing calls this directly

Calls 15

LoggerMethod · 0.95
EntriesMethod · 0.95
NewFakeSinkFunction · 0.92
StatusWriterMiddlewareFunction · 0.92
LoggerFunction · 0.92
MiddlewareFunction · 0.92
FieldsFunction · 0.92
fieldsByNameFunction · 0.85
FatalMethod · 0.80
NewMethod · 0.65
ContextMethod · 0.65
SetMethod · 0.65

Tested by

no test coverage detected