Remove powermock from KeyStoresDataUtilsTest 19/80719/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 7 Mar 2019 14:12:58 +0000 (15:12 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 7 Mar 2019 16:04:47 +0000 (17:04 +0100)
This test uses static method mocking, but that can be easily
fixed by injecting proper DataBroker behavior.

Remove static mocking, eliminating the need for powermockito
in aaa-cert.

Change-Id: I507eadf7ac789c0aae3a057dc8440d425b90a90a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
aaa-cert/pom.xml
aaa-cert/src/test/java/org/opendaylight/aaa/cert/test/KeyStoresDataUtilsTest.java

index 5086a6f1a27cbdcc16e7d7194302b57908c0ade2..ebc622b5cdf114215922c1730dec05c04be85b4b 100644 (file)
@@ -43,37 +43,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcprov-jdk15on</artifactId>
     </dependency>
-
-    <!-- Testing Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-core</artifactId>
-      <version>2.0.0</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-module-junit4</artifactId>
-      <version>2.0.0</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-api-mockito2</artifactId>
-      <version>2.0.0</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-api-support</artifactId>
-      <version>2.0.0</version>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 
   <build>
index 5abd4ba90f528ae582cd4461cd0e293474ea6406..a5cc8470b63c86e9be8dd2d88eafe5e581312f77 100644 (file)
@@ -9,7 +9,9 @@ package org.opendaylight.aaa.cert.test;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.isA;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 
 import java.io.File;
@@ -17,16 +19,19 @@ import java.security.Security;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.aaa.cert.impl.KeyStoreConstant;
 import org.opendaylight.aaa.cert.impl.ODLKeyTool;
 import org.opendaylight.aaa.cert.utils.KeyStoresDataUtils;
-import org.opendaylight.aaa.cert.utils.MdsalUtils;
 import org.opendaylight.aaa.encrypt.AAAEncryptionService;
 import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev160321.cipher.suite.CipherSuites;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev160321.cipher.suite.CipherSuitesBuilder;
@@ -36,13 +41,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev1603
 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev160321.ssl.data.OdlKeystoreBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev160321.ssl.data.TrustKeystore;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev160321.ssl.data.TrustKeystoreBuilder;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(MdsalUtils.class)
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class KeyStoresDataUtilsTest {
 
     static {
@@ -85,18 +87,16 @@ public class KeyStoresDataUtilsTest {
         final KeyStoresDataUtils keyStoresDataUtils = new KeyStoresDataUtils(AAA_ENCRYPTION_SERVICE);
 
         // Mock setup
-        PowerMockito.mockStatic(MdsalUtils.class);
-        Mockito.when(MdsalUtils.put(isA(DataBroker.class), isA(LogicalDatastoreType.class),
-                isA(InstanceIdentifier.class), isA(SslData.class))).thenReturn(true);
-        Mockito.when(
-                MdsalUtils.read(isA(DataBroker.class), isA(LogicalDatastoreType.class), isA(InstanceIdentifier.class)))
-                .thenReturn(sslData);
-        Mockito.when(MdsalUtils.delete(isA(DataBroker.class), isA(LogicalDatastoreType.class),
-                isA(InstanceIdentifier.class))).thenReturn(true);
-        Mockito.when(MdsalUtils.merge(isA(DataBroker.class), isA(LogicalDatastoreType.class),
-                isA(InstanceIdentifier.class), isA(SslData.class))).thenReturn(true);
-        Mockito.when(AAA_ENCRYPTION_SERVICE.encrypt(isA(byte[].class))).thenReturn(ENCRYPTED_BYTE);
-        Mockito.when(AAA_ENCRYPTION_SERVICE.encrypt(isA(String.class))).thenReturn(ENCRYPTED_STRING);
+        final WriteTransaction wtx = mock(WriteTransaction.class);
+        doReturn(CommitInfo.emptyFluentFuture()).when(wtx).commit();
+        doReturn(wtx).when(dataBroker).newWriteOnlyTransaction();
+
+        final ReadTransaction rtx = mock(ReadTransaction.class);
+        doReturn(FluentFutures.immediateFluentFuture(Optional.of(sslData))).when(rtx).read(
+            any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
+        doReturn(rtx).when(dataBroker).newReadOnlyTransaction();
+
+        doReturn(ENCRYPTED_STRING).when(AAA_ENCRYPTION_SERVICE).encrypt(isA(String.class));
 
         // getKeystoresIid
         InstanceIdentifier instanceIdentifierResult = KeyStoresDataUtils.getKeystoresIid();