@@ -4401,6 +4401,60 @@ func TestCreateFile(t *testing.T) {
44014401 }
44024402}
44034403
4404+ func TestCreateFileWithExplicitProviderDoesNotRequireProviderInventory (t * testing.T ) {
4405+ base := & mockProvider {
4406+ fileCreateResponse : & core.FileObject {
4407+ ID : "file_ok_1" ,
4408+ Object : "file" ,
4409+ Bytes : 16 ,
4410+ CreatedAt : 1000 ,
4411+ Filename : "requests.jsonl" ,
4412+ Purpose : "batch" ,
4413+ Provider : "openai" ,
4414+ },
4415+ }
4416+
4417+ provider := & providerWithoutFileInventory {inner : base }
4418+ e := echo .New ()
4419+ handler := NewHandler (provider , nil , nil , nil )
4420+
4421+ var body bytes.Buffer
4422+ writer := multipart .NewWriter (& body )
4423+ if err := writer .WriteField ("purpose" , "batch" ); err != nil {
4424+ t .Fatalf ("write purpose: %v" , err )
4425+ }
4426+ if err := writer .WriteField ("provider" , "openai" ); err != nil {
4427+ t .Fatalf ("write provider: %v" , err )
4428+ }
4429+ part , err := writer .CreateFormFile ("file" , "requests.jsonl" )
4430+ if err != nil {
4431+ t .Fatalf ("create form file: %v" , err )
4432+ }
4433+ if _ , err := part .Write ([]byte ("{\" custom_id\" :\" 1\" }\n " )); err != nil {
4434+ t .Fatalf ("write form file: %v" , err )
4435+ }
4436+ if err := writer .Close (); err != nil {
4437+ t .Fatalf ("close multipart writer: %v" , err )
4438+ }
4439+
4440+ req := httptest .NewRequest (http .MethodPost , "/v1/files" , & body )
4441+ req .Header .Set ("Content-Type" , writer .FormDataContentType ())
4442+ frame := core .NewRequestSnapshot (http .MethodPost , "/v1/files" , nil , nil , nil , writer .FormDataContentType (), nil , false , "" , nil )
4443+ req = withRequestSnapshotAndPrompt (req , frame )
4444+ rec := httptest .NewRecorder ()
4445+ c := e .NewContext (req , rec )
4446+
4447+ if err := handler .CreateFile (c ); err != nil {
4448+ t .Fatalf ("handler returned error: %v" , err )
4449+ }
4450+ if rec .Code != http .StatusOK {
4451+ t .Fatalf ("expected status 200, got %d" , rec .Code )
4452+ }
4453+ if len (base .capturedFileCreateReqs ) != 1 {
4454+ t .Fatalf ("len(capturedFileCreateReqs) = %d, want 1" , len (base .capturedFileCreateReqs ))
4455+ }
4456+ }
4457+
44044458func TestGetDeleteAndContentFile (t * testing.T ) {
44054459 mock := & mockProvider {
44064460 supportedModels : []string {"gpt-4o-mini" },
0 commit comments