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

Function TestDisabledProviderHandler

aibridge/bridge_test.go:287–337  ·  view source on GitHub ↗

TestDisabledProviderHandler asserts that requests to a disabled provider return a 503 with an ErrorCodeProviderDisabled body and that a sibling enabled provider keeps routing normally.

(t *testing.T)

Source from the content-addressed store, hash-verified

285// provider return a 503 with an ErrorCodeProviderDisabled body and
286// that a sibling enabled provider keeps routing normally.
287func TestDisabledProviderHandler(t *testing.T) {
288 t.Parallel()
289
290 logger := slogtest.Make(t, nil)
291
292 upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
293 _, _ = w.Write([]byte("upstream-reached"))
294 }))
295 t.Cleanup(upstream.Close)
296
297 enabled := aibridge.NewOpenAIProvider(config.OpenAI{Name: "enabled-openai", BaseURL: upstream.URL})
298 disabled := aibridge.NewDisabledProviderStub("disabled-openai", "openai")
299 bridge, err := aibridge.NewRequestBridge(
300 t.Context(),
301 []provider.Provider{enabled, disabled},
302 nil, nil, logger, nil, bridgeTestTracer,
303 )
304 require.NoError(t, err)
305
306 for _, tc := range []struct {
307 name string
308 path string
309 }{
310 {name: "Bridged", path: "/disabled-openai/v1/chat/completions"},
311 {name: "Passthrough", path: "/disabled-openai/v1/models"},
312 {name: "Unknown", path: "/disabled-openai/anything/else"},
313 } {
314 t.Run("DisabledProviderReturnsSentinel/"+tc.name, func(t *testing.T) {
315 t.Parallel()
316
317 req := httptest.NewRequest(http.MethodPost, tc.path, nil)
318 resp := httptest.NewRecorder()
319 bridge.ServeHTTP(resp, req)
320
321 assert.Equal(t, http.StatusServiceUnavailable, resp.Code)
322 assert.Contains(t, resp.Body.String(), aibridge.ErrorCodeProviderDisabled)
323 assert.Contains(t, resp.Body.String(), "disabled-openai")
324 })
325 }
326
327 t.Run("EnabledProviderUnaffected", func(t *testing.T) {
328 t.Parallel()
329
330 req := httptest.NewRequest(http.MethodGet, "/enabled-openai/v1/models", nil)
331 resp := httptest.NewRecorder()
332 bridge.ServeHTTP(resp, req)
333
334 assert.Equal(t, http.StatusOK, resp.Code)
335 assert.Equal(t, "upstream-reached", resp.Body.String())
336 })
337}

Callers

nothing calls this directly

Calls 11

ServeHTTPMethod · 0.95
NewOpenAIProviderFunction · 0.92
NewDisabledProviderStubFunction · 0.92
NewRequestBridgeFunction · 0.92
WriteMethod · 0.65
CleanupMethod · 0.65
ContextMethod · 0.65
RunMethod · 0.65
EqualMethod · 0.45
ContainsMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected