diff --git a/pom.xml b/pom.xml
index 5fbcca6..1e98aaa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
4.0.0
com.mservicetech
openapi-schema-validation
- 1.0.0
+ 1.0.1
jar
openapi schema for openpai 3.*
https://github.com/mservicetech/openapi-schema-validation
diff --git a/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java b/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java
index 9e514e7..d727d5c 100644
--- a/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java
+++ b/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java
@@ -194,8 +194,10 @@ private ValidationResult validateDeserializedValues(final RequestEntity requestE
.filter(p -> ParameterType.is(p.getIn(), type))
.forEach(p->{
Object deserializedValue = getDeserializedValue(requestEntity, p.getName(), type);
- if (null==deserializedValue) {
- validationResult.addSkipped(p);
+ if (null==deserializedValue ) {
+ if (p.getRequired()) {
+ validationResult.addSkipped(p);
+ }
}else {
Status s = schemaValidator.validate(deserializedValue, Overlay.toJson((SchemaImpl)(p.getSchema())), p.getName());
validationResult.addStatus(s);
diff --git a/src/test/java/com/mservicetech/openapi/validation/OpenApiValidatorTest.java b/src/test/java/com/mservicetech/openapi/validation/OpenApiValidatorTest.java
index 17ec4f1..98cd294 100644
--- a/src/test/java/com/mservicetech/openapi/validation/OpenApiValidatorTest.java
+++ b/src/test/java/com/mservicetech/openapi/validation/OpenApiValidatorTest.java
@@ -117,4 +117,51 @@ public void testRequestPath3() {
Assert.assertEquals( status.getCode(), "ERR11001");
//{"statusCode":400,"code":"ERR11001","message":"VALIDATOR_REQUEST_PARAMETER_MISSING","description":"Parameter get is required but is missing.","severity":"ERROR"}
}
+
+ @Test
+ public void testRequestPath4() {
+
+ RequestEntity requestEntity = new RequestEntity();
+ Map pathMap = new HashMap<>();
+ pathMap.put("petId", "112245");
+ requestEntity.setPathParameters(pathMap);
+ Status status = openApiValidator.validateRequestPath("/pets/{petId}", "get", requestEntity);
+ Assert.assertNotNull(status);
+ Assert.assertEquals( status.getCode(), "ERR11004");
+ //{"statusCode":400,"code":"ERR11004","message":"VALIDATOR_SCHEMA","description":"Schema Validation Error - petId: must have a maximum value of 5","severity":"ERROR"}
+ }
+
+ @Test
+ public void testRequestQueryMissNotRequired() {
+
+ RequestEntity requestEntity = new RequestEntity();
+ Map queryMap = new HashMap<>();
+ requestEntity.setQueryParameters(queryMap);
+ Status status = openApiValidator.validateRequestPath("/pets", "get", requestEntity);
+ Assert.assertNull(status);
+ }
+
+ @Test
+ public void testRequestQueryWithQuery() {
+
+ RequestEntity requestEntity = new RequestEntity();
+ Map queryMap = new HashMap<>();
+ queryMap.put("limit", 12);
+ requestEntity.setQueryParameters(queryMap);
+ Status status = openApiValidator.validateRequestPath("/pets", "get", requestEntity);
+ Assert.assertNull(status);
+ }
+
+ @Test
+ public void testRequestQuery2() {
+
+ RequestEntity requestEntity = new RequestEntity();
+ Map queryMap = new HashMap<>();
+ queryMap.put("limit", "abbb");
+ requestEntity.setQueryParameters(queryMap);
+ Status status = openApiValidator.validateRequestPath("/pets", "get", requestEntity);
+ Assert.assertNotNull(status);
+ Assert.assertEquals( status.getCode(), "ERR11004");
+ //{"statusCode":400,"code":"ERR11004","message":"VALIDATOR_SCHEMA","description":"Schema Validation Error - limit: string found, integer expected","severity":"ERROR"}
+ }
}
diff --git a/src/test/resources/openapi.yaml b/src/test/resources/openapi.yaml
index a455347..e7e50ad 100644
--- a/src/test/resources/openapi.yaml
+++ b/src/test/resources/openapi.yaml
@@ -89,6 +89,7 @@ paths:
description: The id of the pet to retrieve
schema:
type: string
+ maxLength: 5
security:
- petstore_auth:
- 'read:pets'