diff options
author | adheli.tavares <adheli.tavares@est.tech> | 2024-07-19 12:14:20 +0100 |
---|---|---|
committer | adheli.tavares <adheli.tavares@est.tech> | 2024-07-19 14:02:08 +0100 |
commit | 119c725def8de2593bdd8e356212fd3078740643 (patch) | |
tree | 491b9b73e76cfb8b93cb6569a2f30ca0fb66b306 /utils/src/test | |
parent | 936d289bc32ac46baf4230a582d5020e94e39f8f (diff) |
Uplift json schema validator library
Issue-ID: POLICY-5084
Change-Id: Ic0413a07d052b62cf81fb9f128ecca892d76aa73
Signed-off-by: adheli.tavares <adheli.tavares@est.tech>
Diffstat (limited to 'utils/src/test')
4 files changed, 111 insertions, 101 deletions
diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillisTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillisTest.java index f13ddd9a..6db9e66e 100644 --- a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillisTest.java +++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillisTest.java @@ -87,7 +87,7 @@ class StandardCoderInstantAsMillisTest { } @Test - void testToJsonTree_testFromJsonJsonElementClassT() throws Exception { + void testToJsonTree_testFromJsonJsonElementClassT() { MyMap map = new MyMap(); map.props = new LinkedHashMap<>(); map.props.put("jel keyA", "jel valueA"); diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardValCoderTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardValCoderTest.java index 45d814a4..8b5f406b 100644 --- a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardValCoderTest.java +++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardValCoderTest.java @@ -21,24 +21,23 @@ package org.onap.policy.common.utils.coder; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; -import com.worldturner.medeia.api.ValidationFailedException; -import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; -import java.nio.file.Files; -import java.nio.file.Paths; import java.util.List; import lombok.Data; import lombok.NoArgsConstructor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.onap.policy.common.utils.resources.ResourceUtils; class StandardValCoderTest { private String jsonSchema; @@ -63,7 +62,7 @@ class StandardValCoderTest { } @BeforeEach - public void testSetUp() throws Exception { + public void testSetUp() { jsonSchema = getJson("src/test/resources/org/onap/policy/common/utils/coder/test.schema.json"); validJson = getJson("src/test/resources/org/onap/policy/common/utils/coder/valid.json"); missingReqJson = getJson("src/test/resources/org/onap/policy/common/utils/coder/missing-required.json"); @@ -72,7 +71,7 @@ class StandardValCoderTest { @Test void testDecode() throws CoderException { - StandardValCoder valCoder = new StandardValCoder(jsonSchema, "test-schema"); + StandardValCoder valCoder = new StandardValCoder(jsonSchema); ValOuter valOuter = valCoder.decode(validJson, ValOuter.class); assertValidJson(valOuter); @@ -85,34 +84,22 @@ class StandardValCoderTest { valCoder.decode(missingReqJson, ValOuter.class); fail("missing required field should have been flagged by the schema validation"); } catch (CoderException e) { - assertEquals("required", ((ValidationFailedException) e.getCause()).getFailures().get(0).getRule()); - assertEquals("aaCollection", - ((ValidationFailedException) e.getCause()).getFailures().get(0).getProperty()); - assertEquals("Required property aaCollection is missing from object", - ((ValidationFailedException) e.getCause()).getFailures().get(0).getMessage()); + assertThat(e.getMessage()).contains("Missing property aaCollection"); } try { valCoder.decode(badRegexJson, ValOuter.class); fail("bad regex should have been flagged by the schema validation"); } catch (CoderException e) { - assertEquals("properties", ((ValidationFailedException) e.getCause()).getFailures().get(0).getRule()); - assertEquals("aaString", - ((ValidationFailedException) e.getCause()).getFailures().get(0).getProperty()); - assertEquals("Property validation failed", - ((ValidationFailedException) e.getCause()).getFailures().get(0).getMessage()); - assertEquals("pattern", - ((ValidationFailedException) e.getCause()).getFailures() - .get(0).getDetails().iterator().next().getRule()); - assertEquals("Pattern ^([a-z]*)$ is not contained in text", - ((ValidationFailedException) e.getCause()).getFailures() - .get(0).getDetails().iterator().next().getMessage()); + assertThat(e.getMessage()) + .contains("Validation errors: \"abc123\" at #/aaString failed") + .contains("Did not match pattern: ^([a-z]*)$"); } } @Test void testEncode() throws CoderException { - StandardValCoder valCoder = new StandardValCoder(jsonSchema, "test-schema"); + StandardValCoder valCoder = new StandardValCoder(jsonSchema); ValOuter valOuter = valCoder.decode(validJson, ValOuter.class); String valOuterJson = valCoder.encode(valOuter); @@ -129,7 +116,7 @@ class StandardValCoderTest { @Test void testPretty() throws CoderException { - StandardValCoder valCoder = new StandardValCoder(jsonSchema, "test-schema"); + StandardValCoder valCoder = new StandardValCoder(jsonSchema); ValOuter valOuter = valCoder.decode(validJson, ValOuter.class); String valOuterJson = valCoder.encode(valOuter); @@ -146,12 +133,33 @@ class StandardValCoderTest { @Test void testConformance() { - StandardValCoder valCoder = new StandardValCoder(jsonSchema, "test-schema"); + StandardValCoder valCoder = new StandardValCoder(jsonSchema); assertTrue(valCoder.isConformant(validJson)); assertFalse(valCoder.isConformant(missingReqJson)); assertFalse(valCoder.isConformant(badRegexJson)); } + @Test + void testNullValues() throws CoderException { + StandardValCoder valCoder = new StandardValCoder(jsonSchema); + assertThrows(NullPointerException.class, () -> valCoder.toJson(null)); + assertThrows(NullPointerException.class, () -> valCoder.isConformant(null)); + assertThrows(NullPointerException.class, () -> valCoder.conformance(null)); + + assertThrows(NullPointerException.class, () -> valCoder.toJson(null, null)); + var writer = new StringWriter(); + assertThrows(NullPointerException.class, () -> valCoder.toJson(writer, null)); + ValOuter valOuter = valCoder.decode(validJson, ValOuter.class); + assertThrows(NullPointerException.class, () -> valCoder.toJson(null, valOuter)); + } + + @Test + void testConstructor() { + assertThrows(NullPointerException.class, () -> new StandardValCoder(null)); + + assertThrows(CoderRuntimeException.class, () -> new StandardValCoder("$schema")); + } + private void assertValidJson(ValOuter valOuter) { assertEquals("abcd", valOuter.getAaString()); assertEquals(90, valOuter.getAnInteger()); @@ -160,7 +168,7 @@ class StandardValCoderTest { assertEquals(Integer.valueOf(1200), valOuter.getAaCollection().get(0).getSubItemInteger()); } - private String getJson(String filePath) throws IOException { - return new String(Files.readAllBytes(Paths.get(filePath))); + private String getJson(String filePath) { + return ResourceUtils.getResourceAsString(filePath); } }
\ No newline at end of file diff --git a/utils/src/test/resources/org/onap/policy/common/utils/coder/test.schema.json b/utils/src/test/resources/org/onap/policy/common/utils/coder/test.schema.json index e79475eb..60e70fb4 100644 --- a/utils/src/test/resources/org/onap/policy/common/utils/coder/test.schema.json +++ b/utils/src/test/resources/org/onap/policy/common/utils/coder/test.schema.json @@ -1,71 +1,71 @@ { - "definitions": {}, - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "http://onap.org/policy/common/coders/root.json", - "type": "object", - "title": "Test Schema", - "required": [ - "aaString", - "anInteger", - "aaBoolean", - "aaCollection" - ], - "properties": { - "aaString": { - "$id": "#/properties/aaString", + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://onap.org/policy/common/coders/root.json", + "type": "object", + "title": "Test Schema", + "required": [ + "aaString", + "anInteger", + "aaBoolean", + "aaCollection" + ], + "properties": { + "aaString": { + "$id": "#/properties/aaString", + "type": "string", + "title": "an alphabetical string", + "default": "", + "examples": [ + "abcdef" + ], + "pattern": "^([a-z]*)$" + }, + "anInteger": { + "$id": "#/properties/anInteger", + "type": "integer", + "title": "a bounded integer", + "default": 5, + "examples": [ + 98 + ], + "minimum": 10, + "maximum": 100 + }, + "aaBoolean": { + "$id": "#/properties/aaBoolean", + "type": "boolean", + "title": "a boolean", + "default": false, + "examples": [ + true + ] + }, + "aaCollection": { + "$id": "#/properties/aaCollection", + "type": "array", + "title": "a collection", + "items": { + "$id": "#/properties/aaCollection/items", + "type": "object", + "title": "the collection items", + "required": [ + "subItemString" + ], + "properties": { + "subItemString": { + "$id": "#/properties/aaCollection/items/properties/subItemString", "type": "string", - "title": "an alphabetical string", - "default": "", - "examples": [ - "abcdef" - ], - "pattern": "^([a-z]*)$" - }, - "anInteger": { - "$id": "#/properties/anInteger", - "type": "integer", - "title": "a bounded integer", - "default": 5, - "examples": [ - 98 - ], - "minimum": 10, - "maximum": 100 - }, - "aaBoolean": { - "$id": "#/properties/aaBoolean", - "type": "boolean", - "title": "a boolean", - "default": false, - "examples": [ - true - ] - }, - "aaCollection": { - "$id": "#/properties/aaCollection", - "type": "array", - "title": "a collection", - "items": { - "$id": "#/properties/aaCollection/items", - "type": "object", - "title": "the collection items", - "required": [ - "subItemString" - ], - "properties": { - "subItemString": { - "$id": "#/properties/aaCollection/items/properties/subItemString", - "type": "string", - "title": "the subitem string", - "default": "blah", - "pattern": "^(.*)$" - }, - "subItemInteger": { - "$id": "#/properties/aaCollection/items/properties/subItemInteger", - "type": "integer" - } - } - } + "title": "the subitem string", + "default": "blah", + "pattern": "^(.*)$" + }, + "subItemInteger": { + "$id": "#/properties/aaCollection/items/properties/subItemInteger", + "type": "integer" + } } + } } + } }
\ No newline at end of file diff --git a/utils/src/test/resources/org/onap/policy/common/utils/coder/valid.json b/utils/src/test/resources/org/onap/policy/common/utils/coder/valid.json index c1738176..a2cdb932 100644 --- a/utils/src/test/resources/org/onap/policy/common/utils/coder/valid.json +++ b/utils/src/test/resources/org/onap/policy/common/utils/coder/valid.json @@ -1,9 +1,11 @@ { - "aaString": "abcd", - "anInteger": 90, - "aaBoolean": true, - "aaCollection": [ { - "subItemString": "defg", - "subItemInteger": 1200 - }] + "aaString": "abcd", + "anInteger": 90, + "aaBoolean": true, + "aaCollection": [ + { + "subItemString": "defg", + "subItemInteger": 1200 + } + ] }
\ No newline at end of file |