[ONOS-7302] UT for value namespace in identifier. JSON/XML serializer change for value ns.
Change-Id: Ia5e77c2af822455d36cd307a38c91ba6a28597cd
diff --git a/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java b/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java
index 185c90c..081ade2 100644
--- a/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java
+++ b/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java
@@ -20,7 +20,9 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.commons.io.IOUtils;
import org.junit.BeforeClass;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.onosproject.yang.model.DataNode;
import org.onosproject.yang.model.DefaultResourceData;
import org.onosproject.yang.model.NodeKey;
@@ -60,6 +62,16 @@
private static YangSerializerContext context;
private static YangSerializer jsonSerializer;
+ private static String outputIdTestJson = "{\"identity-test:con\":{\"inte" +
+ "rface\":\"identity-types:physical\",\"interfaces\":{\"int-list" +
+ "\":[{\"iden\":\"identity-types-second:virtual\",\"available\":" +
+ "{\"ll\":[\"Loopback:identity-types\",\"Giga:identity-test\",\"" +
+ "Ethernet:identity-types-second\"]}},{\"iden\":\"optical\",\"av" +
+ "ailable\":{\"ll\":[\"Giga\"]}}]}}}";
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
@Test
public void demo1Test() throws IOException {
String path = "src/test/resources/test.json";
@@ -97,6 +109,52 @@
}
@Test
+ public void identityValueNsTest() throws IOException {
+ String path = "src/test/resources/id-test1.json";
+ // decode
+ DefaultCompositeStream external =
+ new DefaultCompositeStream("identity-test:test", parseInput(path));
+ CompositeData compositeData = jsonSerializer.decode(external, context);
+ ResourceData resourceData = compositeData.resourceData();
+ ResourceId rid = resourceData.resourceId();
+ DataNode rootNode = resourceData.dataNodes().get(0);
+
+ // encode
+ RuntimeContext.Builder runtimeContextBuilder = DefaultRuntimeContext.builder();
+ runtimeContextBuilder.setDataFormat("JSON");
+ DefaultResourceData.Builder resourceDataBuilder = DefaultResourceData.builder();
+ resourceDataBuilder.addDataNode(rootNode);
+ resourceDataBuilder.resourceId(rid);
+
+ ResourceData resourceDataOutput = resourceDataBuilder.build();
+ DefaultCompositeData.Builder compositeDataBuilder = DefaultCompositeData.builder();
+ compositeDataBuilder.resourceData(resourceDataOutput);
+ CompositeData compositeData1 = compositeDataBuilder.build();
+ // CompositeData --- YangRuntimeService ---> CompositeStream.
+ CompositeStream compositeStreamOutPut = jsonSerializer.encode(compositeData1,
+ context);
+ InputStream inputStreamOutput = compositeStreamOutPut.resourceData();
+ ObjectNode rootNodeOutput;
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ rootNodeOutput = (ObjectNode) mapper.readTree(inputStreamOutput);
+ assertEquals(rootNodeOutput.toString(), outputIdTestJson);
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+
+ @Test
+ public void identityValueNsErrorTest() throws IOException {
+ thrown.expect(IllegalArgumentException.class);
+ thrown.expectMessage("Invalid input for value namespace");
+ String path = "src/test/resources/id-test2.json";
+ DefaultCompositeStream external =
+ new DefaultCompositeStream("identity-test:test", parseInput(path));
+ jsonSerializer.decode(external, context);
+ }
+
+ @Test
public void testContainerInResourceIdToUri() {
ResourceId rid = ResourceId.builder().addBranchPointSchema("/", null)
.addBranchPointSchema("device", "namespace1")
diff --git a/serializers/json/src/test/resources/id-test1.json b/serializers/json/src/test/resources/id-test1.json
new file mode 100644
index 0000000..95aabb9
--- /dev/null
+++ b/serializers/json/src/test/resources/id-test1.json
@@ -0,0 +1,28 @@
+{
+ "identity-test:con": {
+ "identity-test:interface": "identity-types:physical",
+ "identity-test:interfaces": {
+ "int-list": [
+ {
+ "iden": "identity-types-second:virtual",
+ "available": {
+ "ll": [
+ "identity-types:Loopback",
+ "identity-test:Giga",
+ "identity-types-second:Ethernet"
+ ]
+ }
+ },
+ {
+ "iden": "optical",
+ "available": {
+ "ll": [
+ "Giga"
+ ]
+ }
+ }
+ ]
+ }
+ }
+}
+
diff --git a/serializers/json/src/test/resources/id-test2.json b/serializers/json/src/test/resources/id-test2.json
new file mode 100644
index 0000000..296c4e9
--- /dev/null
+++ b/serializers/json/src/test/resources/id-test2.json
@@ -0,0 +1,5 @@
+{
+ "identity-test:con": {
+ "identity-test:interface": "physical"
+ }
+}
\ No newline at end of file
diff --git a/serializers/json/src/test/resources/identity-test.yang b/serializers/json/src/test/resources/identity-test.yang
new file mode 100644
index 0000000..960e1ef
--- /dev/null
+++ b/serializers/json/src/test/resources/identity-test.yang
@@ -0,0 +1,61 @@
+module identity-test {
+ yang-version 1;
+ namespace "identity:ns:test:json:ser";
+ prefix "id";
+
+ import identity-types {
+ prefix "type";
+ }
+
+ revision "2013-07-15";
+
+ identity optical {
+ base type:int-type;
+ }
+
+ identity Giga {
+ base type:physical;
+ }
+
+ typedef available {
+ type identityref {
+ base "type:physical";
+ }
+ }
+
+ typedef typed{
+ type union {
+ type int32;
+ type int8;
+ type identityref {
+ base type:int-type;
+ }
+ }
+ }
+
+ container test {
+ leaf l {
+ type string;
+ }
+ container con {
+ leaf interface {
+ type identityref {
+ base "type:int-type";
+ }
+ }
+ container interfaces {
+ list int-list {
+ key "iden";
+ leaf iden {
+ type "id:typed";
+ }
+ container available {
+ leaf-list ll {
+ type available;
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/serializers/json/src/test/resources/identity-types-second.yang b/serializers/json/src/test/resources/identity-types-second.yang
new file mode 100644
index 0000000..f5742b2
--- /dev/null
+++ b/serializers/json/src/test/resources/identity-types-second.yang
@@ -0,0 +1,19 @@
+module identity-types-second{
+ yang-version 1;
+ namespace "identity:list:second:ns:test:json:ser";
+ prefix "sec";
+
+ import identity-types {
+ prefix "type";
+ }
+
+ revision "2013-07-15";
+
+ identity virtual {
+ base type:int-type;
+ }
+
+ identity Ethernet {
+ base type:physical;
+ }
+}
diff --git a/serializers/json/src/test/resources/identity-types.yang b/serializers/json/src/test/resources/identity-types.yang
new file mode 100644
index 0000000..25c8fa5
--- /dev/null
+++ b/serializers/json/src/test/resources/identity-types.yang
@@ -0,0 +1,17 @@
+module identity-types {
+ yang-version 1;
+ namespace "identity:list:ns:test:json:ser";
+ prefix "type";
+ revision "2013-07-15";
+
+ identity int-type {
+ }
+
+ identity physical {
+ base int-type;
+ }
+
+ identity Loopback {
+ base physical;
+ }
+}