Remove RestconfError.ErrorType
[netconf.git] / restconf / restconf-nb-rfc8040 / src / test / java / org / opendaylight / restconf / nb / rfc8040 / rests / utils / DeleteDataTransactionUtilTest.java
index bc60219e4d09fe01003f3a20e9ad288e5cda9088..3186cc5111028dbdc7262b2b568e814bfe356570 100644 (file)
@@ -9,39 +9,41 @@ package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
 import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFalseFluentFuture;
-import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture;
 import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateTrueFluentFuture;
 
-import java.util.Optional;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.SettableFuture;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
+import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
+import org.opendaylight.netconf.api.DocumentedException;
+import org.opendaylight.netconf.api.NetconfDocumentedException;
 import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.common.errors.RestconfError.ErrorTag;
-import org.opendaylight.restconf.common.errors.RestconfError.ErrorType;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy;
+import org.opendaylight.yangtools.yang.common.ErrorSeverity;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class DeleteDataTransactionUtilTest {
-    @Mock
-    private DOMTransactionChain transactionChain;
     @Mock
     private InstanceIdentifierContext<?> context;
     @Mock
@@ -51,18 +53,17 @@ public class DeleteDataTransactionUtilTest {
     @Mock
     private NetconfDataTreeService netconfService;
 
-    private TransactionChainHandler transactionChainHandler;
-
     @Before
     public void init() {
-        MockitoAnnotations.initMocks(this);
-        Mockito.when(this.transactionChain.newReadWriteTransaction()).thenReturn(this.readWrite);
-        Mockito.doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
-        Mockito.doReturn(CommitInfo.emptyFluentFuture()).when(this.netconfService).commit(Mockito.any());
-        Mockito.when(this.context.getInstanceIdentifier()).thenReturn(YangInstanceIdentifier.empty());
-
-        Mockito.doReturn(transactionChain).when(mockDataBroker).createTransactionChain(Mockito.any());
-        transactionChainHandler = new TransactionChainHandler(mockDataBroker);
+        doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).commit();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).discardChanges();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
+            .delete(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty());
+        doReturn(YangInstanceIdentifier.empty()).when(this.context).getInstanceIdentifier();
+        doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
     }
 
     /**
@@ -71,13 +72,11 @@ public class DeleteDataTransactionUtilTest {
     @Test
     public void deleteData() {
         // assert that data to delete exists
-        Mockito.when(this.transactionChain.newReadWriteTransaction().exists(LogicalDatastoreType.CONFIGURATION,
-                YangInstanceIdentifier.empty())).thenReturn(immediateTrueFluentFuture());
-        Mockito.when(this.netconfService.getConfig(YangInstanceIdentifier.empty()))
-                .thenReturn(immediateFluentFuture(Optional.of(mock(NormalizedNode.class))));
+        when(readWrite.exists(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty()))
+            .thenReturn(immediateTrueFluentFuture());
         // test
-        delete(new MdsalRestconfStrategy(this.context, transactionChainHandler));
-        delete(new NetconfRestconfStrategy(netconfService, this.context));
+        delete(new MdsalRestconfStrategy(mockDataBroker));
+        delete(new NetconfRestconfStrategy(netconfService));
     }
 
     /**
@@ -86,24 +85,30 @@ public class DeleteDataTransactionUtilTest {
     @Test
     public void deleteDataNegativeTest() {
         // assert that data to delete does NOT exist
-        Mockito.when(this.transactionChain.newReadWriteTransaction().exists(LogicalDatastoreType.CONFIGURATION,
-                YangInstanceIdentifier.empty())).thenReturn(immediateFalseFluentFuture());
-        Mockito.when(this.netconfService.getConfig(YangInstanceIdentifier.empty()))
-                .thenReturn(immediateFluentFuture(Optional.empty()));
+        when(readWrite.exists(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty()))
+            .thenReturn(immediateFalseFluentFuture());
+        final NetconfDocumentedException exception = new NetconfDocumentedException("id",
+            ErrorType.RPC, DocumentedException.ErrorTag.from("data-missing"), ErrorSeverity.ERROR);
+        final SettableFuture<? extends CommitInfo> ret = SettableFuture.create();
+        ret.setException(new TransactionCommitFailedException(
+            String.format("Commit of transaction %s failed", this), exception));
+
+        doReturn(ret).when(this.netconfService).commit();
+
         // test and assert error
-        deleteFail(new MdsalRestconfStrategy(this.context, transactionChainHandler));
-        deleteFail(new NetconfRestconfStrategy(netconfService, this.context));
+        deleteFail(new MdsalRestconfStrategy(mockDataBroker));
+        deleteFail(new NetconfRestconfStrategy(netconfService));
     }
 
     private void delete(final RestconfStrategy strategy) {
-        final Response response = DeleteDataTransactionUtil.deleteData(strategy);
+        final Response response = DeleteDataTransactionUtil.deleteData(strategy, context.getInstanceIdentifier());
         // assert success
         assertEquals("Not expected response received", Status.NO_CONTENT.getStatusCode(), response.getStatus());
     }
 
     private void deleteFail(final RestconfStrategy strategy) {
         try {
-            DeleteDataTransactionUtil.deleteData(strategy);
+            DeleteDataTransactionUtil.deleteData(strategy, context.getInstanceIdentifier());
             fail("Delete operation should fail due to missing data");
         } catch (final RestconfDocumentedException e) {
             assertEquals(ErrorType.PROTOCOL, e.getErrors().get(0).getErrorType());