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:
136
image_test.go
136
image_test.go
@@ -1,7 +1,6 @@
|
||||
package openai_test
|
||||
package openai //nolint:testpackage // testing private field
|
||||
|
||||
import (
|
||||
. "github.com/sashabaranov/go-openai"
|
||||
"github.com/sashabaranov/go-openai/internal/test"
|
||||
"github.com/sashabaranov/go-openai/internal/test/checks"
|
||||
|
||||
@@ -259,3 +258,136 @@ func handleVariateImageEndpoint(w http.ResponseWriter, r *http.Request) {
|
||||
resBytes, _ = json.Marshal(responses)
|
||||
fmt.Fprintln(w, string(resBytes))
|
||||
}
|
||||
|
||||
type mockFormBuilder struct {
|
||||
mockCreateFormFile func(string, *os.File) error
|
||||
mockWriteField func(string, string) error
|
||||
mockClose func() error
|
||||
}
|
||||
|
||||
func (fb *mockFormBuilder) createFormFile(fieldname string, file *os.File) error {
|
||||
return fb.mockCreateFormFile(fieldname, file)
|
||||
}
|
||||
|
||||
func (fb *mockFormBuilder) writeField(fieldname, value string) error {
|
||||
return fb.mockWriteField(fieldname, value)
|
||||
}
|
||||
|
||||
func (fb *mockFormBuilder) close() error {
|
||||
return fb.mockClose()
|
||||
}
|
||||
|
||||
func (fb *mockFormBuilder) formDataContentType() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func TestImageFormBuilderFailures(t *testing.T) {
|
||||
config := DefaultConfig("")
|
||||
config.BaseURL = ""
|
||||
client := NewClientWithConfig(config)
|
||||
|
||||
mockBuilder := &mockFormBuilder{}
|
||||
client.createFormBuilder = func(io.Writer) formBuilder {
|
||||
return mockBuilder
|
||||
}
|
||||
ctx := context.Background()
|
||||
|
||||
req := ImageEditRequest{
|
||||
Mask: &os.File{},
|
||||
}
|
||||
|
||||
mockFailedErr := fmt.Errorf("mock form builder fail")
|
||||
mockBuilder.mockCreateFormFile = func(string, *os.File) error {
|
||||
return mockFailedErr
|
||||
}
|
||||
_, err := client.CreateEditImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails")
|
||||
|
||||
mockBuilder.mockCreateFormFile = func(name string, file *os.File) error {
|
||||
if name == "mask" {
|
||||
return mockFailedErr
|
||||
}
|
||||
return nil
|
||||
}
|
||||
_, err = client.CreateEditImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails")
|
||||
|
||||
mockBuilder.mockCreateFormFile = func(name string, file *os.File) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var failForField string
|
||||
mockBuilder.mockWriteField = func(fieldname, value string) error {
|
||||
if fieldname == failForField {
|
||||
return mockFailedErr
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
failForField = "prompt"
|
||||
_, err = client.CreateEditImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails")
|
||||
|
||||
failForField = "n"
|
||||
_, err = client.CreateEditImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails")
|
||||
|
||||
failForField = "size"
|
||||
_, err = client.CreateEditImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails")
|
||||
|
||||
failForField = ""
|
||||
mockBuilder.mockClose = func() error {
|
||||
return mockFailedErr
|
||||
}
|
||||
_, err = client.CreateEditImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails")
|
||||
}
|
||||
|
||||
func TestVariImageFormBuilderFailures(t *testing.T) {
|
||||
config := DefaultConfig("")
|
||||
config.BaseURL = ""
|
||||
client := NewClientWithConfig(config)
|
||||
|
||||
mockBuilder := &mockFormBuilder{}
|
||||
client.createFormBuilder = func(io.Writer) formBuilder {
|
||||
return mockBuilder
|
||||
}
|
||||
ctx := context.Background()
|
||||
|
||||
req := ImageVariRequest{}
|
||||
|
||||
mockFailedErr := fmt.Errorf("mock form builder fail")
|
||||
mockBuilder.mockCreateFormFile = func(string, *os.File) error {
|
||||
return mockFailedErr
|
||||
}
|
||||
_, err := client.CreateVariImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateVariImage should return error if form builder fails")
|
||||
|
||||
mockBuilder.mockCreateFormFile = func(name string, file *os.File) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var failForField string
|
||||
mockBuilder.mockWriteField = func(fieldname, value string) error {
|
||||
if fieldname == failForField {
|
||||
return mockFailedErr
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
failForField = "n"
|
||||
_, err = client.CreateVariImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateVariImage should return error if form builder fails")
|
||||
|
||||
failForField = "size"
|
||||
_, err = client.CreateVariImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateVariImage should return error if form builder fails")
|
||||
|
||||
failForField = ""
|
||||
mockBuilder.mockClose = func() error {
|
||||
return mockFailedErr
|
||||
}
|
||||
_, err = client.CreateVariImage(ctx, req)
|
||||
checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user