diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index 415912c4ae79..16b909eab448 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -547,13 +547,15 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List arraySchema = new ArraySchema().items( + new BinarySchema() + ); + + ObjectSchema objectSchema = new ObjectSchema(); + objectSchema.addProperty("files", arraySchema); + mediaType.setSchema(objectSchema); + content.addMediaType("multipart/form-data", mediaType); + requestBody.setContent(content); + operation.setRequestBody(requestBody); + + codegen.setOpenAPI(openAPI); + + // Convert to CodegenOperation + CodegenOperation codegenOperation = codegen.fromOperation("/upload", "post", operation, null); + + // Create OperationsMap structure + OperationMap operationMap = new OperationMap(); + operationMap.setOperation(codegenOperation); + OperationsMap operationsMap = new OperationsMap(); + operationsMap.setOperation(operationMap); + operationsMap.setImports(new ArrayList<>()); + + // Post-process the operations + OperationsMap result = codegen.postProcessOperationsWithModels(operationsMap, Collections.emptyList()); + + // Assert that "os" import was added + List> imports = result.getImports(); + boolean hasOsImport = imports.stream() + .anyMatch(imp -> "os".equals(imp.get("import"))); + + Assert.assertTrue(hasOsImport, "Expected 'os' import to be added for array of binary files"); + } + + @Test(description = "test that time import is added for array of date-time parameters in operations") + public void testTimeImportForArrayOfDateTimeParametersInOperations() { + // Create OpenAPI spec with array of date-time parameter + OpenAPI openAPI = new OpenAPI(); + openAPI.setComponents(new Components()); + + Operation operation = new Operation(); + Parameter parameter = new Parameter(); + parameter.setName("timestamps"); + parameter.setIn("query"); + + ArraySchema arraySchema = new ArraySchema(); + DateTimeSchema dateTimeSchema = new DateTimeSchema(); + arraySchema.setItems(dateTimeSchema); + parameter.setSchema(arraySchema); + + operation.addParametersItem(parameter); + + codegen.setOpenAPI(openAPI); + + // Convert to CodegenOperation + CodegenOperation codegenOperation = codegen.fromOperation("/events", "get", operation, null); + + // Create OperationsMap structure + OperationMap operationMap = new OperationMap(); + operationMap.setOperation(codegenOperation); + OperationsMap operationsMap = new OperationsMap(); + operationsMap.setOperation(operationMap); + operationsMap.setImports(new ArrayList<>()); + + // Post-process the operations + OperationsMap result = codegen.postProcessOperationsWithModels(operationsMap, Collections.emptyList()); + + // Assert that "time" import was added + List> imports = result.getImports(); + boolean hasTimeImport = imports.stream() + .anyMatch(imp -> "time".equals(imp.get("import"))); + + Assert.assertTrue(hasTimeImport, "Expected 'time' import to be added for array of date-time parameters"); + } }