Extend probe mechanism
[vid.git] / vid-app-common / src / test / java / org / onap / vid / aai / AaiOverTLSClientTest.java
index 43fb5a3..da937ca 100644 (file)
 package org.onap.vid.aai;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.gson.Gson;
+import io.joshworks.restclient.http.HttpResponse;
+import org.apache.commons.io.IOUtils;
 import org.mockito.Answers;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 
 import org.onap.vid.aai.model.ResourceType;
 import org.onap.vid.client.SyncRestClient;
+import org.onap.vid.model.Subscriber;
 import org.onap.vid.model.SubscriberList;
+import org.onap.vid.model.probes.ExternalComponentStatus;
+import org.springframework.http.HttpStatus;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import java.io.InputStream;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.contains;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
 
 public class AaiOverTLSClientTest {
@@ -49,6 +60,9 @@ public class AaiOverTLSClientTest {
     @Mock
     private AaiOverTLSPropertySupplier propertySupplier;
 
+    @Mock
+    private HttpResponse<SubscriberList> response;
+
     @BeforeMethod
     public void setUp() {
         initMocks(this);
@@ -60,7 +74,7 @@ public class AaiOverTLSClientTest {
         mockPropertyReader();
 
         aaiRestClient.isNodeTypeExistsByName("name", ResourceType.GENERIC_VNF);
-        Mockito.verify(syncRestClient).get(contains(SEARCH_NODES_QUERY_SEARCH_NODE_TYPE),
+        verify(syncRestClient).get(contains(SEARCH_NODES_QUERY_SEARCH_NODE_TYPE),
             eq(getHeaders()), eq(Collections.emptyMap()));
     }
 
@@ -69,15 +83,49 @@ public class AaiOverTLSClientTest {
         mockPropertyReader();
 
         aaiRestClient.getAllSubscribers();
-        Mockito.verify(syncRestClient).get(contains(SUBSCRIBERS),
+        verify(syncRestClient).get(contains(SUBSCRIBERS),
             eq(getHeaders()), eq(Collections.emptyMap()), eq(SubscriberList.class));
     }
 
+
+    @Test
+    public void probeMechanismShouldReturnAllSubscribers() {
+        mockPropertyReader();
+        List<Subscriber> subscribers = Lists.newArrayList(new Subscriber());
+
+        SubscriberList subscriberList = new SubscriberList(subscribers);
+        InputStream json = IOUtils.toInputStream(new Gson().toJson(subscriberList));
+        when(syncRestClient.get(contains(SUBSCRIBERS), eq(getHeaders()), eq(Collections.emptyMap()),
+                eq(SubscriberList.class))).thenReturn(response);
+        when(response.getStatus()).thenReturn(HttpStatus.OK.value());
+        when(response.getRawBody()).thenReturn(json);
+        when(response.isSuccessful()).thenReturn(true);
+
+
+        ExternalComponentStatus externalComponentStatus = aaiRestClient.probeGetAllSubscribers();
+
+        assertThat(externalComponentStatus.isAvailable()).isTrue();
+        assertThat(externalComponentStatus.getComponent()).isEqualTo(ExternalComponentStatus.Component.AAI);
+    }
+
+    @Test
+    public void probeMechanismShouldHandleExceptionProperly(){
+        mockPropertyReader();
+        when(syncRestClient.get(contains(SUBSCRIBERS), eq(getHeaders()), eq(Collections.emptyMap()),
+                eq(SubscriberList.class))).thenThrow(new RuntimeException("call failed"));
+
+        ExternalComponentStatus externalComponentStatus = aaiRestClient.probeGetAllSubscribers();
+
+        assertThat(externalComponentStatus.isAvailable()).isFalse();
+        assertThat(externalComponentStatus.getComponent()).isEqualTo(ExternalComponentStatus.Component.AAI);
+        assertThat(externalComponentStatus.getMetadata().getDescription()).containsSequence("call failed");
+    }
+
     private void mockPropertyReader() {
-        Mockito.when(propertySupplier.getPassword()).thenReturn("Pass");
-        Mockito.when(propertySupplier.getUsername()).thenReturn("User");
-        Mockito.when(propertySupplier.getRequestId()).thenReturn("1");
-        Mockito.when(propertySupplier.getRandomUUID()).thenReturn("2");
+        when(propertySupplier.getPassword()).thenReturn("Pass");
+        when(propertySupplier.getUsername()).thenReturn("User");
+        when(propertySupplier.getRequestId()).thenReturn("1");
+        when(propertySupplier.getRandomUUID()).thenReturn("2");
     }
 
     private Map<String,String> getHeaders(){
@@ -85,5 +133,4 @@ public class AaiOverTLSClientTest {
             put("X-FromAppId", "VidAaiController").put("Accept", "application/json").put("X-ECOMP-RequestID", "1").
             put("X-TransactionId", "2").put("Content-Type", "application/json").build();
     }
-
 }