Add form builder (#235)
* add form builder * cover VariImage * test for closing errors * simplify tests * add audio api test coverage * don't leak authToken when printed * rename api->client * fix test
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
package openai_test
|
||||
package openai //nolint:testpackage // testing private field
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"mime"
|
||||
"mime/multipart"
|
||||
@@ -11,7 +12,6 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
. "github.com/sashabaranov/go-openai"
|
||||
"github.com/sashabaranov/go-openai/internal/test"
|
||||
"github.com/sashabaranov/go-openai/internal/test/checks"
|
||||
|
||||
@@ -188,3 +188,47 @@ func handleAudioEndpoint(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestAudioWithFailingFormBuilder(t *testing.T) {
|
||||
dir, cleanup := createTestDirectory(t)
|
||||
defer cleanup()
|
||||
path := filepath.Join(dir, "fake.mp3")
|
||||
createTestFile(t, path)
|
||||
|
||||
req := AudioRequest{
|
||||
FilePath: path,
|
||||
Prompt: "test",
|
||||
Temperature: 0.5,
|
||||
Language: "en",
|
||||
}
|
||||
|
||||
mockFailedErr := fmt.Errorf("mock form builder fail")
|
||||
mockBuilder := &mockFormBuilder{}
|
||||
|
||||
mockBuilder.mockCreateFormFile = func(string, *os.File) error {
|
||||
return mockFailedErr
|
||||
}
|
||||
err := audioMultipartForm(req, mockBuilder)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "audioMultipartForm should return error if form builder fails")
|
||||
|
||||
mockBuilder.mockCreateFormFile = func(string, *os.File) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var failForField string
|
||||
mockBuilder.mockWriteField = func(fieldname, value string) error {
|
||||
if fieldname == failForField {
|
||||
return mockFailedErr
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
failOn := []string{"model", "prompt", "temperature", "language"}
|
||||
for _, failingField := range failOn {
|
||||
failForField = failingField
|
||||
mockFailedErr = fmt.Errorf("mock form builder fail on field %s", failingField)
|
||||
|
||||
err = audioMultipartForm(req, mockBuilder)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "audioMultipartForm should return error if form builder fails")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user