You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2020/10/16 14:09:28 UTC

[johnzon] branch master updated: [JOHNZON-322] ensure jsonschema can validate negative bounds

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 <rm...@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