@@ -2,13 +2,24 @@ package openai //nolint:testpackage // testing private field
2
2
3
3
import (
4
4
"bytes"
5
+ "context"
5
6
"errors"
6
7
"fmt"
7
8
"io"
8
9
"net/http"
9
10
"testing"
11
+
12
+ "github.com/sashabaranov/go-openai/internal/test"
10
13
)
11
14
15
+ var errTestRequestBuilderFailed = errors .New ("test request builder failed" )
16
+
17
+ type failingRequestBuilder struct {}
18
+
19
+ func (* failingRequestBuilder ) Build (_ context.Context , _ , _ string , _ any ) (* http.Request , error ) {
20
+ return nil , errTestRequestBuilderFailed
21
+ }
22
+
12
23
func TestClient (t * testing.T ) {
13
24
const mockToken = "mock token"
14
25
client := NewClient (mockToken )
@@ -145,3 +156,141 @@ func TestHandleErrorResp(t *testing.T) {
145
156
})
146
157
}
147
158
}
159
+
160
+ func TestClientReturnsRequestBuilderErrors (t * testing.T ) {
161
+ var err error
162
+ ts := test .NewTestServer ().OpenAITestServer ()
163
+ ts .Start ()
164
+ defer ts .Close ()
165
+
166
+ config := DefaultConfig (test .GetTestToken ())
167
+ config .BaseURL = ts .URL + "/v1"
168
+ client := NewClientWithConfig (config )
169
+ client .requestBuilder = & failingRequestBuilder {}
170
+
171
+ ctx := context .Background ()
172
+
173
+ _ , err = client .CreateCompletion (ctx , CompletionRequest {Prompt : "testing" })
174
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
175
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
176
+ }
177
+
178
+ _ , err = client .CreateChatCompletion (ctx , ChatCompletionRequest {Model : GPT3Dot5Turbo })
179
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
180
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
181
+ }
182
+
183
+ _ , err = client .CreateChatCompletionStream (ctx , ChatCompletionRequest {Model : GPT3Dot5Turbo })
184
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
185
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
186
+ }
187
+
188
+ _ , err = client .CreateFineTune (ctx , FineTuneRequest {})
189
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
190
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
191
+ }
192
+
193
+ _ , err = client .ListFineTunes (ctx )
194
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
195
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
196
+ }
197
+
198
+ _ , err = client .CancelFineTune (ctx , "" )
199
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
200
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
201
+ }
202
+
203
+ _ , err = client .GetFineTune (ctx , "" )
204
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
205
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
206
+ }
207
+
208
+ _ , err = client .DeleteFineTune (ctx , "" )
209
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
210
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
211
+ }
212
+
213
+ _ , err = client .ListFineTuneEvents (ctx , "" )
214
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
215
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
216
+ }
217
+
218
+ _ , err = client .Moderations (ctx , ModerationRequest {})
219
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
220
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
221
+ }
222
+
223
+ _ , err = client .Edits (ctx , EditsRequest {})
224
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
225
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
226
+ }
227
+
228
+ _ , err = client .CreateEmbeddings (ctx , EmbeddingRequest {})
229
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
230
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
231
+ }
232
+
233
+ _ , err = client .CreateImage (ctx , ImageRequest {})
234
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
235
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
236
+ }
237
+
238
+ err = client .DeleteFile (ctx , "" )
239
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
240
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
241
+ }
242
+
243
+ _ , err = client .GetFile (ctx , "" )
244
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
245
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
246
+ }
247
+
248
+ _ , err = client .ListFiles (ctx )
249
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
250
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
251
+ }
252
+
253
+ _ , err = client .ListEngines (ctx )
254
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
255
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
256
+ }
257
+
258
+ _ , err = client .GetEngine (ctx , "" )
259
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
260
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
261
+ }
262
+
263
+ _ , err = client .ListModels (ctx )
264
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
265
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
266
+ }
267
+
268
+ _ , err = client .CreateCompletionStream (ctx , CompletionRequest {Prompt : "" })
269
+ if ! errors .Is (err , errTestRequestBuilderFailed ) {
270
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
271
+ }
272
+ }
273
+
274
+ func TestClientReturnsRequestBuilderErrorsAddtion (t * testing.T ) {
275
+ var err error
276
+ ts := test .NewTestServer ().OpenAITestServer ()
277
+ ts .Start ()
278
+ defer ts .Close ()
279
+
280
+ config := DefaultConfig (test .GetTestToken ())
281
+ config .BaseURL = ts .URL + "/v1"
282
+ client := NewClientWithConfig (config )
283
+ client .requestBuilder = & failingRequestBuilder {}
284
+
285
+ ctx := context .Background ()
286
+
287
+ _ , err = client .CreateCompletion (ctx , CompletionRequest {Prompt : 1 })
288
+ if ! errors .Is (err , ErrCompletionRequestPromptTypeNotSupported ) {
289
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
290
+ }
291
+
292
+ _ , err = client .CreateCompletionStream (ctx , CompletionRequest {Prompt : 1 })
293
+ if ! errors .Is (err , ErrCompletionRequestPromptTypeNotSupported ) {
294
+ t .Fatalf ("Did not return error when request builder failed: %v" , err )
295
+ }
296
+ }
0 commit comments