2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.restconf.restful.utils;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertNull;
14 import static org.mockito.Mockito.doReturn;
16 import com.google.common.base.Optional;
17 import com.google.common.util.concurrent.Futures;
18 import java.util.Collection;
19 import java.util.Collections;
20 import org.junit.Assert;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.mockito.Mock;
24 import org.mockito.MockitoAnnotations;
25 import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
26 import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
27 import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException;
28 import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
29 import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
30 import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult;
31 import org.opendaylight.netconf.sal.restconf.impl.RestconfDocumentedException;
32 import org.opendaylight.restconf.handlers.RpcServiceHandler;
33 import org.opendaylight.yangtools.yang.common.RpcError;
35 public class RestconfInvokeOperationsUtilTest {
37 private static final TestData data = new TestData();
39 private RpcServiceHandler serviceHandler;
41 private DOMRpcService rpcService;
43 private DOMMountPoint moutPoint;
47 MockitoAnnotations.initMocks(this);
48 serviceHandler = new RpcServiceHandler(rpcService);
52 public void invokeRpcTest() {
53 final DOMRpcResult mockResult = new DefaultDOMRpcResult(data.output, Collections.emptyList());
54 doReturn(Futures.immediateCheckedFuture(mockResult)).when(rpcService).invokeRpc(data.rpc, data.input);
55 final DOMRpcResult rpcResult = RestconfInvokeOperationsUtil.invokeRpc(data.input, data.rpc, serviceHandler);
56 Assert.assertTrue(rpcResult.getErrors().isEmpty());
57 assertEquals(data.output, rpcResult.getResult());
60 @Test(expected = RestconfDocumentedException.class)
61 public void invokeRpcErrorsAndCheckTestTest() {
62 final DOMRpcException exception = new DOMRpcImplementationNotAvailableException("No implementation of RPC " + data.errorRpc.toString() + " availible");
63 doReturn(Futures.immediateFailedCheckedFuture(exception)).when(rpcService).invokeRpc(data.errorRpc, data.input);
64 final DOMRpcResult rpcResult = RestconfInvokeOperationsUtil.invokeRpc(data.input, data.errorRpc, serviceHandler);
65 assertNull(rpcResult.getResult());
66 final Collection<RpcError> errorList = rpcResult.getErrors();
67 assertEquals(1, errorList.size());
68 final RpcError actual = errorList.iterator().next();
69 assertEquals("No implementation of RPC " + data.errorRpc.toString() + " availible", actual.getMessage());
70 assertEquals("operation-failed", actual.getTag());
71 assertEquals(RpcError.ErrorType.RPC, actual.getErrorType());
72 RestconfInvokeOperationsUtil.checkResponse(rpcResult);
76 public void invokeRpcViaMountPointTest() {
77 doReturn(Optional.fromNullable(rpcService)).when(moutPoint).getService(DOMRpcService.class);
78 final DOMRpcResult mockResult = new DefaultDOMRpcResult(data.output, Collections.emptyList());
79 doReturn(Futures.immediateCheckedFuture(mockResult)).when(rpcService).invokeRpc(data.rpc, data.input);
80 final DOMRpcResult rpcResult = RestconfInvokeOperationsUtil.invokeRpcViaMountPoint(moutPoint, data.input, data.rpc);
81 Assert.assertTrue(rpcResult.getErrors().isEmpty());
82 assertEquals(data.output, rpcResult.getResult());
85 @Test(expected = RestconfDocumentedException.class)
86 public void invokeRpcMissingMountPointServiceTest() {
87 doReturn(Optional.absent()).when(moutPoint).getService(DOMRpcService.class);
88 final DOMRpcResult mockResult = new DefaultDOMRpcResult(data.output, Collections.emptyList());
89 doReturn(Futures.immediateCheckedFuture(mockResult)).when(rpcService).invokeRpc(data.rpc, data.input);
90 final DOMRpcResult rpcResult = RestconfInvokeOperationsUtil.invokeRpcViaMountPoint(moutPoint, data.input, data.rpc);
94 public void checkResponseTest() {
95 final DOMRpcResult mockResult = new DefaultDOMRpcResult(data.output, Collections.emptyList());
96 doReturn(Futures.immediateCheckedFuture(mockResult)).when(rpcService).invokeRpc(data.rpc, data.input);
97 final DOMRpcResult rpcResult = RestconfInvokeOperationsUtil.invokeRpc(data.input, data.rpc, serviceHandler);
98 Assert.assertTrue(rpcResult.getErrors().isEmpty());
99 assertEquals(data.output, rpcResult.getResult());
100 assertNotNull(RestconfInvokeOperationsUtil.checkResponse(rpcResult));