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 {
@Mock
private AaiOverTLSPropertySupplier propertySupplier;
+ @Mock
+ private HttpResponse<SubscriberList> response;
+
@BeforeMethod
public void setUp() {
initMocks(this);
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()));
}
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(){
put("X-FromAppId", "VidAaiController").put("Accept", "application/json").put("X-ECOMP-RequestID", "1").
put("X-TransactionId", "2").put("Content-Type", "application/json").build();
}
-
}