ComposedSchemaTest.java
package io.swagger.v3.core.resolving;
import io.swagger.v3.core.converter.ModelConverters;
import io.swagger.v3.core.resolving.resources.TestObject2616;
import io.swagger.v3.core.resolving.resources.TestObjectTicket2620;
import io.swagger.v3.core.resolving.resources.TestObjectTicket2620Subtypes;
import io.swagger.v3.core.resolving.resources.TestObjectTicket2900;
import io.swagger.v3.core.resolving.resources.TestObjectTicket4247;
import io.swagger.v3.core.util.Json;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.Schema;
import org.testng.annotations.Test;
import java.util.Map;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
public class ComposedSchemaTest {
@Test(description = "read composed schem refs #2620")
public void readBilateralComposedSchema_ticket2620() {
Map<String, Schema> schemas = ModelConverters.getInstance().readAll(TestObjectTicket2620.class);
Schema model = schemas.get("Child2TestObject");
Map<String, Schema> properties = model.getProperties();
assertNotNull(properties.get("name"));
assertNotNull(properties.get("childName"));
assertFalse(model instanceof ComposedSchema);
model = schemas.get("ChildTestObject");
properties = model.getProperties();
assertNotNull(properties.get("name"));
assertNotNull(properties.get("childName"));
assertFalse(model instanceof ComposedSchema);
model = schemas.get("TestObjectTicket2620");
properties = model.getProperties();
assertNotNull(properties.get("name"));
assertNull(properties.get("childName"));
assertTrue(model instanceof ComposedSchema);
assertEquals(((ComposedSchema) model).getOneOf().size(), 2);
schemas = ModelConverters.getInstance().readAll(TestObjectTicket2620Subtypes.class);
model = schemas.get("Child2TestObject");
assertNull(model.getProperties());
properties = ((ComposedSchema)model).getAllOf().get(1).getProperties();
assertNull(properties.get("name"));
assertNotNull(properties.get("childName"));
assertTrue(model instanceof ComposedSchema);
model = schemas.get("ChildTestObject");
assertNull(model.getProperties());
properties = ((ComposedSchema)model).getAllOf().get(1).getProperties();
assertNull(properties.get("name"));
assertNotNull(properties.get("childName"));
assertTrue(model instanceof ComposedSchema);
assertEquals(((ComposedSchema) model).getAllOf().size(), 2);
model = schemas.get("TestObjectTicket2620Subtypes");
properties = model.getProperties();
assertNotNull(properties.get("name"));
assertNull(properties.get("childName"));
assertTrue(model instanceof ComposedSchema);
assertEquals(((ComposedSchema) model).getOneOf().size(), 2);
}
@Test(description = "read composed schem refs #2900")
public void readComposedSchema_ticket2900() {
Json.mapper().addMixIn(TestObjectTicket2900.GsonJsonPrimitive.class, TestObjectTicket2900.GsonJsonPrimitiveMixIn.class);
Map<String, Schema> schemas = ModelConverters.getInstance().readAll(TestObjectTicket2900.class);
Schema model = schemas.get("SomeDTO");
assertNotNull(model);
Map<String, Schema> properties = model.getProperties();
assertNotNull(properties.get("value"));
assertEquals(properties.get("value").get$ref(), "#/components/schemas/MyJsonPrimitive");
assertEquals(properties.get("valueWithMixIn").get$ref(), "#/components/schemas/GsonJsonPrimitive");
model = schemas.get("MyJsonPrimitive");
assertNotNull(model);
assertEquals(((ComposedSchema) model).getOneOf().size(), 2);
assertEquals(((ComposedSchema)model).getOneOf().get(0).getType(), "string");
assertEquals(((ComposedSchema)model).getOneOf().get(1).getType(), "number");
model = schemas.get("GsonJsonPrimitive");
assertNotNull(model);
assertEquals(((ComposedSchema) model).getOneOf().size(), 2);
assertEquals(((ComposedSchema)model).getOneOf().get(0).getType(), "string");
assertEquals(((ComposedSchema)model).getOneOf().get(1).getType(), "number");
assertNull(model.getProperties());
}
@Test(description = "read composed schem refs #2616")
public void readArrayComposedSchema_ticket2616() {
Map<String, Schema> schemas = ModelConverters.getInstance().readAll(TestObject2616.class);
Schema model = schemas.get("testObject");
assertNotNull(model);
Map<String, Schema> properties = model.getProperties();
assertNotNull(properties.get("objects"));
assertTrue(properties.get("objects") instanceof ArraySchema);
model = schemas.get("AbstractObject");
assertNotNull(model);
assertTrue(model instanceof ComposedSchema);
assertEquals(((ComposedSchema) model).getOneOf().size(), 2);
model = schemas.get("AObject");
assertNotNull(model);
model = schemas.get("BObject");
assertNotNull(model);
model = schemas.get("objects");
assertNull(model);
}
@Test(description = "read single composed schem refs #2616")
public void readComposedSchema_ticket2616() {
Map<String, Schema> schemas = ModelConverters.getInstance().readAll(TestObject2616.TestObject2616_Schema.class);
Schema model = schemas.get("TestObject2616_Schema");
assertNotNull(model);
Map<String, Schema> properties = model.getProperties();
assertNotNull(properties.get("object"));
assertEquals(properties.get("object").get$ref(), "#/components/schemas/AbstractObject");
model = schemas.get("AbstractObject");
assertNotNull(model);
assertTrue(model instanceof ComposedSchema);
assertEquals(((ComposedSchema) model).getOneOf().size(), 2);
model = schemas.get("AObject");
assertNotNull(model);
model = schemas.get("BObject");
assertNotNull(model);
model = schemas.get("objects");
assertNull(model);
}
@Test(description = "read composed schem refs #4247")
public void readComposedSchema_ticket4247() {
Map<String, Schema> schemas = ModelConverters.getInstance().readAll(TestObjectTicket4247.class);
Schema model = schemas.get("TestObjectTicket4247");
assertNotNull(model);
Map<String, Schema> properties = model.getProperties();
assertNotNull(properties.get("value"));
assertEquals(((ComposedSchema) properties.get("value")).getOneOf().size(), 2);
assertEquals(((ComposedSchema)properties.get("value")).getOneOf().get(0).getType(), "string");
assertEquals(((ComposedSchema)properties.get("value")).getOneOf().get(1).getType(), "number");
}
}