Add lenient JsonParserStream
[yangtools.git] / yang / yang-data-codec-gson / src / test / java / org / opendaylight / yangtools / yang / data / codec / gson / JsonStreamToNormalizedNodeTest.java
index 50c8bd0bedd5f6dff003551e8b471a6b701c70f6..62449892352d6f1211d91cafb45a15c627b1c8e4 100644 (file)
@@ -194,6 +194,24 @@ public class JsonStreamToNormalizedNodeTest {
         }
     }
 
+    /**
+     * Should not fail as we set the parser to be lenient.
+     *
+     * <p>
+     * Json input contains element which doesn't exist in YANG schema
+     */
+    @Test
+    public void parsingSkipNotExistingElement() throws IOException, URISyntaxException {
+        final String inputJson = loadTextFile("/complexjson/not-existing-element.json");
+        final NormalizedNodeResult result = new NormalizedNodeResult();
+        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final JsonParserStream jsonParser = JsonParserStream.createLenient(streamWriter,
+            JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext));
+        jsonParser.parse(new JsonReader(new StringReader(inputJson)));
+        final NormalizedNode<?, ?> transformedInput = result.getResult();
+        assertNotNull(transformedInput);
+    }
+
     @Test
     public void listItemWithoutArray() throws IOException, URISyntaxException {
         final String inputJson = loadTextFile("/complexjson/keyed-list-restconf-behaviour.json");