NewOpenAI creates a new OpenAI test server with a handler function. The handler is called for each request and should return either a streaming response (via channel) or a non-streaming response. Returns the base URL of the server.
(t testing.TB, handler OpenAIHandler)
| 190 | // response (via channel) or a non-streaming response. |
| 191 | // Returns the base URL of the server. |
| 192 | func NewOpenAI(t testing.TB, handler OpenAIHandler) string { |
| 193 | t.Helper() |
| 194 | |
| 195 | s := &openAIServer{ |
| 196 | t: t, |
| 197 | handler: handler, |
| 198 | } |
| 199 | |
| 200 | mux := http.NewServeMux() |
| 201 | mux.HandleFunc("POST /chat/completions", s.handleChatCompletions) |
| 202 | mux.HandleFunc("POST /responses", s.handleResponses) |
| 203 | |
| 204 | s.server = httptest.NewServer(mux) |
| 205 | |
| 206 | t.Cleanup(func() { |
| 207 | s.server.Close() |
| 208 | }) |
| 209 | |
| 210 | return s.server.URL |
| 211 | } |
| 212 | |
| 213 | func (s *openAIServer) handleChatCompletions(w http.ResponseWriter, r *http.Request) { |
| 214 | body, err := io.ReadAll(r.Body) |