|
30 | 30 | import io.swagger.v3.oas.models.Operation; |
31 | 31 | import io.swagger.v3.oas.models.PathItem; |
32 | 32 | import io.swagger.v3.oas.models.headers.Header; |
33 | | -import io.swagger.v3.oas.models.media.*; |
| 33 | +import io.swagger.v3.oas.models.media.ArraySchema; |
| 34 | +import io.swagger.v3.oas.models.media.Content; |
| 35 | +import io.swagger.v3.oas.models.media.Encoding; |
| 36 | +import io.swagger.v3.oas.models.media.IntegerSchema; |
| 37 | +import io.swagger.v3.oas.models.media.MapSchema; |
| 38 | +import io.swagger.v3.oas.models.media.MediaType; |
| 39 | +import io.swagger.v3.oas.models.media.NumberSchema; |
| 40 | +import io.swagger.v3.oas.models.media.ObjectSchema; |
| 41 | +import io.swagger.v3.oas.models.media.Schema; |
| 42 | +import io.swagger.v3.oas.models.media.StringSchema; |
34 | 43 | import io.swagger.v3.oas.models.parameters.QueryParameter; |
35 | 44 | import io.swagger.v3.oas.models.parameters.RequestBody; |
36 | 45 | import io.swagger.v3.oas.models.responses.ApiResponse; |
|
43 | 52 | import org.openapitools.codegen.languages.SpringCodegen; |
44 | 53 | import org.openapitools.codegen.model.ModelMap; |
45 | 54 | import org.openapitools.codegen.model.ModelsMap; |
46 | | -import org.openapitools.codegen.templating.mustache.*; |
| 55 | +import org.openapitools.codegen.templating.mustache.CamelCaseAndSanitizeLambda; |
| 56 | +import org.openapitools.codegen.templating.mustache.IndentedLambda; |
| 57 | +import org.openapitools.codegen.templating.mustache.LowercaseLambda; |
| 58 | +import org.openapitools.codegen.templating.mustache.TitlecaseLambda; |
| 59 | +import org.openapitools.codegen.templating.mustache.UppercaseLambda; |
47 | 60 | import org.openapitools.codegen.utils.ModelUtils; |
48 | 61 | import org.openapitools.codegen.utils.SemVer; |
49 | 62 | import org.slf4j.LoggerFactory; |
|
52 | 65 | import org.testng.annotations.Test; |
53 | 66 |
|
54 | 67 | import java.io.File; |
| 68 | +import java.io.IOException; |
55 | 69 | import java.nio.file.Files; |
56 | | -import java.util.*; |
57 | | -import java.util.concurrent.*; |
| 70 | +import java.util.ArrayList; |
| 71 | +import java.util.Arrays; |
| 72 | +import java.util.Collections; |
| 73 | +import java.util.HashMap; |
| 74 | +import java.util.HashSet; |
| 75 | +import java.util.LinkedHashMap; |
| 76 | +import java.util.LinkedHashSet; |
| 77 | +import java.util.List; |
| 78 | +import java.util.Locale; |
| 79 | +import java.util.Map; |
| 80 | +import java.util.Objects; |
| 81 | +import java.util.Optional; |
| 82 | +import java.util.Set; |
| 83 | +import java.util.TreeSet; |
| 84 | +import java.util.concurrent.ExecutionException; |
| 85 | +import java.util.concurrent.ExecutorService; |
| 86 | +import java.util.concurrent.Executors; |
| 87 | +import java.util.concurrent.Future; |
58 | 88 | import java.util.stream.Collectors; |
59 | 89 |
|
60 | 90 | import static org.assertj.core.api.Assertions.assertThat; |
61 | | -import static org.junit.jupiter.api.Assertions.*; |
| 91 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
| 92 | +import static org.junit.jupiter.api.Assertions.assertFalse; |
| 93 | +import static org.junit.jupiter.api.Assertions.assertNotNull; |
| 94 | +import static org.junit.jupiter.api.Assertions.assertNull; |
| 95 | +import static org.junit.jupiter.api.Assertions.assertTrue; |
| 96 | +import static org.junit.jupiter.api.Assertions.fail; |
62 | 97 |
|
63 | 98 | public class DefaultCodegenTest { |
64 | 99 |
|
@@ -5057,4 +5092,72 @@ private List<String> getNames(List<CodegenProperty> props) { |
5057 | 5092 | if (props == null) return null; |
5058 | 5093 | return props.stream().map(v -> v.name).collect(Collectors.toList()); |
5059 | 5094 | } |
| 5095 | + |
| 5096 | + @Test |
| 5097 | + public void testRequestBodyWith$RefToEnumSchema() { |
| 5098 | + // Given |
| 5099 | + OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_1/issue_21407.yaml"); |
| 5100 | + DefaultCodegen codegen = new DefaultCodegen(); |
| 5101 | + codegen.setOpenAPI(openAPI); |
| 5102 | + String path = "/v1/resource-class/send-with-$ref-to-enum-schema"; |
| 5103 | + |
| 5104 | + // When |
| 5105 | + CodegenOperation codegenOperation = codegen.fromOperation(path, "POST", openAPI.getPaths().get(path).getPost(), null); |
| 5106 | + |
| 5107 | + // Then |
| 5108 | + assertThat(codegenOperation.bodyParam).satisfies(bodyParam -> { |
| 5109 | + assertThat(bodyParam).isNotNull(); |
| 5110 | + assertThat(bodyParam.getDataType()).isEqualTo("Letter"); |
| 5111 | + }); |
| 5112 | + } |
| 5113 | + |
| 5114 | + @Test |
| 5115 | + public void testRequestBodyWithInlineEnumSchema() throws IOException { |
| 5116 | + // Given |
| 5117 | + OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_1/issue_21407.yaml"); |
| 5118 | + File outputDir = Files.createTempDirectory("test").toFile(); |
| 5119 | + |
| 5120 | + CodegenConfigurator configurator = new CodegenConfigurator() |
| 5121 | + .setGeneratorName("java") |
| 5122 | + .setInputSpec("src/test/resources/3_1/issue_21407.yaml") |
| 5123 | + .addInlineSchemaOption("RESOLVE_INLINE_ENUMS", "true") |
| 5124 | + .setOutputDir(outputDir.getAbsolutePath()); |
| 5125 | + |
| 5126 | + ClientOptInput clientOptInput = configurator.toClientOptInput(); |
| 5127 | + clientOptInput.openAPI(openAPI); |
| 5128 | + |
| 5129 | + DefaultGenerator generator = new DefaultGenerator(); |
| 5130 | + generator.opts(clientOptInput).generate(); |
| 5131 | + |
| 5132 | + String path = "/v1/resource-class/send-with-inline-enum-schema"; |
| 5133 | + |
| 5134 | + // When |
| 5135 | + CodegenOperation codegenOperation = generator.config.fromOperation(path, "POST", openAPI.getPaths().get(path).getPost(), null); |
| 5136 | + |
| 5137 | + // Then |
| 5138 | + assertThat(codegenOperation.bodyParam).satisfies(bodyParam -> { |
| 5139 | + assertThat(bodyParam).isNotNull(); |
| 5140 | + // expecting a type that is different from String |
| 5141 | + assertThat(bodyParam.getDataType()).isEqualTo("SendWithInlineEnumSchemaRequest"); |
| 5142 | + }); |
| 5143 | + } |
| 5144 | + |
| 5145 | + @Test |
| 5146 | + public void testRequestBodyWithStringType() { |
| 5147 | + // Given |
| 5148 | + OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_1/issue_21407.yaml"); |
| 5149 | + DefaultCodegen codegen = new DefaultCodegen(); |
| 5150 | + codegen.setOpenAPI(openAPI); |
| 5151 | + String path = "/v1/resource-class/send-with-string"; |
| 5152 | + |
| 5153 | + // When |
| 5154 | + CodegenOperation codegenOperation = codegen.fromOperation(path, "POST", openAPI.getPaths().get(path).getPost(), null); |
| 5155 | + |
| 5156 | + // Then |
| 5157 | + assertThat(codegenOperation.bodyParam).satisfies(bodyParam -> { |
| 5158 | + assertThat(bodyParam).isNotNull(); |
| 5159 | + assertThat(bodyParam.getDataType()).isEqualTo("String"); |
| 5160 | + }); |
| 5161 | + } |
| 5162 | + |
5060 | 5163 | } |
0 commit comments