Search in sources :

Example 1 with MapSchema

use of io.swagger.v3.oas.models.media.MapSchema in project swagger-core by swagger-api.

the class ModelConverterTest method processModelWithPairProperties.

@Test(description = "it should process a model with org.apache.commons.lang3.tuple.Pair properties")
public void processModelWithPairProperties() {
    final ModelWithTuple2.TupleAsMapPropertyConverter asPropertyConverter = new ModelWithTuple2.TupleAsMapPropertyConverter(Json.mapper());
    ModelConverters.getInstance().addConverter(asPropertyConverter);
    final Map<String, Schema> asProperty = readAll(ModelWithTuple2.class);
    ModelConverters.getInstance().removeConverter(asPropertyConverter);
    // assertEquals(asProperty.size(), 2);
    Map<String, Schema> values = asProperty.get("ModelWithTuple2").getProperties();
    Yaml.prettyPrint(values);
    for (Map.Entry<String, Schema> entry : values.entrySet()) {
        String name = entry.getKey();
        Schema property = entry.getValue();
        if ("timesheetStates".equals(name)) {
            assertEquals(property.getClass(), MapSchema.class);
        } else if ("manyPairs".equals(name)) {
            assertEquals(property.getClass(), ArraySchema.class);
            Schema items = ((ArraySchema) property).getItems();
            assertNotNull(items);
            assertEquals(items.getClass(), MapSchema.class);
            Schema stringProperty = (Schema) ((MapSchema) items).getAdditionalProperties();
            assertNotNull(stringProperty);
            assertEquals(stringProperty.getClass(), StringSchema.class);
        } else if ("complexLeft".equals(name)) {
            assertEquals(property.getClass(), ArraySchema.class);
            Schema items = ((ArraySchema) property).getItems();
            assertNotNull(items);
            assertEquals(items.getClass(), MapSchema.class);
            Schema additionalProperty = (Schema) ((MapSchema) items).getAdditionalProperties();
            assertNotNull(additionalProperty);
            assertNotNull(additionalProperty.get$ref());
            assertEquals(additionalProperty.get$ref(), "#/components/schemas/ComplexLeft");
        } else {
            fail(String.format("Unexpected property: %s", name));
        }
    }
}
Also used : ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) ModelWithTuple2(io.swagger.v3.core.oas.models.ModelWithTuple2) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) StringSchema(io.swagger.v3.oas.models.media.StringSchema) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) NumberSchema(io.swagger.v3.oas.models.media.NumberSchema) Schema(io.swagger.v3.oas.models.media.Schema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) StringSchema(io.swagger.v3.oas.models.media.StringSchema) Map(java.util.Map) Test(org.testng.annotations.Test)

Example 2 with MapSchema

use of io.swagger.v3.oas.models.media.MapSchema in project swagger-core by swagger-api.

the class MapPropertyDeserializerTest method testBooleanAdditionalPropertiesDeserialization.

@Test(description = "it should deserialize a boolean additionalProperties")
public void testBooleanAdditionalPropertiesDeserialization() throws Exception {
    Operation operation = Json.mapper().readValue(jsonAdditionalPropertiesBoolean, Operation.class);
    ApiResponse response = operation.getResponses().get("200");
    assertNotNull(response);
    Schema responseSchema = response.getContent().get("*/*").getSchema();
    assertNotNull(responseSchema);
    assertTrue(responseSchema instanceof ObjectSchema);
    assertTrue(responseSchema.getAdditionalProperties() instanceof Boolean);
    Assert.assertFalse((Boolean) responseSchema.getAdditionalProperties());
    operation = Json.mapper().readValue(jsonAdditionalPropertiesBooleanTrue, Operation.class);
    response = operation.getResponses().get("200");
    assertNotNull(response);
    responseSchema = response.getContent().get("*/*").getSchema();
    assertNotNull(responseSchema);
    assertTrue(responseSchema instanceof MapSchema);
    assertTrue(responseSchema.getAdditionalProperties() instanceof Boolean);
    Assert.assertTrue((Boolean) responseSchema.getAdditionalProperties());
}
Also used : ObjectSchema(io.swagger.v3.oas.models.media.ObjectSchema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) ObjectSchema(io.swagger.v3.oas.models.media.ObjectSchema) Schema(io.swagger.v3.oas.models.media.Schema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) Operation(io.swagger.v3.oas.models.Operation) ApiResponse(io.swagger.v3.oas.models.responses.ApiResponse) Test(org.testng.annotations.Test)

Example 3 with MapSchema

use of io.swagger.v3.oas.models.media.MapSchema in project swagger-core by swagger-api.

the class MapPropertyDeserializerTest method testMapDeserializationVendorExtensions.

@Test(description = "vendor extensions should be included with object type")
public void testMapDeserializationVendorExtensions() throws Exception {
    Operation operation = Json.mapper().readValue(json, Operation.class);
    ApiResponse response = operation.getResponses().get("200");
    assertNotNull(response);
    Schema responseSchema = response.getContent().get("*/*").getSchema();
    assertNotNull(responseSchema);
    MapSchema mp = (MapSchema) responseSchema;
    assertTrue(mp.getExtensions().size() > 0);
    assertNotNull(mp.getExtensions().get("x-foo"));
    assertEquals(mp.getExtensions().get("x-foo"), "vendor x");
}
Also used : MapSchema(io.swagger.v3.oas.models.media.MapSchema) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) ObjectSchema(io.swagger.v3.oas.models.media.ObjectSchema) Schema(io.swagger.v3.oas.models.media.Schema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) Operation(io.swagger.v3.oas.models.Operation) ApiResponse(io.swagger.v3.oas.models.responses.ApiResponse) Test(org.testng.annotations.Test)

Example 4 with MapSchema

use of io.swagger.v3.oas.models.media.MapSchema in project swagger-core by swagger-api.

the class MapPropertyDeserializerTest method testMapDeserialization.

@Test(description = "it should deserialize a response per #1349")
public void testMapDeserialization() throws Exception {
    Operation operation = Json.mapper().readValue(json, Operation.class);
    ApiResponse response = operation.getResponses().get("200");
    assertNotNull(response);
    Schema responseSchema = response.getContent().get("*/*").getSchema();
    assertNotNull(responseSchema);
    assertTrue(responseSchema instanceof MapSchema);
    MapSchema mp = (MapSchema) responseSchema;
    assertTrue(mp.getAdditionalProperties() instanceof IntegerSchema);
}
Also used : MapSchema(io.swagger.v3.oas.models.media.MapSchema) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) ObjectSchema(io.swagger.v3.oas.models.media.ObjectSchema) Schema(io.swagger.v3.oas.models.media.Schema) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) Operation(io.swagger.v3.oas.models.Operation) ApiResponse(io.swagger.v3.oas.models.responses.ApiResponse) Test(org.testng.annotations.Test)

Example 5 with MapSchema

use of io.swagger.v3.oas.models.media.MapSchema in project swagger-core by swagger-api.

the class JsonPropertiesDeserializationTest method givenMapProperty_shouldDeserializeMinProperties.

@Test
public void givenMapProperty_shouldDeserializeMinProperties() {
    String path = "json-schema-validation/map.json";
    MapSchema property = (MapSchema) TestUtils.deserializeJsonFileFromClasspath(path, Schema.class);
    assertNotNull(property.getMinProperties());
    assertEquals(property.getMinProperties().intValue(), 1);
}
Also used : MapSchema(io.swagger.v3.oas.models.media.MapSchema) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) StringSchema(io.swagger.v3.oas.models.media.StringSchema) Schema(io.swagger.v3.oas.models.media.Schema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) Test(org.testng.annotations.Test)

Aggregations

MapSchema (io.swagger.v3.oas.models.media.MapSchema)13 Schema (io.swagger.v3.oas.models.media.Schema)13 ArraySchema (io.swagger.v3.oas.models.media.ArraySchema)10 ObjectSchema (io.swagger.v3.oas.models.media.ObjectSchema)10 StringSchema (io.swagger.v3.oas.models.media.StringSchema)10 IntegerSchema (io.swagger.v3.oas.models.media.IntegerSchema)9 Test (org.testng.annotations.Test)9 NumberSchema (io.swagger.v3.oas.models.media.NumberSchema)8 BooleanSchema (io.swagger.v3.oas.models.media.BooleanSchema)6 DateSchema (io.swagger.v3.oas.models.media.DateSchema)6 DateTimeSchema (io.swagger.v3.oas.models.media.DateTimeSchema)6 ComposedSchema (io.swagger.v3.oas.models.media.ComposedSchema)4 Operation (io.swagger.v3.oas.models.Operation)3 FileSchema (io.swagger.v3.oas.models.media.FileSchema)3 ApiResponse (io.swagger.v3.oas.models.responses.ApiResponse)3 UUIDSchema (io.swagger.v3.oas.models.media.UUIDSchema)2 IOException (java.io.IOException)2 JsonIdentityInfo (com.fasterxml.jackson.annotation.JsonIdentityInfo)1 JsonIdentityReference (com.fasterxml.jackson.annotation.JsonIdentityReference)1 JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore)1