X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Frestconf-nb-bierman02%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2Fnn%2Fto%2Fxml%2Ftest%2FNnToXmlTest.java;h=ac0ee801db1b970d5fb365da0f50823b23913db0;hb=b2ddabbbdc758576fb98076df661f9956e4ef56d;hp=03a6279965363acf90b4daa4620960a72abe9a03;hpb=01a6df747b35181b5cb7a1a8cf7bdd8ecd511ef6;p=netconf.git diff --git a/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlTest.java b/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlTest.java index 03a6279965..ac0ee801db 100644 --- a/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlTest.java +++ b/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlTest.java @@ -7,18 +7,21 @@ */ package org.opendaylight.controller.sal.restconf.impl.nn.to.xml.test; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; -import com.google.common.base.VerifyException; +import com.google.common.base.Throwables; import com.google.common.collect.Iterables; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.OutputStream; import java.util.List; import javax.ws.rs.core.MediaType; import org.junit.BeforeClass; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.mockito.Mockito; import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest; import org.opendaylight.netconf.sal.rest.impl.NormalizedNodeXmlBodyWriter; @@ -26,40 +29,37 @@ import org.opendaylight.netconf.sal.restconf.impl.ControllerContext; import org.opendaylight.restconf.common.context.InstanceIdentifierContext; import org.opendaylight.restconf.common.context.NormalizedNodeContext; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.SchemaAwareBuilders; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; -import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; -import org.opendaylight.yangtools.yang.model.util.type.BitsTypeBuilder; -import org.opendaylight.yangtools.yang.model.util.type.EnumerationTypeBuilder; -import org.opendaylight.yangtools.yang.model.util.type.UnionTypeBuilder; +import org.opendaylight.yangtools.yang.model.ri.type.BaseTypes; +import org.opendaylight.yangtools.yang.model.ri.type.BitsTypeBuilder; +import org.opendaylight.yangtools.yang.model.ri.type.EnumerationTypeBuilder; +import org.opendaylight.yangtools.yang.model.ri.type.UnionTypeBuilder; public class NnToXmlTest extends AbstractBodyReaderTest { - - @Rule - public ExpectedException thrown = ExpectedException.none(); + private static EffectiveModelContext schemaContext; private final NormalizedNodeXmlBodyWriter xmlBodyWriter; - private static SchemaContext schemaContext; - public NnToXmlTest() throws NoSuchFieldException, SecurityException { - this.xmlBodyWriter = new NormalizedNodeXmlBodyWriter(); + public NnToXmlTest() { + super(schemaContext, null); + xmlBodyWriter = new NormalizedNodeXmlBodyWriter(); } @BeforeClass public static void initialization() { schemaContext = schemaContextLoader("/nn-to-xml/yang", schemaContext); - CONTROLLER_CONTEXT.setSchemas(schemaContext); } @Test @@ -82,8 +82,7 @@ public class NnToXmlTest extends AbstractBodyReaderTest { @Test public void nnAsYangLeafrefWithPrefixToXMLTest() throws Exception { - final NormalizedNodeContext normalizedNodeContext = prepareLeafrefData(); - nnToXml(normalizedNodeContext, "true", "true"); + nnToXml(prepareLeafrefData(), "true", "true"); } /** @@ -94,9 +93,12 @@ public class NnToXmlTest extends AbstractBodyReaderTest { public void nnAsYangLeafrefWithPrefixToXMLNegativeTest() throws Exception { final NormalizedNodeContext normalizedNodeContext = prepareLeafrefNegativeData(); - thrown.expect(VerifyException.class); - nnToXml(normalizedNodeContext, "value", - "value"); + final IOException ex = assertThrows(IOException.class, () -> nnToXml(normalizedNodeContext, + "value", "value")); + final Throwable rootCause = Throwables.getRootCause(ex); + assertThat(rootCause, instanceOf(IllegalArgumentException.class)); + assertEquals("Data tree child (basic:module?revision=2013-12-02)not-existing not present in schema parent " + + "(basic:module?revision=2013-12-02)cont", rootCause.getMessage()); } @Test @@ -192,11 +194,11 @@ public class NnToXmlTest extends AbstractBodyReaderTest { public void nnAsYangBitsToXmlTest() throws Exception { final BitsTypeDefinition.Bit mockBit1 = Mockito.mock(BitsTypeDefinition.Bit.class); Mockito.when(mockBit1.getName()).thenReturn("one"); - Mockito.when(mockBit1.getPosition()).thenReturn(1L); + Mockito.when(mockBit1.getPosition()).thenReturn(Uint32.ONE); final BitsTypeDefinition.Bit mockBit2 = Mockito.mock(BitsTypeDefinition.Bit.class); Mockito.when(mockBit2.getName()).thenReturn("two"); - Mockito.when(mockBit2.getPosition()).thenReturn(2L); - final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(Mockito.mock(SchemaPath.class)); + Mockito.when(mockBit2.getPosition()).thenReturn(Uint32.TWO); + final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(QName.create("foo", "foo")); bitsTypeBuilder.addBit(mockBit1); bitsTypeBuilder.addBit(mockBit2); @@ -212,7 +214,7 @@ public class NnToXmlTest extends AbstractBodyReaderTest { Mockito.when(mockEnum.getName()).thenReturn("enum2"); final EnumerationTypeBuilder enumerationTypeBuilder = BaseTypes - .enumerationTypeBuilder(Mockito.mock(SchemaPath.class)); + .enumerationTypeBuilder(QName.create("foo", "foo")); enumerationTypeBuilder.addEnum(mockEnum); final String elName = "lfEnumeration"; @@ -225,8 +227,8 @@ public class NnToXmlTest extends AbstractBodyReaderTest { public void nnAsYangEmptyToXmlTest() throws Exception { final String elName = "lfEmpty"; final NormalizedNodeContext normalizedNodeContext = prepareNNC( - TypeDefinitionAwareCodec.from(BaseTypes.emptyType()).deserialize(null), elName); - nnToXml(normalizedNodeContext, "<" + elName + ">"); + TypeDefinitionAwareCodec.from(BaseTypes.emptyType()).deserialize(""), elName); + nnToXml(normalizedNodeContext, "<" + elName + "/>"); } @Test @@ -245,16 +247,16 @@ public class NnToXmlTest extends AbstractBodyReaderTest { public void nnAsYangUnionToXmlTest() throws Exception { final BitsTypeDefinition.Bit mockBit1 = Mockito.mock(BitsTypeDefinition.Bit.class); Mockito.when(mockBit1.getName()).thenReturn("first"); - Mockito.when(mockBit1.getPosition()).thenReturn(1L); + Mockito.when(mockBit1.getPosition()).thenReturn(Uint32.ONE); final BitsTypeDefinition.Bit mockBit2 = Mockito.mock(BitsTypeDefinition.Bit.class); Mockito.when(mockBit2.getName()).thenReturn("second"); - Mockito.when(mockBit2.getPosition()).thenReturn(2L); + Mockito.when(mockBit2.getPosition()).thenReturn(Uint32.TWO); - final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(Mockito.mock(SchemaPath.class)); + final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(QName.create("foo", "foo")); bitsTypeBuilder.addBit(mockBit1); bitsTypeBuilder.addBit(mockBit2); - final UnionTypeBuilder unionTypeBuilder = BaseTypes.unionTypeBuilder(Mockito.mock(SchemaPath.class)); + final UnionTypeBuilder unionTypeBuilder = BaseTypes.unionTypeBuilder(QName.create("foo", "foo")); unionTypeBuilder.addType(BaseTypes.int8Type()); unionTypeBuilder.addType(bitsTypeBuilder.build()); unionTypeBuilder.addType(BaseTypes.booleanType()); @@ -288,19 +290,19 @@ public class NnToXmlTest extends AbstractBodyReaderTest { } private static NormalizedNodeContext prepareNNC(final Object object, final String name) { - final QName cont = QName.create("basic:module", "2013-12-2", "cont"); - final QName lf = QName.create("basic:module", "2013-12-2", name); + final QName cont = QName.create("basic:module", "2013-12-02", "cont"); + final QName lf = QName.create("basic:module", "2013-12-02", name); final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont); - final DataContainerNodeAttrBuilder contData = Builders + final DataContainerNodeBuilder contData = SchemaAwareBuilders .containerBuilder((ContainerSchemaNode) contSchema); final List instanceLf = ControllerContext .findInstanceDataChildrenByName((DataNodeContainer) contSchema, lf.getLocalName()); final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null); - contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue(object).build()); + contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue(object).build()); final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext( new InstanceIdentifierContext<>(null, contSchema, null, schemaContext), contData.build()); @@ -311,7 +313,7 @@ public class NnToXmlTest extends AbstractBodyReaderTest { private void nnToXml(final NormalizedNodeContext normalizedNodeContext, final String... xmlRepresentation) throws Exception { final OutputStream output = new ByteArrayOutputStream(); - this.xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null, this.mediaType, null, output); + xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null, mediaType, null, output); for (String element : xmlRepresentation) { assertTrue(output.toString().contains(element)); @@ -319,26 +321,26 @@ public class NnToXmlTest extends AbstractBodyReaderTest { } private static NormalizedNodeContext prepareLeafrefData() { - final QName cont = QName.create("basic:module", "2013-12-2", "cont"); - final QName lfBoolean = QName.create("basic:module", "2013-12-2", "lfBoolean"); - final QName lfLfref = QName.create("basic:module", "2013-12-2", "lfLfref"); + final QName cont = QName.create("basic:module", "2013-12-02", "cont"); + final QName lfBoolean = QName.create("basic:module", "2013-12-02", "lfBoolean"); + final QName lfLfref = QName.create("basic:module", "2013-12-02", "lfLfref"); final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont); - final DataContainerNodeAttrBuilder contData = Builders + final DataContainerNodeBuilder contData = SchemaAwareBuilders .containerBuilder((ContainerSchemaNode) contSchema); List instanceLf = ControllerContext .findInstanceDataChildrenByName((DataNodeContainer) contSchema, lfBoolean.getLocalName()); DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null); - contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue(Boolean.TRUE).build()); + contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue(Boolean.TRUE).build()); instanceLf = ControllerContext.findInstanceDataChildrenByName((DataNodeContainer) contSchema, lfLfref.getLocalName()); schemaLf = Iterables.getFirst(instanceLf, null); - contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue("true").build()); + contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue("true").build()); final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext( new InstanceIdentifierContext<>(null, contSchema, null, schemaContext), contData.build()); @@ -347,41 +349,41 @@ public class NnToXmlTest extends AbstractBodyReaderTest { } private static NormalizedNodeContext prepareLeafrefNegativeData() { - final QName cont = QName.create("basic:module", "2013-12-2", "cont"); - final QName lfLfref = QName.create("basic:module", "2013-12-2", "lfLfrefNegative"); + final QName cont = QName.create("basic:module", "2013-12-02", "cont"); + final QName lfLfref = QName.create("basic:module", "2013-12-02", "lfLfrefNegative"); final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont); - final DataContainerNodeAttrBuilder contData = Builders + final DataContainerNodeBuilder contData = SchemaAwareBuilders .containerBuilder((ContainerSchemaNode) contSchema); final List instanceLf = ControllerContext.findInstanceDataChildrenByName((DataNodeContainer) contSchema, lfLfref.getLocalName()); final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null); - contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue("value").build()); + contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue("value").build()); return new NormalizedNodeContext( new InstanceIdentifierContext<>(null, contSchema, null, schemaContext), contData.build()); } private static NormalizedNodeContext prepareIdrefData(final String prefix, final boolean valueAsQName) { - final QName cont = QName.create("basic:module", "2013-12-2", "cont"); - final QName cont1 = QName.create("basic:module", "2013-12-2", "cont1"); - final QName lf11 = QName.create("basic:module", "2013-12-2", "lf11"); + final QName cont = QName.create("basic:module", "2013-12-02", "cont"); + final QName cont1 = QName.create("basic:module", "2013-12-02", "cont1"); + final QName lf11 = QName.create("basic:module", "2013-12-02", "lf11"); final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont); - final DataContainerNodeAttrBuilder contData = Builders + final DataContainerNodeBuilder contData = SchemaAwareBuilders .containerBuilder((ContainerSchemaNode) contSchema); final DataSchemaNode cont1Schema = ((ContainerSchemaNode) contSchema).getDataChildByName(cont1); - final DataContainerNodeAttrBuilder cont1Data = Builders + final DataContainerNodeBuilder cont1Data = SchemaAwareBuilders .containerBuilder((ContainerSchemaNode) cont1Schema); Object value = null; if (valueAsQName) { - value = QName.create("referenced:module", "2013-12-2", "iden"); + value = QName.create("referenced:module", "2013-12-02", "iden"); } else { value = "no qname value"; } @@ -390,7 +392,7 @@ public class NnToXmlTest extends AbstractBodyReaderTest { .findInstanceDataChildrenByName((DataNodeContainer) cont1Schema, lf11.getLocalName()); final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null); - cont1Data.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue(value).build()); + cont1Data.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue(value).build()); contData.withChild(cont1Data.build());