X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2Ftest%2FXmlProvidersTest.java;h=7cce34ffb69dc8954da2e87535585347502eeaca;hp=4336ac8a8325b14ab883834a7e9b91a0a6fb7655;hb=ea29b59d27064ff61a23d9ac3081bd1669acd14f;hpb=b2d4575c4425e3b3d5aeaf1190e01e5d5a5286aa diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlProvidersTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlProvidersTest.java index 4336ac8a83..7cce34ffb6 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlProvidersTest.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlProvidersTest.java @@ -1,6 +1,7 @@ package org.opendaylight.controller.sal.restconf.impl.test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -11,6 +12,7 @@ import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; import java.net.URLEncoder; +import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.concurrent.Future; @@ -34,11 +36,14 @@ import org.opendaylight.controller.sal.rest.api.RestconfService; import org.opendaylight.controller.sal.rest.impl.StructuredDataToXmlProvider; import org.opendaylight.controller.sal.rest.impl.XmlToCompositeNodeProvider; import org.opendaylight.controller.sal.restconf.impl.BrokerFacade; +import org.opendaylight.controller.sal.restconf.impl.CompositeNodeWrapper; import org.opendaylight.controller.sal.restconf.impl.ControllerContext; import org.opendaylight.controller.sal.restconf.impl.RestconfImpl; +import org.opendaylight.controller.sal.restconf.impl.SimpleNodeWrapper; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -54,7 +59,8 @@ public class XmlProvidersTest extends JerseyTest { @BeforeClass public static void init() throws FileNotFoundException { - Set allModules = TestUtils.loadModules(RestconfImplTest.class.getResource("/full-versions/yangs").getPath()); + Set allModules = TestUtils.loadModulesFrom("/full-versions/yangs"); + assertNotNull(allModules); SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules); controllerContext = ControllerContext.getInstance(); controllerContext.setSchemas(schemaContext); @@ -75,106 +81,136 @@ public class XmlProvidersTest extends JerseyTest { @Test public void testStructuredDataToXmlProvider() throws FileNotFoundException, UnsupportedEncodingException { String uri = createUri("/datastore/", "ietf-interfaces:interfaces/interface/eth0"); - - InputStream xmlStream = RestconfImplTest.class.getResourceAsStream("/parts/ietf-interfaces_interfaces.xml"); - CompositeNode loadedCompositeNode = TestUtils.loadCompositeNode(xmlStream); + + CompositeNode loadedCompositeNode = prepareCompositeNodeWithIetfInterfacesInterfacesData(); when(brokerFacade.readOperationalData(any(InstanceIdentifier.class))).thenReturn(loadedCompositeNode); - + Response response = target(uri).request(MEDIA_TYPE).get(); assertEquals(200, response.getStatus()); } + private CompositeNode prepareCompositeNodeWithIetfInterfacesInterfacesData() { + CompositeNode intface; + try { + intface = new CompositeNodeWrapper(new URI("interface"), "interface"); + List> childs = new ArrayList<>(); + + childs.add(new SimpleNodeWrapper(new URI("name"), "name", "eth0")); + childs.add(new SimpleNodeWrapper(new URI("type"), "type", "ethernetCsmacd")); + childs.add(new SimpleNodeWrapper(new URI("enabled"), "enabled", Boolean.FALSE)); + childs.add(new SimpleNodeWrapper(new URI("description"), "description", "some interface")); + intface.setValue(childs); + return intface; + } catch (URISyntaxException e) { + } + + return null; + } + @Test public void testBadFormatXmlToCompositeNodeProvider() throws UnsupportedEncodingException, URISyntaxException { String uri = createUri("/operations/", "ietf-interfaces:interfaces/interface/eth0"); - + Response response = target(uri).request(Draft01.MediaTypes.DATA + RestconfService.XML).post( Entity.entity("", MEDIA_TYPE)); assertEquals(400, response.getStatus()); - + response = target(uri).request(Draft01.MediaTypes.DATA + RestconfService.XML).post( Entity.entity("", MEDIA_TYPE)); assertEquals(400, response.getStatus()); } - + @Test public void testXmlToCompositeNode404NotFound() throws UnsupportedEncodingException, URISyntaxException { String uri = createUri("/datastore/", "ietf-interfaces:interfaces/interface/eth0"); - + when(brokerFacade.readOperationalData(any(InstanceIdentifier.class))).thenReturn(null); - - Response response = target(uri).request(Draft01.MediaTypes.DATA+RestconfService.XML).get(); + + Response response = target(uri).request(Draft01.MediaTypes.DATA + RestconfService.XML).get(); assertEquals(404, response.getStatus()); } - + @Test public void testXmlToCompositeNode400() throws UnsupportedEncodingException, URISyntaxException { String uri = createUri("/datastore/", "simple-nodes:user/name"); - + when(brokerFacade.readOperationalData(any(InstanceIdentifier.class))).thenReturn(null); - - Response response = target(uri).request(Draft01.MediaTypes.DATA+RestconfService.XML).get(); + + Response response = target(uri).request(Draft01.MediaTypes.DATA + RestconfService.XML).get(); assertEquals(400, response.getStatus()); } - + @Test public void testRpcResultCommitedToStatusCodes() throws UnsupportedEncodingException { InputStream xmlStream = RestconfImplTest.class.getResourceAsStream("/parts/ietf-interfaces_interfaces.xml"); String xml = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream)); Entity entity = Entity.entity(xml, MEDIA_TYPE_DRAFT02); - RpcResult rpcResult = DummyRpcResult.builder().result(TransactionStatus.COMMITED).build(); + RpcResult rpcResult = new DummyRpcResult.Builder().result( + TransactionStatus.COMMITED).build(); Future> dummyFuture = DummyFuture.builder().rpcResult(rpcResult).build(); - when(brokerFacade.commitOperationalDataPut(any(InstanceIdentifier.class), any(CompositeNode.class))).thenReturn(dummyFuture); - when(brokerFacade.commitConfigurationDataPut(any(InstanceIdentifier.class), any(CompositeNode.class))).thenReturn(dummyFuture); - + when(brokerFacade.commitConfigurationDataPut(any(InstanceIdentifier.class), any(CompositeNode.class))) + .thenReturn(dummyFuture); + when(brokerFacade.commitConfigurationDataPost(any(InstanceIdentifier.class), any(CompositeNode.class))) + .thenReturn(dummyFuture); + String uri = createUri("/config/", "ietf-interfaces:interfaces/interface/eth0"); Response response = target(uri).request(MEDIA_TYPE_DRAFT02).put(entity); - assertEquals(204, response.getStatus()); - response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity); assertEquals(200, response.getStatus()); - - uri = createUri("/operational/", "ietf-interfaces:interfaces/interface/eth0"); - response = target(uri).request(MEDIA_TYPE_DRAFT02).put(entity); - assertEquals(204, response.getStatus()); + + uri = createUri("/config/", "ietf-interfaces:interfaces"); response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity); + assertEquals(204, response.getStatus()); + + uri = createUri("/config/", "ietf-interfaces:interfaces/interface/eth0"); + response = target(uri).request(MEDIA_TYPE_DRAFT02).put(entity); assertEquals(200, response.getStatus()); - + + uri = createUri("/config/", "ietf-interfaces:interfaces"); + response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity); + assertEquals(204, response.getStatus()); + uri = createUri("/datastore/", "ietf-interfaces:interfaces/interface/eth0"); + entity = Entity.entity(xml, MEDIA_TYPE); response = target(uri).request(MEDIA_TYPE).put(entity); - assertEquals(204, response.getStatus()); - response = target(uri).request(MEDIA_TYPE).post(entity); assertEquals(200, response.getStatus()); + + uri = createUri("/datastore/", "ietf-interfaces:interfaces"); + entity = Entity.entity(xml, MEDIA_TYPE); + response = target(uri).request(MEDIA_TYPE).post(entity); + assertEquals(204, response.getStatus()); } - + @Test public void testRpcResultOtherToStatusCodes() throws UnsupportedEncodingException { InputStream xmlStream = RestconfImplTest.class.getResourceAsStream("/parts/ietf-interfaces_interfaces.xml"); String xml = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream)); Entity entity = Entity.entity(xml, MEDIA_TYPE_DRAFT02); - RpcResult rpcResult = DummyRpcResult.builder().result(TransactionStatus.FAILED).build(); + RpcResult rpcResult = new DummyRpcResult.Builder().result( + TransactionStatus.FAILED).build(); Future> dummyFuture = DummyFuture.builder().rpcResult(rpcResult).build(); - when(brokerFacade.commitOperationalDataPut(any(InstanceIdentifier.class), any(CompositeNode.class))).thenReturn(dummyFuture); - when(brokerFacade.commitConfigurationDataPut(any(InstanceIdentifier.class), any(CompositeNode.class))).thenReturn(dummyFuture); - + when(brokerFacade.commitConfigurationDataPut(any(InstanceIdentifier.class), any(CompositeNode.class))) + .thenReturn(dummyFuture); + String uri = createUri("/config/", "ietf-interfaces:interfaces/interface/eth0"); Response response = target(uri).request(MEDIA_TYPE_DRAFT02).put(entity); assertEquals(500, response.getStatus()); response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity); assertEquals(500, response.getStatus()); - - uri = createUri("/operational/", "ietf-interfaces:interfaces/interface/eth0"); + + uri = createUri("/config/", "ietf-interfaces:interfaces/interface/eth0"); response = target(uri).request(MEDIA_TYPE_DRAFT02).put(entity); assertEquals(500, response.getStatus()); response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity); assertEquals(500, response.getStatus()); - + uri = createUri("/datastore/", "ietf-interfaces:interfaces/interface/eth0"); - response = target(uri).request(MEDIA_TYPE).put(entity); + entity = Entity.entity(xml, MEDIA_TYPE); + response = target(uri).request().put(entity); assertEquals(500, response.getStatus()); - response = target(uri).request(MEDIA_TYPE).post(entity); + response = target(uri).request().accept(MEDIA_TYPE).post(entity); assertEquals(500, response.getStatus()); } - + private String createUri(String prefix, String encodedPart) throws UnsupportedEncodingException { return URI.create(prefix + URLEncoder.encode(encodedPart, Charsets.US_ASCII.name()).toString()).toASCIIString(); } @@ -185,9 +221,10 @@ public class XmlProvidersTest extends JerseyTest { enable(TestProperties.DUMP_ENTITY); enable(TestProperties.RECORD_LOG_LEVEL); set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue()); - + ResourceConfig resourceConfig = new ResourceConfig(); - resourceConfig = resourceConfig.registerInstances(restconfImpl, StructuredDataToXmlProvider.INSTANCE, XmlToCompositeNodeProvider.INSTANCE); + resourceConfig = resourceConfig.registerInstances(restconfImpl, StructuredDataToXmlProvider.INSTANCE, + XmlToCompositeNodeProvider.INSTANCE); return resourceConfig; }