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%2FRestPostOperationTest.java;h=5b36fd52f78c329649fb3d593034d6bf028031f0;hp=cfbc9fdb767c2c9c8fb8bc7e8d4954f5e5e210e8;hb=5135f2d97f0886632f3ad3b7160a3be54909810f;hpb=2c4a9be1a89caa93f4f2697401771dcb0fa67c5a diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java index cfbc9fdb76..5b36fd52f7 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java @@ -15,25 +15,29 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.opendaylight.controller.sal.restconf.impl.test.RestOperationUtils.XML; +import com.google.common.util.concurrent.Futures; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; import java.text.ParseException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Set; import java.util.concurrent.Future; - import javax.ws.rs.client.Entity; import javax.ws.rs.core.Application; import javax.ws.rs.core.MediaType; - import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.test.JerseyTest; import org.junit.BeforeClass; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; +import org.opendaylight.controller.sal.common.util.RpcErrors; import org.opendaylight.controller.sal.core.api.mount.MountInstance; import org.opendaylight.controller.sal.core.api.mount.MountService; import org.opendaylight.controller.sal.rest.api.Draft02; @@ -47,14 +51,15 @@ 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.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.RpcError; +import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; +import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; 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.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import com.google.common.util.concurrent.Futures; - public class RestPostOperationTest extends JerseyTest { private static String xmlDataAbsolutePath; @@ -102,12 +107,12 @@ public class RestPostOperationTest extends JerseyTest { resourceConfig = resourceConfig.registerInstances(restconfImpl, StructuredDataToXmlProvider.INSTANCE, StructuredDataToJsonProvider.INSTANCE, XmlToCompositeNodeProvider.INSTANCE, JsonToCompositeNodeProvider.INSTANCE); - resourceConfig.registerClasses( RestconfDocumentedExceptionMapper.class ); + resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class); return resourceConfig; } @Test - public void postOperationsStatusCodes() throws UnsupportedEncodingException { + public void postOperationsStatusCodes() throws IOException { controllerContext.setSchemas(schemaContextTestModule); mockInvokeRpc(cnSnDataOutput, true); String uri = "/operations/test-module:rpc-test"; @@ -119,6 +124,12 @@ public class RestPostOperationTest extends JerseyTest { mockInvokeRpc(null, false); assertEquals(500, post(uri, MediaType.APPLICATION_XML, xmlDataRpcInput)); + List rpcErrors = new ArrayList<>(); + rpcErrors.add( RpcErrors.getRpcError("applicationTag1", "tag1", "info1", ErrorSeverity.ERROR, "message1", ErrorType.RPC, null)); + rpcErrors.add( RpcErrors.getRpcError("applicationTag2", "tag2", "info2", ErrorSeverity.WARNING, "message2", ErrorType.PROTOCOL, null)); + mockInvokeRpc(null, false, rpcErrors); + assertEquals(500,post(uri, MediaType.APPLICATION_XML, xmlDataRpcInput)); + uri = "/operations/test-module:rpc-wrongtest"; assertEquals(400, post(uri, MediaType.APPLICATION_XML, xmlDataRpcInput)); } @@ -150,7 +161,7 @@ public class RestPostOperationTest extends JerseyTest { mockCommitConfigurationDataPostMethod(TransactionStatus.FAILED); assertEquals(500, post(uri, MediaType.APPLICATION_XML, xmlDataInterfaceAbsolutePath)); - assertEquals( 400, post(uri, MediaType.APPLICATION_JSON, "" )); + assertEquals(400, post(uri, MediaType.APPLICATION_JSON, "")); } @Test @@ -158,7 +169,8 @@ public class RestPostOperationTest extends JerseyTest { controllerContext.setSchemas(schemaContextYangsIetf); RpcResult rpcResult = new DummyRpcResult.Builder().result( TransactionStatus.COMMITED).build(); - Future> dummyFuture = DummyFuture.builder().rpcResult(rpcResult).build(); + Future> dummyFuture = new DummyFuture.Builder().rpcResult( + rpcResult).build(); when( brokerFacade.commitConfigurationDataPostBehindMountPoint(any(MountInstance.class), any(InstanceIdentifier.class), any(CompositeNode.class))).thenReturn(dummyFuture); @@ -175,14 +187,23 @@ public class RestPostOperationTest extends JerseyTest { uri = "/config/ietf-interfaces:interfaces/interface/0/yang-ext:mount/test-module:cont"; assertEquals(204, post(uri, Draft02.MediaTypes.DATA + XML, xmlData3)); - assertEquals( 400, post(uri, MediaType.APPLICATION_JSON, "" )); + assertEquals(400, post(uri, MediaType.APPLICATION_JSON, "")); } - private void mockInvokeRpc(CompositeNode result, boolean sucessful) { - RpcResult rpcResult = new DummyRpcResult.Builder().result(result) - .isSuccessful(sucessful).build(); + private void mockInvokeRpc(CompositeNode result, boolean sucessful, Collection errors) { + + DummyRpcResult.Builder builder = new DummyRpcResult.Builder().result(result) + .isSuccessful(sucessful); + if (!errors.isEmpty()) { + builder.errors(errors); + } + RpcResult rpcResult = builder.build(); when(brokerFacade.invokeRpc(any(QName.class), any(CompositeNode.class))) - .thenReturn(Futures.>immediateFuture( rpcResult )); + .thenReturn(Futures.> immediateFuture(rpcResult)); + } + + private void mockInvokeRpc(CompositeNode result, boolean sucessful) { + mockInvokeRpc(result, sucessful, Collections. emptyList()); } private void mockCommitConfigurationDataPostMethod(TransactionStatus statusName) { @@ -190,9 +211,9 @@ public class RestPostOperationTest extends JerseyTest { .build(); Future> dummyFuture = null; if (statusName != null) { - dummyFuture = DummyFuture.builder().rpcResult(rpcResult).build(); + dummyFuture = new DummyFuture.Builder().rpcResult(rpcResult).build(); } else { - dummyFuture = DummyFuture.builder().build(); + dummyFuture = new DummyFuture.Builder().build(); } when(brokerFacade.commitConfigurationDataPost(any(InstanceIdentifier.class), any(CompositeNode.class))) @@ -204,7 +225,8 @@ public class RestPostOperationTest extends JerseyTest { initMocking(); RpcResult rpcResult = new DummyRpcResult.Builder().result( TransactionStatus.COMMITED).build(); - Future> dummyFuture = DummyFuture.builder().rpcResult(rpcResult).build(); + Future> dummyFuture = new DummyFuture.Builder().rpcResult( + rpcResult).build(); when(brokerFacade.commitConfigurationDataPost(any(InstanceIdentifier.class), any(CompositeNode.class))) .thenReturn(dummyFuture);