Skip to content

Commit 58ae504

Browse files
committed
add tests
1 parent 6dbaaaa commit 58ae504

1 file changed

Lines changed: 320 additions & 0 deletions

File tree

modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java

Lines changed: 320 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,6 +1027,326 @@ public void generateSerializableModelWithXimplements() throws Exception {
10271027
);
10281028
}
10291029

1030+
@Test
1031+
public void generateApiWithHttpRequestContextReactiveAnnotationSwagger2() throws Exception {
1032+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1033+
output.deleteOnExit();
1034+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1035+
1036+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1037+
codegen.setOutputDir(output.getAbsolutePath());
1038+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, true);
1039+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, true);
1040+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1041+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "swagger2");
1042+
1043+
ClientOptInput input = new ClientOptInput()
1044+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1045+
.config(codegen);
1046+
DefaultGenerator generator = new DefaultGenerator();
1047+
1048+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1049+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1050+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1051+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1052+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1053+
1054+
generator.opts(input).generate();
1055+
1056+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1057+
assertFileContains(
1058+
petControllerPath,
1059+
"deletePet(@Parameter(description = \"Pet id to delete\", required = true) @PathVariable(\"petId\") petId: kotlin.Long,@Parameter(description = \"\", `in` = ParameterIn.HEADER) @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?, @Parameter(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>",
1060+
"getPetById(@Parameter(description = \"ID of pet to return\", required = true) @PathVariable(\"petId\") petId: kotlin.Long, @Parameter(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Pet>"
1061+
);
1062+
1063+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1064+
assertFileContains(
1065+
userControllerPath,
1066+
"logoutUser(@Parameter(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>"
1067+
);
1068+
}
1069+
1070+
@Test
1071+
public void generateApiWithHttpRequestContextReactiveAnnotationSwagger1() throws Exception {
1072+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1073+
output.deleteOnExit();
1074+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1075+
1076+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1077+
codegen.setOutputDir(output.getAbsolutePath());
1078+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, true);
1079+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, true);
1080+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1081+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "swagger1");
1082+
1083+
ClientOptInput input = new ClientOptInput()
1084+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1085+
.config(codegen);
1086+
DefaultGenerator generator = new DefaultGenerator();
1087+
1088+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1089+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1090+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1091+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1092+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1093+
1094+
generator.opts(input).generate();
1095+
1096+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1097+
assertFileContains(
1098+
petControllerPath,
1099+
"deletePet(@ApiParam(value = \"Pet id to delete\", required = true) @PathVariable(\"petId\") petId: kotlin.Long,@ApiParam(value = \"\") @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?, @ApiParam(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>",
1100+
"getPetById(@ApiParam(value = \"ID of pet to return\", required = true) @PathVariable(\"petId\") petId: kotlin.Long, @ApiParam(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Pet>"
1101+
);
1102+
1103+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1104+
assertFileContains(
1105+
userControllerPath,
1106+
"logoutUser(@ApiParam(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>"
1107+
);
1108+
}
1109+
1110+
@Test
1111+
public void generateApiWithHttpRequestContextReactiveAnnotationNone() throws Exception {
1112+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1113+
output.deleteOnExit();
1114+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1115+
1116+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1117+
codegen.setOutputDir(output.getAbsolutePath());
1118+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, true);
1119+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, true);
1120+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1121+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "none");
1122+
1123+
ClientOptInput input = new ClientOptInput()
1124+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1125+
.config(codegen);
1126+
DefaultGenerator generator = new DefaultGenerator();
1127+
1128+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1129+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1130+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1131+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1132+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1133+
1134+
generator.opts(input).generate();
1135+
1136+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1137+
assertFileContains(
1138+
petControllerPath,
1139+
"deletePet( @PathVariable(\"petId\") petId: kotlin.Long, @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?, exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>",
1140+
"getPetById( @PathVariable(\"petId\") petId: kotlin.Long, exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Pet>"
1141+
);
1142+
1143+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1144+
assertFileContains(
1145+
userControllerPath,
1146+
"logoutUser(exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>"
1147+
);
1148+
}
1149+
1150+
@Test
1151+
public void generateApiWithoutHttpRequestContextReactiveAnnotationNone() throws Exception {
1152+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1153+
output.deleteOnExit();
1154+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1155+
1156+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1157+
codegen.setOutputDir(output.getAbsolutePath());
1158+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, false);
1159+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, true);
1160+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1161+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "none");
1162+
1163+
ClientOptInput input = new ClientOptInput()
1164+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1165+
.config(codegen);
1166+
DefaultGenerator generator = new DefaultGenerator();
1167+
1168+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1169+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1170+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1171+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1172+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1173+
1174+
generator.opts(input).generate();
1175+
1176+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1177+
assertFileContains(
1178+
petControllerPath,
1179+
"deletePet( @PathVariable(\"petId\") petId: kotlin.Long, @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?): ResponseEntity<Unit>",
1180+
"getPetById( @PathVariable(\"petId\") petId: kotlin.Long): ResponseEntity<Pet>"
1181+
);
1182+
1183+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1184+
assertFileContains(
1185+
userControllerPath,
1186+
"logoutUser(): ResponseEntity<Unit>"
1187+
);
1188+
}
1189+
1190+
@Test
1191+
public void generateApiWithHttpRequestContextNonReactiveAnnotationSwagger2() throws Exception {
1192+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1193+
output.deleteOnExit();
1194+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1195+
1196+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1197+
codegen.setOutputDir(output.getAbsolutePath());
1198+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, true);
1199+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, false);
1200+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1201+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "swagger2");
1202+
1203+
ClientOptInput input = new ClientOptInput()
1204+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1205+
.config(codegen);
1206+
DefaultGenerator generator = new DefaultGenerator();
1207+
1208+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1209+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1210+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1211+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1212+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1213+
1214+
generator.opts(input).generate();
1215+
1216+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1217+
assertFileContains(
1218+
petControllerPath,
1219+
"deletePet(@Parameter(description = \"Pet id to delete\", required = true) @PathVariable(\"petId\") petId: kotlin.Long,@Parameter(description = \"\", `in` = ParameterIn.HEADER) @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?, @Parameter(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>",
1220+
"getPetById(@Parameter(description = \"ID of pet to return\", required = true) @PathVariable(\"petId\") petId: kotlin.Long, @Parameter(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Pet>"
1221+
);
1222+
1223+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1224+
assertFileContains(
1225+
userControllerPath,
1226+
"logoutUser(@Parameter(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>"
1227+
);
1228+
}
1229+
1230+
@Test
1231+
public void generateApiWithHttpRequestContextNonReactiveAnnotationSwagger1() throws Exception {
1232+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1233+
output.deleteOnExit();
1234+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1235+
1236+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1237+
codegen.setOutputDir(output.getAbsolutePath());
1238+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, true);
1239+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, false);
1240+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1241+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "swagger1");
1242+
1243+
ClientOptInput input = new ClientOptInput()
1244+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1245+
.config(codegen);
1246+
DefaultGenerator generator = new DefaultGenerator();
1247+
1248+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1249+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1250+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1251+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1252+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1253+
1254+
generator.opts(input).generate();
1255+
1256+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1257+
assertFileContains(
1258+
petControllerPath,
1259+
"deletePet(@ApiParam(value = \"Pet id to delete\", required = true) @PathVariable(\"petId\") petId: kotlin.Long,@ApiParam(value = \"\") @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?, @ApiParam(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>",
1260+
"getPetById(@ApiParam(value = \"ID of pet to return\", required = true) @PathVariable(\"petId\") petId: kotlin.Long, @ApiParam(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Pet>"
1261+
);
1262+
1263+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1264+
assertFileContains(
1265+
userControllerPath,
1266+
"logoutUser(@ApiParam(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>"
1267+
);
1268+
}
1269+
1270+
@Test
1271+
public void generateApiWithHttpRequestContextNonReactiveAnnotationNone() throws Exception {
1272+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1273+
output.deleteOnExit();
1274+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1275+
1276+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1277+
codegen.setOutputDir(output.getAbsolutePath());
1278+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, true);
1279+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, false);
1280+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1281+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "none");
1282+
1283+
ClientOptInput input = new ClientOptInput()
1284+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1285+
.config(codegen);
1286+
DefaultGenerator generator = new DefaultGenerator();
1287+
1288+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1289+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1290+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1291+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1292+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1293+
1294+
generator.opts(input).generate();
1295+
1296+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1297+
assertFileContains(
1298+
petControllerPath,
1299+
"deletePet( @PathVariable(\"petId\") petId: kotlin.Long, @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?, request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>",
1300+
"getPetById( @PathVariable(\"petId\") petId: kotlin.Long, request: javax.servlet.http.HttpServletRequest): ResponseEntity<Pet>"
1301+
);
1302+
1303+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1304+
assertFileContains(
1305+
userControllerPath,
1306+
"logoutUser(request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>"
1307+
);
1308+
}
1309+
1310+
@Test
1311+
public void generateApiWithoutHttpRequestContextNonReactiveAnnotationNone() throws Exception {
1312+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1313+
output.deleteOnExit();
1314+
String outputPath = output.getAbsolutePath().replace('\\', '/');
1315+
1316+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
1317+
codegen.setOutputDir(output.getAbsolutePath());
1318+
codegen.additionalProperties().put(KotlinSpringServerCodegen.INCLUDE_HTTP_REQUEST_CONTEXT, false);
1319+
codegen.additionalProperties().put(KotlinSpringServerCodegen.REACTIVE, false);
1320+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, "none");
1321+
codegen.additionalProperties().put(KotlinSpringServerCodegen.ANNOTATION_LIBRARY, "none");
1322+
1323+
ClientOptInput input = new ClientOptInput()
1324+
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/kotlin/petstore.yaml"))
1325+
.config(codegen);
1326+
DefaultGenerator generator = new DefaultGenerator();
1327+
1328+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
1329+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
1330+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
1331+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
1332+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
1333+
1334+
generator.opts(input).generate();
1335+
1336+
Path petControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt");
1337+
assertFileContains(
1338+
petControllerPath,
1339+
"deletePet( @PathVariable(\"petId\") petId: kotlin.Long, @RequestHeader(value = \"api_key\", required = false) apiKey: kotlin.String?): ResponseEntity<Unit>",
1340+
"getPetById( @PathVariable(\"petId\") petId: kotlin.Long): ResponseEntity<Pet>"
1341+
);
1342+
1343+
Path userControllerPath = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt");
1344+
assertFileContains(
1345+
userControllerPath,
1346+
"logoutUser(): ResponseEntity<Unit>"
1347+
);
1348+
}
1349+
10301350
@Test
10311351
public void generateNonSerializableModelWithXimplements() throws Exception {
10321352
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();

0 commit comments

Comments
 (0)