package org.opendaylight.restconf.nb.rfc8040.jersey.providers;
import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
import org.junit.Test;
-import org.mockito.Mockito;
import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
+import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
public class XmlNormalizedNodeBodyWriterTest {
+ @Test
+ public void testWriteEmptyRootContainer() throws Exception {
+ final EffectiveModelContext schemaContext = mock(EffectiveModelContext.class);
- private static final String EMPTY_OUTPUT = "<data xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"></data>";
+ final SchemaNode schemaNode = mock(SchemaNode.class);
+ doReturn(SchemaPath.ROOT).when(schemaNode).getPath();
- private static EffectiveModelContext schemaContext;
+ final NormalizedNodePayload nodePayload = NormalizedNodePayload.of(
+ new InstanceIdentifierContext<>(YangInstanceIdentifier.empty(), schemaNode, null, schemaContext),
+ Builders.containerBuilder().withNodeIdentifier(new NodeIdentifier(SchemaContext.NAME)).build());
- @BeforeClass
- public static void initialization() throws Exception {
- schemaContext = Mockito.mock(EffectiveModelContext.class);
+ final ByteArrayOutputStream output = new ByteArrayOutputStream();
+ final XmlNormalizedNodeBodyWriter xmlWriter = new XmlNormalizedNodeBodyWriter();
+ xmlWriter.writeTo(nodePayload, null, null, null, MediaType.APPLICATION_XML_TYPE, null, output);
+
+ assertEquals("<data xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"></data>",
+ output.toString(StandardCharsets.UTF_8));
}
@Test
- public void testWriteEmptyRootContainer() throws Exception {
- final SchemaNode schemaNode = Mockito.mock(SchemaNode.class);
- when(schemaNode.getPath()).thenReturn(SchemaPath.ROOT);
+ public void testRootContainerWrite() throws Exception {
+ final EffectiveModelContext schemaContext =
+ TestRestconfUtils.loadSchemaContext("/instanceidentifier/yang", null);
+
+ final SchemaNode schemaNode = mock(SchemaNode.class);
+ doReturn(SchemaPath.ROOT).when(schemaNode).getPath();
- final InstanceIdentifierContext<SchemaNode> identifierContext =
- new InstanceIdentifierContext<>(YangInstanceIdentifier.empty(), schemaNode, null, schemaContext);
- final ContainerNode data = ImmutableContainerNodeBuilder.create()
- .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(SchemaContext.NAME)).build();
- final NormalizedNodePayload nodePayload = NormalizedNodePayload.of(identifierContext, data);
+ final NormalizedNodePayload nodePayload = NormalizedNodePayload.of(
+ new InstanceIdentifierContext<>(YangInstanceIdentifier.empty(), schemaNode, null, schemaContext),
+ Builders.containerBuilder()
+ .withNodeIdentifier(new NodeIdentifier(SchemaContext.NAME))
+ .withChild(Builders.containerBuilder()
+ .withNodeIdentifier(new NodeIdentifier(
+ QName.create("foo:module", "2016-09-29", "foo-bar-container")))
+ .build())
+ .withChild(Builders.containerBuilder()
+ .withNodeIdentifier(new NodeIdentifier(
+ QName.create("bar:module", "2016-09-29", "foo-bar-container")))
+ .build())
+ .build());
- final OutputStream output = new ByteArrayOutputStream();
+ final ByteArrayOutputStream output = new ByteArrayOutputStream();
final XmlNormalizedNodeBodyWriter xmlWriter = new XmlNormalizedNodeBodyWriter();
xmlWriter.writeTo(nodePayload, null, null, null, MediaType.APPLICATION_XML_TYPE, null, output);
- assertEquals(EMPTY_OUTPUT, output.toString());
+ assertEquals("<data xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
+ + "<foo-bar-container xmlns=\"bar:module\"></foo-bar-container>"
+ + "<foo-bar-container xmlns=\"foo:module\"></foo-bar-container>"
+ + "</data>", output.toString(StandardCharsets.UTF_8));
}
}
\ No newline at end of file