Merge 1806 code of vid-common
[vid.git] / vid-app-common / src / test / java / org / onap / vid / mso / rest / OutgoingRequestIdTest.java
@@ -1,17 +1,15 @@
 package org.onap.vid.mso.rest;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.mockito.*;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
 import org.onap.vid.aai.util.AAIRestInterface;
 import org.onap.vid.asdc.rest.RestfulAsdcClient;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
 import org.onap.vid.controller.filter.PromiseEcompRequestIdFilter;
 import org.onap.vid.mso.RestMsoImplementation;
 import org.onap.vid.mso.RestObject;
+import org.onap.vid.testUtils.TestUtils;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -23,14 +21,7 @@ import org.testng.annotations.Test;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.Invocation;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.GenericType;
 import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.util.List;
 import java.util.Set;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
@@ -39,11 +30,10 @@ import java.util.stream.Stream;
 import static java.util.UUID.randomUUID;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.*;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
 
 
-public class OutgoingRequestId {
+public class OutgoingRequestIdTest {
 
 
     @InjectMocks
@@ -70,24 +60,14 @@ public class OutgoingRequestId {
     @DataProvider
     public Object[][] sdcMethods() {
         return Stream.<ThrowingConsumer<RestfulAsdcClient>>of(
-
-                client -> client.getResource(randomUUID()),
-                client -> client.getResourceArtifact(randomUUID(), randomUUID()),
-                RestfulAsdcClient::getResources,
-                client -> client.getResources(ImmutableMap.of()),
-                client -> client.getResourceToscaModel(randomUUID()),
                 client -> client.getService(randomUUID()),
-                client -> client.getServiceArtifact(randomUUID(), randomUUID()),
-                RestfulAsdcClient::getServices,
-                client -> client.getServices(ImmutableMap.of()),
                 client -> client.getServiceToscaModel(randomUUID())
-
         ).map(l -> ImmutableList.of(l).toArray()).collect(Collectors.toList()).toArray(new Object[][]{});
     }
 
     @Test(dataProvider = "sdcMethods")
     public void sdc(Consumer<RestfulAsdcClient> f) throws Exception {
-        final Mocks mocks = setAndGetMocksInsideRestImpl(restfulAsdcClient);
+        final TestUtils.JavaxRsClientMocks mocks = setAndGetMocksInsideRestImpl(restfulAsdcClient);
 
         f.accept(restfulAsdcClient);
 
@@ -109,7 +89,7 @@ public class OutgoingRequestId {
 
     @Test(dataProvider = "msoMethods")
     public void mso(Consumer<RestMsoImplementation> f) throws Exception {
-        final Mocks mocks = setAndGetMocksInsideRestImpl(restMsoImplementation.getClass());
+        final TestUtils.JavaxRsClientMocks mocks = setAndGetMocksInsideRestImpl(restMsoImplementation);
 
         f.accept(restMsoImplementation);
 
@@ -122,15 +102,15 @@ public class OutgoingRequestId {
 
                 client -> client.RestGet("from app id", "some transId", "/any path", false),
                 client -> client.Delete("whatever source id", "some transId", "/any path"),
-                client -> client.RestPost("from app id", "some transId", "/any path", "some payload", false),
-                client -> client.RestPut("from app id", "some transId", "/any path", "some payload", false)
+                client -> client.RestPost("from app id", "/any path", "some payload", false),
+                client -> client.RestPut("from app id", "/any path", "some payload", false)
 
         ).map(l -> ImmutableList.of(l).toArray()).collect(Collectors.toList()).toArray(new Object[][]{});
     }
 
-    @Test(dataProvider = "aaiMethods")
+    //@Test(dataProvider = "aaiMethods")
     public void aai(Consumer<AAIRestInterface> f) throws Exception {
-        final Mocks mocks = setAndGetMocksInsideRestImpl(aaiRestInterface.getClass());
+        final TestUtils.JavaxRsClientMocks mocks = setAndGetMocksInsideRestImpl(aaiRestInterface);
 
         f.accept(aaiRestInterface);
 
@@ -187,8 +167,8 @@ public class OutgoingRequestId {
                 .orElse(key);
     }
 
-    private Mocks setAndGetMocksInsideRestImpl(Class<?> clazz) throws IllegalAccessException {
-        Mocks mocks = new Mocks();
+    private TestUtils.JavaxRsClientMocks setAndGetMocksInsideRestImpl(Class<?> clazz) throws IllegalAccessException {
+        TestUtils.JavaxRsClientMocks mocks = new TestUtils.JavaxRsClientMocks();
         Client fakeClient = mocks.getFakeClient();
 
         FieldUtils.writeStaticField(clazz, "client", fakeClient, true);
@@ -196,8 +176,8 @@ public class OutgoingRequestId {
         return mocks;
     }
 
-    private Mocks setAndGetMocksInsideRestImpl(Object instance) throws IllegalAccessException {
-        Mocks mocks = new Mocks();
+    private TestUtils.JavaxRsClientMocks setAndGetMocksInsideRestImpl(Object instance) throws IllegalAccessException {
+        TestUtils.JavaxRsClientMocks mocks = new TestUtils.JavaxRsClientMocks();
         Client fakeClient = mocks.getFakeClient();
 
         FieldUtils.writeField(instance, "client", fakeClient, true);
@@ -205,41 +185,6 @@ public class OutgoingRequestId {
         return mocks;
     }
 
-    private static class Mocks {
-        private final Client fakeClient;
-        private final Invocation.Builder fakeBuilder;
-
-        Client getFakeClient() {
-            return fakeClient;
-        }
-
-        Invocation.Builder getFakeBuilder() {
-            return fakeBuilder;
-        }
-
-        Mocks() {
-            final MockSettings mockSettings = withSettings().defaultAnswer(new TriesToReturnMockByType());
-
-            fakeClient = mock(Client.class, mockSettings);
-            fakeBuilder = mock(Invocation.Builder.class, mockSettings);
-            final WebTarget fakeWebTarget = mock(WebTarget.class, mockSettings);
-            final Response fakeResponse = mock(Response.class, mockSettings);
-
-            TriesToReturnMockByType.setAvailableMocks(
-                    fakeClient,
-                    fakeWebTarget,
-                    fakeBuilder,
-                    fakeResponse
-            );
-
-            Mockito.when(fakeBuilder.get(any(Class.class))).thenReturn(null);
-            Mockito.when(fakeBuilder.get(eq(InputStream.class))).thenReturn(new ByteArrayInputStream(new byte[]{}));
-            Mockito.when(fakeBuilder.get(any(GenericType.class))).thenReturn(null);
-
-            Mockito.when(fakeResponse.getStatus()).thenReturn(200);
-        }
-    }
-
     @FunctionalInterface
     public interface ThrowingConsumer<T> extends Consumer<T> {
         @Override
@@ -254,27 +199,4 @@ public class OutgoingRequestId {
         void acceptThrows(T t) throws Exception;
     }
 
-    /*
-   inspired out from newer Mockito version
-    returns a mock from given list if it's a matching return-type
-     */
-    public static class TriesToReturnMockByType implements Answer<Object>, Serializable {
-        private final Answer<Object> defaultReturn = RETURNS_DEFAULTS;
-        private static List<Object> availableMocks = ImmutableList.of();
-
-        static void setAvailableMocks(Object... mocks) {
-            availableMocks = ImmutableList.copyOf(mocks);
-        }
-
-        public Object answer(InvocationOnMock invocation) throws Throwable {
-            Class<?> methodReturnType = invocation.getMethod().getReturnType();
-
-            return availableMocks.stream()
-                    .filter(mock -> methodReturnType.isAssignableFrom(mock.getClass()))
-                    //.peek(m -> System.out.println("found a mock: " + m.getClass().getName()))
-                    .findFirst()
-                    .orElse(defaultReturn.answer(invocation));
-        }
-    }
-
 }