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

Function fakeAgentAPIEcho

cli/task_test.go:193–277  ·  view source on GitHub ↗
(ctx context.Context, t testing.TB, initMsg agentapisdk.Message, want ...string)

Source from the content-addressed store, hash-verified

191}
192
193func fakeAgentAPIEcho(ctx context.Context, t testing.TB, initMsg agentapisdk.Message, want ...string) map[string]http.HandlerFunc {
194 t.Helper()
195 var mmu sync.RWMutex
196 msgs := []agentapisdk.Message{initMsg}
197 wantCpy := make([]string, len(want))
198 copy(wantCpy, want)
199 t.Cleanup(func() {
200 mmu.Lock()
201 defer mmu.Unlock()
202 if !t.Failed() {
203 assert.Empty(t, wantCpy, "not all expected messages received: missing %v", wantCpy)
204 }
205 })
206 writeAgentAPIError := func(w http.ResponseWriter, err error, status int) {
207 w.WriteHeader(status)
208 _ = json.NewEncoder(w).Encode(agentapisdk.ErrorModel{
209 Errors: ptr.Ref([]agentapisdk.ErrorDetail{
210 {
211 Message: ptr.Ref(err.Error()),
212 },
213 }),
214 })
215 }
216 return map[string]http.HandlerFunc{
217 "/status": func(w http.ResponseWriter, r *http.Request) {
218 w.Header().Set("Content-Type", "application/json")
219 _ = json.NewEncoder(w).Encode(agentapisdk.GetStatusResponse{
220 Status: "stable",
221 })
222 },
223 "/messages": func(w http.ResponseWriter, r *http.Request) {
224 w.Header().Set("Content-Type", "application/json")
225 mmu.RLock()
226 defer mmu.RUnlock()
227 bs, err := json.Marshal(agentapisdk.GetMessagesResponse{
228 Messages: msgs,
229 })
230 if err != nil {
231 writeAgentAPIError(w, err, http.StatusBadRequest)
232 return
233 }
234 _, _ = w.Write(bs)
235 },
236 "/message": func(w http.ResponseWriter, r *http.Request) {
237 mmu.Lock()
238 defer mmu.Unlock()
239 var params agentapisdk.PostMessageParams
240 w.Header().Set("Content-Type", "application/json")
241 err := json.NewDecoder(r.Body).Decode(&params)
242 if !assert.NoError(t, err, "decode message") {
243 writeAgentAPIError(w, err, http.StatusBadRequest)
244 return
245 }
246
247 if len(wantCpy) == 0 {
248 assert.Fail(t, "unexpected message", "received message %v, but no more expected messages", params)
249 writeAgentAPIError(w, xerrors.New("no more expected messages"), http.StatusBadRequest)
250 return

Callers 1

Test_TasksFunction · 0.85

Calls 15

RefFunction · 0.92
EncodeMethod · 0.80
HelperMethod · 0.65
CleanupMethod · 0.65
SetMethod · 0.65
WriteMethod · 0.65
NewMethod · 0.65
LockMethod · 0.45
UnlockMethod · 0.45
FailedMethod · 0.45
EmptyMethod · 0.45
WriteHeaderMethod · 0.45

Tested by

no test coverage detected