This is an automated email from the ASF dual-hosted git repository. rmannibucau pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/johnzon.git
The following commit(s) were added to refs/heads/master by this push: new 5ac4924 [JOHNZON-322] ensure jsonschema can validate negative bounds 5ac4924 is described below commit 5ac4924ac45f2985673ab048f650b33b7b81e81b Author: Romain Manni-Bucau <rmannibu...@gmail.com> AuthorDate: Fri Oct 16 16:09:23 2020 +0200 [JOHNZON-322] ensure jsonschema can validate negative bounds --- .../spi/builtin/BaseNumberValidation.java | 3 - .../jsonschema/JsonSchemaValidatorTest.java | 71 +++++++++++++++------- 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java b/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java index 35e920b..14c5ee4 100644 --- a/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java +++ b/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java @@ -37,9 +37,6 @@ abstract class BaseNumberValidation extends BaseValidation { @Override protected Stream<ValidationResult.ValidationError> onNumber(final JsonNumber number) { final double val = number.doubleValue(); - if (val <= 0) { - return toError(val); - } if (isValid(val)) { return Stream.empty(); } diff --git a/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java b/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java index d3247ff..08ea742 100644 --- a/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java +++ b/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java @@ -242,28 +242,55 @@ public class JsonSchemaValidatorTest { @Test public void minimum() { - final JsonSchemaValidator validator = factory.newInstance(jsonFactory.createObjectBuilder() - .add("type", "object") - .add("properties", jsonFactory.createObjectBuilder() - .add("age", jsonFactory.createObjectBuilder() - .add("type", "number") - .add("minimum", 5) - .build()) - .build()) - .build()); - - assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 5).build()).isSuccess()); - assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 6).build()).isSuccess()); - - final ValidationResult failure = validator.apply(jsonFactory.createObjectBuilder().add("age", 2).build()); - assertFalse(failure.isSuccess()); - final Collection<ValidationResult.ValidationError> errors = failure.getErrors(); - assertEquals(1, errors.size()); - final ValidationResult.ValidationError error = errors.iterator().next(); - assertEquals("/age", error.getField()); - assertEquals("2.0 is less than 5.0", error.getMessage()); - - validator.close(); + { + final JsonSchemaValidator validator = factory.newInstance(jsonFactory.createObjectBuilder() + .add("type", "object") + .add("properties", jsonFactory.createObjectBuilder() + .add("age", jsonFactory.createObjectBuilder() + .add("type", "number") + .add("minimum", 5) + .build()) + .build()) + .build()); + + assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 5).build()).isSuccess()); + assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 6).build()).isSuccess()); + + final ValidationResult failure = validator.apply(jsonFactory.createObjectBuilder().add("age", 2).build()); + assertFalse(failure.isSuccess()); + final Collection<ValidationResult.ValidationError> errors = failure.getErrors(); + assertEquals(1, errors.size()); + final ValidationResult.ValidationError error = errors.iterator().next(); + assertEquals("/age", error.getField()); + assertEquals("2.0 is less than 5.0", error.getMessage()); + + validator.close(); + } + { + final JsonSchemaValidator validator = factory.newInstance(jsonFactory.createObjectBuilder() + .add("type", "object") + .add("properties", jsonFactory.createObjectBuilder() + .add("age", jsonFactory.createObjectBuilder() + .add("type", "number") + .add("minimum", -1) + .build()) + .build()) + .build()); + + assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 1).build()).isSuccess()); + assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 0).build()).isSuccess()); + assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", -1).build()).isSuccess()); + + final ValidationResult failure = validator.apply(jsonFactory.createObjectBuilder().add("age", -2).build()); + assertFalse(failure.isSuccess()); + final Collection<ValidationResult.ValidationError> errors = failure.getErrors(); + assertEquals(1, errors.size()); + final ValidationResult.ValidationError error = errors.iterator().next(); + assertEquals("/age", error.getField()); + assertEquals("-2.0 is less than -1.0", error.getMessage()); + + validator.close(); + } } @Test