Fix tests for parsing of additional type annotations & refactor test code (#18751)

* Fix tests for parsing of additional type annotations

These were comparing the same things with each other and this could
not fail. Now using (as probably intended by the author) the before
unused ArrayList for assertion of the expectation.

* Remove Exception from signature that is never thrown

* Simplify assertions using AssertJ

* Replace stub implementation with abstract Mockito mock

* Cache flat parsed openapi results for faster test execution

Simply caching any calls to TestUtils.parseFlattenSpec that occur
at least twice.

* Fix some "Raw use of parameterized class 'Schema'" warnings
This commit is contained in:
Philzen 2024-05-26 04:53:23 +02:00 committed by GitHub
parent 746961d07a
commit 22f18fad91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 185 additions and 325 deletions

View File

@ -960,7 +960,7 @@ public class ModelUtils {
* @param schema potentially containing a '$ref'
* @return schema without '$ref'
*/
public static Schema getReferencedSchema(OpenAPI openAPI, Schema schema) {
public static Schema<?> getReferencedSchema(OpenAPI openAPI, Schema schema) {
if (schema == null) {
return null;
}

View File

@ -17,11 +17,13 @@
package org.openapitools.codegen.java;
import org.mockito.Answers;
import org.mockito.Mockito;
import org.openapitools.codegen.CodegenParameter;
import org.openapitools.codegen.CodegenProperty;
import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.languages.AbstractJavaCodegen;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.Arrays;
@ -29,7 +31,17 @@ import java.util.Collections;
public class AbstractJavaCodegenExampleValuesTest {
private final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen();
private AbstractJavaCodegen codegen;
/**
* In TEST-NG, test class (and its fields) is only constructed once (vs. for every test in Jupiter),
* using @BeforeMethod to have a fresh codegen mock for each test
*/
@BeforeMethod void mockAbstractCodegen() {
codegen = Mockito.mock(
AbstractJavaCodegen.class, Mockito.withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS).useConstructor()
);
}
@Test
void referencedEnumTakeFirstName() {
@ -37,7 +49,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.allowableValues = Collections.singletonMap("values", Arrays.asList("first", "second"));
p.dataType = "WrappedEnum";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "WrappedEnum.fromValue(\"first\")");
}
@ -48,7 +60,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isEnum = true;
p.dataType = "String";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "\"first\"");
}
@ -61,7 +73,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "List<String>";
p.items = new CodegenProperty();
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "Arrays.asList()");
}
@ -71,7 +83,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isDate = true;
p.dataType = "LocalDate";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "LocalDate.now()");
}
@ -82,7 +94,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "LocalDate";
p.example = "2017-03-30";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "LocalDate.parse(\"2017-03-30\")");
}
@ -92,7 +104,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isDateTime = true;
p.dataType = "OffsetDateTime";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "OffsetDateTime.now()");
}
@ -103,7 +115,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "OffsetDateTime";
p.example = "2007-12-03T10:15:30+01:00";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "OffsetDateTime.parse(\"2007-12-03T10:15:30+01:00\")");
}
@ -113,7 +125,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isUuid = true;
p.dataType = "UUID";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "UUID.randomUUID()");
}
@ -124,46 +136,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "UUID";
p.example = "13b48713-b931-45ea-bd60-b07491245960";
fakeJavaCodegen.setParameterExampleValue(p);
codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "UUID.fromString(\"13b48713-b931-45ea-bd60-b07491245960\")");
}
private static class P_AbstractJavaCodegen extends AbstractJavaCodegen {
@Override
public CodegenType getTag() {
return null;
}
@Override
public String getName() {
return null;
}
@Override
public String getHelp() {
return null;
}
/**
* Gets artifact version.
* Only for testing purposes.
*
* @return version
*/
public String getArtifactVersion() {
return this.artifactVersion;
}
@Test
void customExampleForEnumValue() {
final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen();
final CodegenParameter p = new CodegenParameter();
p.allowableValues = Collections.singletonMap("values", Arrays.asList("first", "second"));
p.dataType = "WrappedEnum";
p.example = "CustomEnumValue";
fakeJavaCodegen.setParameterExampleValue(p);
// Custom example value should not be modified
Assert.assertEquals(p.example, "CustomEnumValue");
}
}
}

View File

@ -31,65 +31,86 @@ import java.time.ZonedDateTime;
import java.util.*;
import java.util.stream.Collectors;
import org.mockito.Answers;
import org.mockito.Mockito;
import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.AbstractJavaCodegen;
import org.openapitools.codegen.utils.ModelUtils;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.io.File;
import java.time.LocalDate;
import java.time.ZoneId;
import static org.assertj.core.api.Assertions.assertThat;
public class AbstractJavaCodegenTest {
private final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen();
static final Map<String, OpenAPI> FLATTENED_SPEC = Map.of(
"3_0/petstore", TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"),
"3_0/mapSchemas", TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"),
"3_0/spring/date-time-parameter-types-for-testing", TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml")
);
private AbstractJavaCodegen codegen;
/**
* In TEST-NG, test class (and its fields) is only constructed once (vs. for every test in Jupiter),
* using @BeforeMethod to have a fresh codegen mock for each test
*/
@BeforeMethod void mockAbstractCodegen() {
codegen = Mockito.mock(
AbstractJavaCodegen.class, Mockito.withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS).useConstructor()
);
}
@Test
public void toEnumVarNameShouldNotShortenUnderScore() throws Exception {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_", "String"), "UNDERSCORE");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("__", "String"), "__");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_,.", "String"), "__");
public void toEnumVarNameShouldNotShortenUnderScore() {
Assert.assertEquals(codegen.toEnumVarName("_", "String"), "UNDERSCORE");
Assert.assertEquals(codegen.toEnumVarName("__", "String"), "__");
Assert.assertEquals(codegen.toEnumVarName("_,.", "String"), "__");
}
/**
* As of Java 9, '_' is a keyword, and may not be used as an identifier.
*/
@Test
public void toEnumVarNameShouldNotResultInSingleUnderscore() throws Exception {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName(" ", "String"), "SPACE");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("==", "String"), "u");
public void toEnumVarNameShouldNotResultInSingleUnderscore() {
Assert.assertEquals(codegen.toEnumVarName(" ", "String"), "SPACE");
Assert.assertEquals(codegen.toEnumVarName("==", "String"), "u");
}
@Test
public void toEnumVarNameAddUnderscoresIfValueIsPascalCase() {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("OnlyCamelCase", "String"), "ONLY_CAMEL_CASE");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("WithNumber1", "String"), "WITH_NUMBER1");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_LeadingUnderscore", "String"), "_LEADING_UNDERSCORE");
Assert.assertEquals(codegen.toEnumVarName("OnlyCamelCase", "String"), "ONLY_CAMEL_CASE");
Assert.assertEquals(codegen.toEnumVarName("WithNumber1", "String"), "WITH_NUMBER1");
Assert.assertEquals(codegen.toEnumVarName("_LeadingUnderscore", "String"), "_LEADING_UNDERSCORE");
}
@Test
public void toVarNameShouldAvoidOverloadingGetClassMethod() throws Exception {
Assert.assertEquals(fakeJavaCodegen.toVarName("class"), "propertyClass");
Assert.assertEquals(fakeJavaCodegen.toVarName("_class"), "propertyClass");
Assert.assertEquals(fakeJavaCodegen.toVarName("__class"), "propertyClass");
public void toVarNameShouldAvoidOverloadingGetClassMethod() {
Assert.assertEquals(codegen.toVarName("class"), "propertyClass");
Assert.assertEquals(codegen.toVarName("_class"), "propertyClass");
Assert.assertEquals(codegen.toVarName("__class"), "propertyClass");
}
@Test
public void toModelNameShouldNotUseProvidedMapping() throws Exception {
fakeJavaCodegen.importMapping().put("json_myclass", "com.test.MyClass");
Assert.assertEquals(fakeJavaCodegen.toModelName("json_myclass"), "JsonMyclass");
public void toModelNameShouldNotUseProvidedMapping() {
codegen.importMapping().put("json_myclass", "com.test.MyClass");
Assert.assertEquals(codegen.toModelName("json_myclass"), "JsonMyclass");
}
@Test
public void toModelNameUsesPascalCase() throws Exception {
Assert.assertEquals(fakeJavaCodegen.toModelName("json_anotherclass"), "JsonAnotherclass");
public void toModelNameUsesPascalCase() {
Assert.assertEquals(codegen.toModelName("json_anotherclass"), "JsonAnotherclass");
}
@Test
public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() throws Exception {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() {
final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/petstore");
codegen.preprocessOpenAPI(openAPI);
Assert.assertEquals(codegen.getArtifactVersion(), openAPI.getInfo().getVersion());
@ -100,9 +121,8 @@ public class AbstractJavaCodegenTest {
}
@Test
public void testPreprocessOpenAPINumVersion() throws Exception {
public void testPreprocessOpenAPINumVersion() {
final OpenAPI openAPIOtherNumVersion = TestUtils.parseFlattenSpec("src/test/resources/2_0/duplicateOperationIds.yaml");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.preprocessOpenAPI(openAPIOtherNumVersion);
@ -111,52 +131,54 @@ public class AbstractJavaCodegenTest {
@Test
public void convertVarName() {
Assert.assertEquals(fakeJavaCodegen.toVarName("name"), "name");
Assert.assertEquals(fakeJavaCodegen.toVarName("$name"), "$name");
Assert.assertEquals(fakeJavaCodegen.toVarName("nam$$e"), "nam$$e");
Assert.assertEquals(fakeJavaCodegen.toVarName("user-name"), "userName");
Assert.assertEquals(fakeJavaCodegen.toVarName("user_name"), "userName");
Assert.assertEquals(fakeJavaCodegen.toVarName("user|name"), "userName");
Assert.assertEquals(fakeJavaCodegen.toVarName("uSername"), "uSername");
Assert.assertEquals(fakeJavaCodegen.toVarName("USERname"), "usERname");
Assert.assertEquals(fakeJavaCodegen.toVarName("USERNAME"), "USERNAME");
Assert.assertEquals(fakeJavaCodegen.toVarName("USER123NAME"), "USER123NAME");
Assert.assertEquals(fakeJavaCodegen.toVarName("1"), "_1");
Assert.assertEquals(fakeJavaCodegen.toVarName("1a"), "_1a");
Assert.assertEquals(fakeJavaCodegen.toVarName("1A"), "_1A");
Assert.assertEquals(fakeJavaCodegen.toVarName("1AAAA"), "_1AAAA");
Assert.assertEquals(fakeJavaCodegen.toVarName("1AAaa"), "_1aAaa");
Assert.assertEquals(codegen.toVarName("name"), "name");
Assert.assertEquals(codegen.toVarName("$name"), "$name");
Assert.assertEquals(codegen.toVarName("nam$$e"), "nam$$e");
Assert.assertEquals(codegen.toVarName("user-name"), "userName");
Assert.assertEquals(codegen.toVarName("user_name"), "userName");
Assert.assertEquals(codegen.toVarName("user|name"), "userName");
Assert.assertEquals(codegen.toVarName("uSername"), "uSername");
Assert.assertEquals(codegen.toVarName("USERname"), "usERname");
Assert.assertEquals(codegen.toVarName("USERNAME"), "USERNAME");
Assert.assertEquals(codegen.toVarName("USER123NAME"), "USER123NAME");
Assert.assertEquals(codegen.toVarName("1"), "_1");
Assert.assertEquals(codegen.toVarName("1a"), "_1a");
Assert.assertEquals(codegen.toVarName("1A"), "_1A");
Assert.assertEquals(codegen.toVarName("1AAAA"), "_1AAAA");
Assert.assertEquals(codegen.toVarName("1AAaa"), "_1aAaa");
}
AbstractJavaCodegen withCaml = new P_AbstractJavaCodegen();
withCaml.setCamelCaseDollarSign(true);
Assert.assertEquals(withCaml.toVarName("$name"), "$Name");
Assert.assertEquals(withCaml.toVarName("1AAaa"), "_1AAaa");
@Test
public void convertVarNameWithCaml() {
codegen.setCamelCaseDollarSign(true);
Assert.assertEquals(codegen.toVarName("$name"), "$Name");
Assert.assertEquals(codegen.toVarName("1AAaa"), "_1AAaa");
}
@Test
public void convertModelName() {
Assert.assertEquals(fakeJavaCodegen.toModelName("name"), "Name");
Assert.assertEquals(fakeJavaCodegen.toModelName("$name"), "Name");
Assert.assertEquals(fakeJavaCodegen.toModelName("nam#e"), "Name");
Assert.assertEquals(fakeJavaCodegen.toModelName("$another-fake?"), "AnotherFake");
Assert.assertEquals(fakeJavaCodegen.toModelName("1a"), "Model1a");
Assert.assertEquals(fakeJavaCodegen.toModelName("1A"), "Model1A");
Assert.assertEquals(fakeJavaCodegen.toModelName("AAAb"), "AAAb");
Assert.assertEquals(fakeJavaCodegen.toModelName("aBB"), "ABB");
Assert.assertEquals(fakeJavaCodegen.toModelName("AaBBa"), "AaBBa");
Assert.assertEquals(fakeJavaCodegen.toModelName("A_B"), "AB");
Assert.assertEquals(fakeJavaCodegen.toModelName("A-B"), "AB");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_Bb"), "AaBb");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-Bb"), "AaBb");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_bb"), "AaBb");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-bb"), "AaBb");
Assert.assertEquals(codegen.toModelName("name"), "Name");
Assert.assertEquals(codegen.toModelName("$name"), "Name");
Assert.assertEquals(codegen.toModelName("nam#e"), "Name");
Assert.assertEquals(codegen.toModelName("$another-fake?"), "AnotherFake");
Assert.assertEquals(codegen.toModelName("1a"), "Model1a");
Assert.assertEquals(codegen.toModelName("1A"), "Model1A");
Assert.assertEquals(codegen.toModelName("AAAb"), "AAAb");
Assert.assertEquals(codegen.toModelName("aBB"), "ABB");
Assert.assertEquals(codegen.toModelName("AaBBa"), "AaBBa");
Assert.assertEquals(codegen.toModelName("A_B"), "AB");
Assert.assertEquals(codegen.toModelName("A-B"), "AB");
Assert.assertEquals(codegen.toModelName("Aa_Bb"), "AaBb");
Assert.assertEquals(codegen.toModelName("Aa-Bb"), "AaBb");
Assert.assertEquals(codegen.toModelName("Aa_bb"), "AaBb");
Assert.assertEquals(codegen.toModelName("Aa-bb"), "AaBb");
}
@Test
public void testInitialConfigValues() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
@ -177,7 +199,6 @@ public class AbstractJavaCodegenTest {
public void testSettersForConfigValues() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setHideGenerationTimestamp(true);
codegen.setModelPackage("xyz.yyyyy.zzzzzzz.model");
@ -204,18 +225,15 @@ public class AbstractJavaCodegenTest {
@Test
public void testAdditionalPropertiesPutForConfigValues() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, false);
codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.model.oooooo");
codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.api.oooooo");
codegen.additionalProperties().put(CodegenConstants.INVOKER_PACKAGE, "xyz.yyyyy.invoker.oooooo");
codegen.additionalProperties().put(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX, "getBoolean");
codegen.additionalProperties().put(CodegenConstants.ARTIFACT_VERSION, "0.8.0-SNAPSHOT");
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
codegen.processOpts();
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE);
Assert.assertFalse(codegen.isHideGenerationTimestamp());
@ -231,119 +249,62 @@ public class AbstractJavaCodegenTest {
}
@Test
public void testAdditionalModelTypeAnnotationsSemiColon() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
public void testAdditionalModelTypeAnnotationsSemiColon() {
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar");
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>();
additionalModelTypeAnnotations.add("@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
assertThat(codegen.getAdditionalModelTypeAnnotations())
.containsExactlyInAnyOrder("@Bar", "@Foo");
}
@Test
public void testAdditionalModelTypeAnnotationsNewLineLinux() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
public void testAdditionalModelTypeAnnotationsNewLineLinux() {
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\n@Bar");
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>();
additionalModelTypeAnnotations.add("@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
assertThat(codegen.getAdditionalModelTypeAnnotations())
.containsExactlyInAnyOrder("@Bar", "@Foo");
}
@Test
public void testAdditionalModelTypeAnnotationsNewLineWindows() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
public void testAdditionalModelTypeAnnotationsNewLineWindows() {
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\r\n@Bar");
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>();
additionalModelTypeAnnotations.add("@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
assertThat(codegen.getAdditionalModelTypeAnnotations())
.containsExactlyInAnyOrder("@Bar", "@Foo");
}
@Test
public void testAdditionalModelTypeAnnotationsMixed() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
public void testAdditionalModelTypeAnnotationsMixed() {
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, " \t @Foo;\r\n@Bar ;\n @Foobar ");
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>();
additionalModelTypeAnnotations.add("@Foo");
additionalModelTypeAnnotations.add("@Bar");
additionalModelTypeAnnotations.add("@Foobar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
assertThat(codegen.getAdditionalModelTypeAnnotations())
.containsExactlyInAnyOrder("@Bar", "@Foo", "@Foobar");
}
@Test
public void testAdditionalModelTypeAnnotationsNoDuplicate() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
public void testAdditionalModelTypeAnnotationsNoDuplicate() {
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar;@Foo");
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>();
additionalModelTypeAnnotations.add("@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
assertThat(codegen.getAdditionalModelTypeAnnotations())
.containsExactlyInAnyOrder("@Bar", "@Foo", "@Foo");
}
@Test
public void toEnumValue() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
Assert.assertEquals(codegen.toEnumValue("1", "Integer"), "1");
Assert.assertEquals(codegen.toEnumValue("42", "Double"), "42");
Assert.assertEquals(codegen.toEnumValue("1337", "Long"), "1337l");
@ -353,7 +314,6 @@ public class AbstractJavaCodegenTest {
@Test
public void apiFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools");
codegen.setSourceFolder("source.folder");
codegen.setApiPackage("org.openapitools.codegen.api");
@ -362,7 +322,6 @@ public class AbstractJavaCodegenTest {
@Test
public void apiTestFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools");
codegen.setTestFolder("test.folder");
codegen.setApiPackage("org.openapitools.codegen.api");
@ -371,7 +330,6 @@ public class AbstractJavaCodegenTest {
@Test
public void modelTestFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools");
codegen.setTestFolder("test.folder");
codegen.setModelPackage("org.openapitools.codegen.model");
@ -380,7 +338,6 @@ public class AbstractJavaCodegenTest {
@Test
public void apiTestFileFolderDirect() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputTestFolder("/User/open.api.tools");
codegen.setTestFolder("test.folder");
codegen.setApiPackage("org.openapitools.codegen.api");
@ -389,7 +346,6 @@ public class AbstractJavaCodegenTest {
@Test
public void modelTestFileFolderDirect() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputTestFolder("/User/open.api.tools");
codegen.setTestFolder("test.folder");
codegen.setModelPackage("org.openapitools.codegen.model");
@ -398,7 +354,6 @@ public class AbstractJavaCodegenTest {
@Test
public void modelFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools");
codegen.setSourceFolder("source.folder");
codegen.setModelPackage("org.openapitools.codegen.model");
@ -407,69 +362,57 @@ public class AbstractJavaCodegenTest {
@Test
public void apiDocFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools");
Assert.assertEquals(codegen.apiDocFileFolder(), "/User/open.api.tools/docs/".replace('/', File.separatorChar));
}
@Test(description = "tests if API version specification is used if no version is provided in additional properties")
public void openApiVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts();
codegen.preprocessOpenAPI(api);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7");
}
@Test(description = "tests if API version specification is used if no version is provided in additional properties with snapshot version")
public void openApiSnapShotVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("snapshotVersion", "true");
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts();
codegen.preprocessOpenAPI(api);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7-SNAPSHOT");
}
@Test(description = "tests if artifactVersion additional property is used")
public void additionalPropertyArtifactVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("artifactVersion", "1.1.1");
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts();
codegen.preprocessOpenAPI(api);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1");
}
@Test(description = "tests if artifactVersion additional property is used with snapshot parameter")
public void additionalPropertyArtifactSnapShotVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("artifactVersion", "1.1.1");
codegen.additionalProperties().put("snapshotVersion", "true");
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts();
codegen.preprocessOpenAPI(api);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1-SNAPSHOT");
}
@Test(description = "tests if default version is used when neither OpenAPI version nor artifactVersion additional property has been provided")
public void defaultVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setArtifactVersion(null);
OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null);
codegen.processOpts();
codegen.preprocessOpenAPI(api);
@ -478,12 +421,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if default version with snapshot is used when neither OpenAPI version nor artifactVersion additional property has been provided")
public void snapshotVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("snapshotVersion", "true");
OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null);
codegen.processOpts();
codegen.preprocessOpenAPI(api);
@ -492,12 +434,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if default version with snapshot is used when OpenAPI version has been provided")
public void snapshotVersionOpenAPITest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true");
OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion("2.0");
codegen.processOpts();
codegen.preprocessOpenAPI(api);
@ -506,12 +447,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if setting an artifact version programmatically persists to additional properties, when openapi version is null")
public void allowsProgrammaticallySettingArtifactVersionWithNullOpenApiVersion() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final String version = "9.8.7-rc1";
codegen.setArtifactVersion(version);
OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null);
codegen.processOpts();
codegen.preprocessOpenAPI(api);
@ -521,12 +461,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if setting an artifact version programmatically persists to additional properties, even when openapi version is specified")
public void allowsProgrammaticallySettingArtifactVersionWithSpecifiedOpenApiVersion() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final String version = "9.8.7-rc1";
codegen.setArtifactVersion(version);
OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion("1.2.3-SNAPSHOT");
codegen.processOpts();
codegen.preprocessOpenAPI(api);
@ -536,9 +475,7 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if a null in addition properties artifactVersion results in default version")
public void usesDefaultVersionWhenAdditionalPropertiesVersionIsNull() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final String version = "1.0.0";
OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null);
codegen.setArtifactVersion(null);
@ -554,21 +491,18 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if default version with snapshot is used when setArtifactVersion is used")
public void snapshotVersionAlreadySnapshotTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true");
OpenAPI api = TestUtils.createOpenAPI();
codegen.setArtifactVersion("4.1.2-SNAPSHOT");
codegen.processOpts();
codegen.preprocessOpenAPI(api);
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "4.1.2-SNAPSHOT");
}
@Test
public void toDefaultValueDateTimeLegacyTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setDateLibrary("legacy");
String defaultValue;
@ -601,11 +535,9 @@ public class AbstractJavaCodegenTest {
@Test
public void toDefaultValueTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setDateLibrary("java8");
Schema<?> schema = createObjectSchemaWithMinItems();
Schema<?> schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1);
String defaultValue = codegen.toDefaultValue(schema);
Assert.assertEquals(defaultValue, "null");
@ -614,7 +546,7 @@ public class AbstractJavaCodegenTest {
codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema)));
// Create an array schema with item type set to the array alias
schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray"));
schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema);
@ -625,7 +557,7 @@ public class AbstractJavaCodegenTest {
Assert.assertEquals(defaultValue, "new ArrayList<>()");
// Create a map schema with additionalProperties type set to array alias
schema = new MapSchema().additionalProperties(new Schema().$ref("#/components/schemas/NestedArray"));
schema = new MapSchema().additionalProperties(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema);
@ -641,14 +573,14 @@ public class AbstractJavaCodegenTest {
Date date = Date.from(defaultLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
dateSchema.setDefault(date);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateSchema);
Assert.assertEquals(defaultValue, "LocalDate.parse(\"" + defaultLocalDate.toString() + "\")");
Assert.assertEquals(defaultValue, "LocalDate.parse(\"" + defaultLocalDate + "\")");
DateTimeSchema dateTimeSchema = new DateTimeSchema();
OffsetDateTime defaultDateTime = OffsetDateTime.parse("1984-12-19T03:39:57-08:00");
ZonedDateTime expectedDateTime = defaultDateTime.atZoneSameInstant(ZoneId.systemDefault());
dateTimeSchema.setDefault(defaultDateTime);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateTimeSchema);
Assert.assertTrue(defaultValue.startsWith("OffsetDateTime.parse(\"" + expectedDateTime.toString()));
Assert.assertTrue(defaultValue.startsWith("OffsetDateTime.parse(\"" + expectedDateTime));
// Test default value for number without format
NumberSchema numberSchema = new NumberSchema();
@ -665,15 +597,14 @@ public class AbstractJavaCodegenTest {
@Test
public void dateDefaultValueIsIsoDate() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing");
codegen.setOpenAPI(openAPI);
Set<String> imports = new HashSet<>();
CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(2), imports);
Assert.assertEquals(parameter.dataType, "Date");
Assert.assertEquals(parameter.isDate, true);
Assert.assertTrue(parameter.isDate);
Assert.assertEquals(parameter.defaultValue, "1974-01-01");
Assert.assertEquals(imports.size(), 1);
Assert.assertEquals(imports.iterator().next(), "Date");
@ -684,15 +615,14 @@ public class AbstractJavaCodegenTest {
@Test
public void dateDefaultValueIsIsoDateTime() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing");
codegen.setOpenAPI(openAPI);
Set<String> imports = new HashSet<>();
CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(1), imports);
Assert.assertEquals(parameter.dataType, "Date");
Assert.assertEquals(parameter.isDateTime, true);
Assert.assertTrue(parameter.isDateTime);
Assert.assertEquals(parameter.defaultValue, "1973-12-19T03:39:57-08:00");
Assert.assertEquals(imports.size(), 1);
Assert.assertEquals(imports.iterator().next(), "Date");
@ -703,19 +633,19 @@ public class AbstractJavaCodegenTest {
@Test
public void getTypeDeclarationGivenSchemaMappingTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.schemaMapping().put("MyStringType", "com.example.foo");
codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("MyStringType", new StringSchema())));
Schema<?> schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/MyStringType"));
Schema<?> schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/MyStringType"));
String defaultValue = codegen.getTypeDeclaration(schema);
Assert.assertEquals(defaultValue, "List<com.example.foo>");
}
@Test
public void getTypeDeclarationTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
Schema<?> schema = createObjectSchemaWithMinItems();
Schema<?> schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1);
String defaultValue = codegen.getTypeDeclaration(schema);
Assert.assertEquals(defaultValue, "Object");
@ -724,7 +654,7 @@ public class AbstractJavaCodegenTest {
codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema)));
// Create an array schema with item type set to the array alias
schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray"));
schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.getTypeDeclaration(schema);
@ -735,7 +665,7 @@ public class AbstractJavaCodegenTest {
Assert.assertEquals(defaultValue, "List<NestedArray>");
// Create an array schema with item type set to the array alias
schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray"));
schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray"));
schema.setUniqueItems(true);
ModelUtils.setGenerateAliasAsModel(false);
@ -747,7 +677,7 @@ public class AbstractJavaCodegenTest {
Assert.assertEquals(defaultValue, "Set<NestedArray>");
// Create a map schema with additionalProperties type set to array alias
schema = new MapSchema().additionalProperties(new Schema().$ref("#/components/schemas/NestedArray"));
schema = new MapSchema().additionalProperties(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.getTypeDeclaration(schema);
@ -760,66 +690,63 @@ public class AbstractJavaCodegenTest {
@Test
public void processOptsBooleanTrueFromString() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true");
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
}
@Test
public void processOptsBooleanTrueFromBoolean() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, true);
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
}
@Test
public void processOptsBooleanFalseFromString() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "false");
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
}
@Test
public void processOptsBooleanFalseFromBoolean() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, false);
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
}
@Test
public void processOptsBooleanFalseFromGarbage() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "blibb");
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
}
@Test
public void processOptsBooleanFalseFromNumeric() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, 42L);
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
}
@Test
public void nullDefaultValueForModelWithDynamicProperties() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml");
final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas");
codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true);
codegen.setOpenAPI(openAPI);
Schema schema = openAPI.getComponents().getSchemas().get("ModelWithAdditionalProperties");
Schema<?> schema = openAPI.getComponents().getSchemas().get("ModelWithAdditionalProperties");
CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema);
Assert.assertEquals(cm.vars.size(), 1, "Expected single declared var");
Assert.assertEquals(cm.vars.get(0).name, "id");
@ -831,12 +758,11 @@ public class AbstractJavaCodegenTest {
@Test
public void maplikeDefaultValueForModelWithStringToStringMapping() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml");
final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas");
codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true);
codegen.setOpenAPI(openAPI);
Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToStringMapping");
Schema<?> schema = openAPI.getComponents().getSchemas().get("ModelWithStringToStringMapping");
CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema);
Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars");
Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec");
@ -847,12 +773,11 @@ public class AbstractJavaCodegenTest {
@Test
public void maplikeDefaultValueForModelWithStringToModelMapping() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml");
final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas");
codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true);
codegen.setOpenAPI(openAPI);
Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToModelMapping");
Schema<?> schema = openAPI.getComponents().getSchemas().get("ModelWithStringToModelMapping");
CodegenModel cm = codegen.fromModel("ModelWithStringToModelMapping", schema);
Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars");
Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec");
@ -865,20 +790,19 @@ public class AbstractJavaCodegenTest {
public void srcMainFolderShouldNotBeOperatingSystemSpecificPaths() {
// it's not responsibility of the generator to fix OS-specific paths. This is left to template manager.
// This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files)
Assert.assertEquals(fakeJavaCodegen.getSourceFolder(), "src/main/java");
Assert.assertEquals(codegen.getSourceFolder(), "src/main/java");
}
@Test
public void srcTestFolderShouldNotBeOperatingSystemSpecificPaths() {
// it's not responsibility of the generator to fix OS-specific paths. This is left to template manager.
// This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files)
Assert.assertEquals(fakeJavaCodegen.getTestFolder(), "src/test/java");
Assert.assertEquals(codegen.getTestFolder(), "src/test/java");
}
@Test
public void testOneOfModelImports() throws Exception {
public void testOneOfModelImports() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/oneOf_nonPrimitive.yaml");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOpenAPI(openAPI);
codegen.preprocessOpenAPI(openAPI);
@ -891,16 +815,15 @@ public class AbstractJavaCodegenTest {
}
@Test
public void arrayParameterDefaultValueDoesNotNeedBraces() throws Exception {
public void arrayParameterDefaultValueDoesNotNeedBraces() {
ParseOptions parseOptions = new ParseOptions();
parseOptions.setResolve(true);
final OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/3_0/issue_16223.yaml", null, parseOptions)
.getOpenAPI();
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOpenAPI(openAPI);
Map<String, Schema> schemas = openAPI.getPaths().get("/test").getGet().getParameters().stream()
Map<String, Schema<?>> schemas = openAPI.getPaths().get("/test").getGet().getParameters().stream()
.collect(Collectors.toMap(
Parameter::getName,
p -> ModelUtils.getReferencedSchema(openAPI, p.getSchema())));
@ -912,7 +835,6 @@ public class AbstractJavaCodegenTest {
@Test
public void ignoreBeanValidationAnnotationsTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("useBeanValidation", true);
Schema<?> schema = new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36);
@ -938,7 +860,6 @@ public class AbstractJavaCodegenTest {
@Test
public void ignoreBeanValidationAnnotationsContainerTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("useBeanValidation", true);
Schema<?> schema = new ArraySchema().items(new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36));
@ -964,7 +885,6 @@ public class AbstractJavaCodegenTest {
@Test
public void AnnotationsContainerTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("useBeanValidation", true);
// 1. string type
@ -1048,37 +968,4 @@ public class AbstractJavaCodegenTest {
defaultValue = codegen.getTypeDeclaration(schema);
Assert.assertEquals(defaultValue, "List<@Max(10)Integer>");
}
private static Schema<?> createObjectSchemaWithMinItems() {
return new ObjectSchema()
.addProperties("id", new IntegerSchema().format("int32"))
.minItems(1);
}
private static class P_AbstractJavaCodegen extends AbstractJavaCodegen {
@Override
public CodegenType getTag() {
return null;
}
@Override
public String getName() {
return null;
}
@Override
public String getHelp() {
return null;
}
/**
* Gets artifact version.
* Only for testing purposes.
*
* @return version
*/
public String getArtifactVersion() {
return this.artifactVersion;
}
}
}