Merge "Bug 9092: revert to org.json temporarily"
[netconf.git] / restconf / sal-rest-connector / src / test / java / org / opendaylight / controller / sal / rest / impl / test / providers / TestXmlBodyReader.java
index c1a9c567ca02711a4f8466bef0773c292162ff77..da4b89ecf0faa752186f43d139cdfa964778afab 100644 (file)
@@ -11,6 +11,7 @@ package org.opendaylight.controller.sal.rest.impl.test.providers;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.Sets;
@@ -35,6 +36,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -71,10 +73,45 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest {
     public static void initialization() throws Exception {
         final Collection<File> testFiles = TestRestconfUtils.loadFiles("/instanceidentifier/yang");
         testFiles.addAll(TestRestconfUtils.loadFiles("/invoke-rpc"));
+        testFiles.addAll(TestRestconfUtils.loadFiles("/foo-xml-test/yang"));
         schemaContext = YangParserTestUtils.parseYangSources(testFiles);
         CONTROLLER_CONTEXT.setSchemas(schemaContext);
     }
 
+    @Test
+    public void putXmlTest() throws Exception {
+        runXmlTest(false, "foo:top-level-list/key-value");
+    }
+
+    @Test
+    public void postXmlTest() throws Exception {
+        runXmlTest(true, "");
+    }
+
+    private void runXmlTest(final boolean isPost, final String path) throws Exception {
+        mockBodyReader(path, xmlBodyReader, isPost);
+        final InputStream inputStream = TestXmlBodyReader.class.getResourceAsStream("/foo-xml-test/foo.xml");
+        final NormalizedNodeContext nnc = xmlBodyReader.readFrom(null, null, null, mediaType, null, inputStream);
+        assertNotNull(nnc);
+
+        assertTrue(nnc.getData() instanceof MapEntryNode);
+        final MapEntryNode data = (MapEntryNode) nnc.getData();
+        assertTrue(data.getValue().size() == 2);
+        for (final DataContainerChild<? extends PathArgument, ?> child : data.getValue()) {
+            switch (child.getNodeType().getLocalName()) {
+                case "key-leaf":
+                    assertEquals("key-value", child.getValue());
+                    break;
+
+                case "ordinary-leaf":
+                    assertEquals("leaf-value", child.getValue());
+                    break;
+                default:
+                    fail();
+            }
+        }
+    }
+
     @Test
     public void moduleDataTest() throws Exception {
         final DataSchemaNode dataSchemaNode =