X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=vid-app-common%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fvid%2Fservices%2FAaiServiceImplTest.java;h=09a53684fa9dd6f6cde955cc135c9063f824eb0c;hb=e601bbdc43bae9a08e2e10c5139a6f76b47860d7;hp=bb47180e4fb5b475ebbc4d08eb1ef0218db9fce4;hpb=76c6ee4a697617ec4cdee2f3b48bc83136c858c5;p=vid.git diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java index bb47180e4..09a53684f 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java @@ -21,16 +21,36 @@ package org.onap.vid.services; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.onap.vid.model.aaiTree.NodeType.SERVICE_INSTANCE; + import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.joshworks.restclient.http.HttpResponse; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import javax.ws.rs.core.Response; import org.apache.http.HttpStatus; import org.jetbrains.annotations.NotNull; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; import org.onap.vid.aai.AaiClientInterface; import org.onap.vid.aai.AaiGetVnfResponse; @@ -70,721 +90,711 @@ import org.onap.vid.model.aaiTree.AAITreeNode; import org.onap.vid.model.aaiTree.RelatedVnf; import org.onap.vid.model.aaiTree.ServiceInstance; import org.onap.vid.roles.RoleValidator; - -import javax.ws.rs.core.Response; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import org.springframework.http.HttpMethod; @RunWith(MockitoJUnitRunner.class) public class AaiServiceImplTest { - private static final String GLOBAL_CUSTOMER_ID = "GLOBAL_CUSTOMER_ID"; - private static final String CLOUD_REGION_ID = "CLOUD_REGION_ID"; - private static final String VNF_TYPE = "VNF_TYPE"; - private static final String TENANT_ID = "TENANT_ID"; - private static final String TENANT_NAME = "TENANT_NAME"; - private static final String SERVICE_TYPE = "SERVICE_TYPE"; - private static final String CORRECT_VALUE = "CORRECT_VALUE"; - private static final String SUBSCRIBER_ID = "SUBSCRIBER_ID_EXPECTED"; - private static final String STATUS_TEXT = "STATUS_TEXT"; - private static final String GLOBAL_SUBSCRIBER_ID = "GLOBAL_SUBSCRIBER_ID"; - private static final String GLOBAL_SUBSCRIBER_ID_NULL_RESPONSE = "ID_NULL"; - private static final String VNF_INSTANCE_ID_OK = "VNF_INSTANCE_ID_OK"; - private static final String VNF_INSTANCE_ID_FAIL = "VNF_INSTANCE_ID_FAIL"; - private static final String PARENT_NAME = "PARENT_NAME"; - private static final String PARENT_ID = "PARENT_ID"; - private static final String INVARIANT_ID = "INVARIANT_ID"; - private static final String GROUP_TYPE_FAILING = "GROUP_TYPE_FAILING"; - private static final String GROUP_ROLE_OK = "GROUP_ROLE_OK"; - private static final String GROUP_ROLE_FAILING = "GROUP_ROLE_FAILING"; - private static final String group_type_ok = "GROUP_TYPE_OK"; - private static final String CLOUD_TYPE = "CLOUD_TYPE"; - - @Mock - private HttpResponse responseAllSubscribers; - @Mock - private AaiResponse aaiResponseOpEnvList; - @Mock - private AaiResponse aaiResponse; - @Mock - private AaiResponse aaiResponseJsonNode; - @Mock - private RoleValidator roleValidator; - - @Mock - private AaiClientInterface aaiClient; - @Mock - private AaiOverTLSClientInterface aaiOverTLSClient; - @Mock - private AaiResponseTranslator aaiResponseTranslator; - @Mock - private AAIServiceTree aaiServiceTree; - - @InjectMocks - private AaiServiceImpl aaiService; - - - @Test - public void shouldGetFullSubscriberListWithoutValidator() { - when(aaiOverTLSClient.getAllSubscribers()).thenReturn(responseAllSubscribers); - - HttpResponse actualResponse = aaiService.getFullSubscriberList(); - - assertThat(actualResponse).isEqualTo(responseAllSubscribers); - } - - @Test - public void shouldGetFullSubscriberListWithValidator() { - Subscriber subscriber = createSubscriber(); - SubscriberList subscriberList = new SubscriberList(Collections.singletonList(subscriber)); - - when(aaiOverTLSClient.getAllSubscribers()).thenReturn(responseAllSubscribers); - when(responseAllSubscribers.getBody()).thenReturn(subscriberList); - when(responseAllSubscribers.getStatusText()).thenReturn(STATUS_TEXT); - when(responseAllSubscribers.getStatus()).thenReturn(HttpStatus.SC_OK); - SubscriberFilteredResults expectedSubscribers = new SubscriberFilteredResults(roleValidator, subscriberList, - STATUS_TEXT, HttpStatus.SC_OK); - - SubscriberFilteredResults actualSubscribers = aaiService.getFullSubscriberList(roleValidator); - - assertThat(actualSubscribers.getHttpCode()).isEqualTo(expectedSubscribers.getHttpCode()); - assertThat(actualSubscribers.getErrorMessage()).isEqualTo(expectedSubscribers.getErrorMessage()); - } - - @Test - public void shouldGetOperationalEnvironments() { - when(aaiClient.getOperationalEnvironments(anyString(), anyString())) - .thenReturn(aaiResponseOpEnvList); - - AaiResponse expectedEnvList = - aaiService.getOperationalEnvironments(anyString(), anyString()); - - assertThat(expectedEnvList).isEqualTo(aaiResponseOpEnvList); - } - - @Test - public void shouldGetSubscriberData() { - Services services = createAaiResponseServices(); - AaiResponse aaiResponseServices = new AaiResponse<>(services, null, HttpStatus.SC_OK); - - when(aaiClient.getSubscriberData(SUBSCRIBER_ID)).thenReturn(aaiResponseServices); - when(roleValidator.isServicePermitted(eq(GLOBAL_CUSTOMER_ID), anyString())).thenReturn(Boolean.TRUE); - - AaiResponse actualResponse = aaiService.getSubscriberData(SUBSCRIBER_ID, roleValidator); - List actualServiceSubscriptions = ((AaiResponse) actualResponse) - .getT().serviceSubscriptions.serviceSubscription; - - assertThat(actualResponse).isEqualTo(aaiResponseServices); - assertThat(actualServiceSubscriptions).allMatch(s -> s.isPermitted); - } - - @Test - public void shouldGetServiceInstanceEmptySearchResults() { - ServiceInstancesSearchResults serviceInstancesSearchResults = new ServiceInstancesSearchResults(); - AaiResponse emptyResponse = new AaiResponse<>(serviceInstancesSearchResults, - null, HttpStatus.SC_OK); - - AaiResponse actualResponse = aaiService.getServiceInstanceSearchResults(null, null, - null, null, null); - - assertThat(actualResponse).isEqualToComparingFieldByFieldRecursively(emptyResponse); - } - - @Test - public void shouldGetVersionByInvariantId() { - Response response = mock(Response.class); - when(aaiClient.getVersionByInvariantId(any())).thenReturn(response); - - Response actualResponse = aaiService.getVersionByInvariantId(any()); - - assertThat(actualResponse).isEqualTo(response); - } - - @Test - public void shouldGetSpecificPnf() { - AaiResponse expectedResponse = new AaiResponse<>(Pnf.builder().build(), null, HttpStatus.SC_OK); - when(aaiClient.getSpecificPnf(anyString())).thenReturn(expectedResponse); - - AaiResponse actualResponse = aaiService.getSpecificPnf(anyString()); - - assertThat(actualResponse).isEqualTo(expectedResponse); - } - - @Test - public void shouldGetPnfData() { - when(aaiClient.getPNFData(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), - anyString())).thenReturn(aaiResponse); - - AaiResponse actualResponse = aaiService.getPNFData(anyString(), anyString(), anyString(), anyString(), - anyString(), anyString(), anyString()); - - assertThat(actualResponse).isEqualTo(aaiResponse); - } - - @Test - public void shouldGetServices() { - org.onap.vid.aai.model.AaiGetServicesRequestModel.Service s1 = - createService("ID1", "V1", "D1"); - org.onap.vid.aai.model.AaiGetServicesRequestModel.Service s2 = - createService("ID2", "V2", "D2"); - - GetServicesAAIRespone services = new GetServicesAAIRespone(); - services.service = Arrays.asList(s1, s2); - - AaiResponse aaiResponseServices = - new AaiResponse<>(services, null, HttpStatus.SC_OK); - - when(aaiClient.getServices()).thenReturn(aaiResponseServices); - - Object actualObjectOfResponse = aaiService.getServices(roleValidator).getT(); - - assertThat(actualObjectOfResponse).isNotNull(); - assertThat(((GetServicesAAIRespone) actualObjectOfResponse).service).allMatch(s -> s.isPermitted); - } - - @Test - public void shouldGetTenants() { - GetTenantsResponse tenant1 = new GetTenantsResponse("REGION_ID1", "CLOUD_OWNER1", - "TENANT_NAME1", "TENANT_ID1", true); - GetTenantsResponse tenant2 = new GetTenantsResponse("REGION_ID2", "CLOUD_OWNER2", - "TENANT_NAME2", "TENANT_ID2", false); - GetTenantsResponse[] tenants = {tenant1, tenant2}; - AaiResponse aaiGetTenantsResponse = new AaiResponse<>(tenants, - null, HttpStatus.SC_OK); - - when(aaiClient.getTenants(anyString(), anyString())).thenReturn(aaiGetTenantsResponse); - when(roleValidator.isTenantPermitted(anyString(), anyString(), anyString())) - .thenReturn(Boolean.TRUE); - - GetTenantsResponse[] actualResponses = aaiService - .getTenants(anyString(), anyString(), roleValidator).getT(); - - assertThat(actualResponses).isNotNull(); - assertThat(actualResponses.length).isEqualTo(2); - assertThat(actualResponses).allMatch(tenant -> tenant.isPermitted); - } - - @Test - public void shouldGetVNFDataWithoutFiltering() { - when(aaiClient.getVNFData(anyString(), anyString(), anyString())).thenReturn(aaiResponse); - - AaiResponse actualResponse = aaiService.getVNFData(anyString(), anyString(), anyString()); + private static final String GLOBAL_CUSTOMER_ID = "GLOBAL_CUSTOMER_ID"; + private static final String CLOUD_REGION_ID = "CLOUD_REGION_ID"; + private static final String VNF_TYPE = "VNF_TYPE"; + private static final String TENANT_ID = "TENANT_ID"; + private static final String TENANT_NAME = "TENANT_NAME"; + private static final String SERVICE_TYPE = "SERVICE_TYPE"; + private static final String CORRECT_VALUE = "CORRECT_VALUE"; + private static final String SUBSCRIBER_ID = "SUBSCRIBER_ID_EXPECTED"; + private static final String STATUS_TEXT = "STATUS_TEXT"; + private static final String GLOBAL_SUBSCRIBER_ID = "GLOBAL_SUBSCRIBER_ID"; + private static final String GLOBAL_SUBSCRIBER_ID_NULL_RESPONSE = "ID_NULL"; + private static final String VNF_INSTANCE_ID_OK = "VNF_INSTANCE_ID_OK"; + private static final String VNF_INSTANCE_ID_FAIL = "VNF_INSTANCE_ID_FAIL"; + private static final String PARENT_NAME = "PARENT_NAME"; + private static final String PARENT_ID = "PARENT_ID"; + private static final String INVARIANT_ID = "INVARIANT_ID"; + private static final String GROUP_TYPE_FAILING = "GROUP_TYPE_FAILING"; + private static final String GROUP_ROLE_OK = "GROUP_ROLE_OK"; + private static final String GROUP_ROLE_FAILING = "GROUP_ROLE_FAILING"; + private static final String group_type_ok = "GROUP_TYPE_OK"; + private static final String CLOUD_TYPE = "CLOUD_TYPE"; + + @Mock + private HttpResponse responseAllSubscribers; + @Mock + private AaiResponse aaiResponseOpEnvList; + @Mock + private AaiResponse aaiResponse; + @Mock + private AaiResponse aaiResponseJsonNode; + @Mock + private RoleValidator roleValidator; + + @Mock + private AaiClientInterface aaiClient; + @Mock + private AaiOverTLSClientInterface aaiOverTLSClient; + @Mock + private AaiResponseTranslator aaiResponseTranslator; + @Mock + private AAIServiceTree aaiServiceTree; + @Spy + private ExecutorService executorService = Executors.newFixedThreadPool(1); + + @InjectMocks + private AaiServiceImpl aaiService; + + @Test + public void shouldGetFullSubscriberListWithoutValidator() { + when(aaiOverTLSClient.getAllSubscribers()).thenReturn(responseAllSubscribers); + + HttpResponse actualResponse = aaiService.getFullSubscriberList(); + + assertThat(actualResponse).isEqualTo(responseAllSubscribers); + } + + @Test + public void shouldGetFullSubscriberListWithValidator() { + Subscriber subscriber = createSubscriber(); + SubscriberList subscriberList = new SubscriberList(Collections.singletonList(subscriber)); + + when(aaiOverTLSClient.getAllSubscribers()).thenReturn(responseAllSubscribers); + when(responseAllSubscribers.getBody()).thenReturn(subscriberList); + when(responseAllSubscribers.getStatusText()).thenReturn(STATUS_TEXT); + when(responseAllSubscribers.getStatus()).thenReturn(HttpStatus.SC_OK); + SubscriberFilteredResults expectedSubscribers = new SubscriberFilteredResults(roleValidator, subscriberList, + STATUS_TEXT, HttpStatus.SC_OK); + + SubscriberFilteredResults actualSubscribers = aaiService.getFullSubscriberList(roleValidator); + + assertThat(actualSubscribers.getHttpCode()).isEqualTo(expectedSubscribers.getHttpCode()); + assertThat(actualSubscribers.getErrorMessage()).isEqualTo(expectedSubscribers.getErrorMessage()); + } + + @Test + public void shouldGetOperationalEnvironments() { + when(aaiClient.getOperationalEnvironments(anyString(), anyString())) + .thenReturn(aaiResponseOpEnvList); + + AaiResponse expectedEnvList = + aaiService.getOperationalEnvironments(anyString(), anyString()); + + assertThat(expectedEnvList).isEqualTo(aaiResponseOpEnvList); + } + + @Test + public void shouldGetSubscriberData() { + Services services = createAaiResponseServices(); + AaiResponse aaiResponseServices = new AaiResponse<>(services, null, HttpStatus.SC_OK); + + when(aaiClient.getSubscriberData(SUBSCRIBER_ID, false)).thenReturn(aaiResponseServices); + when(roleValidator.isServicePermitted(eq(GLOBAL_CUSTOMER_ID), anyString())).thenReturn(Boolean.TRUE); + + AaiResponse actualResponse = aaiService.getSubscriberData(SUBSCRIBER_ID, roleValidator, false); + List actualServiceSubscriptions = ((AaiResponse) actualResponse) + .getT().serviceSubscriptions.serviceSubscription; + + assertThat(actualResponse).isEqualTo(aaiResponseServices); + assertThat(actualServiceSubscriptions).allMatch(s -> s.isPermitted); + } + + @Test + public void shouldGetServiceInstanceEmptySearchResults() { + ServiceInstancesSearchResults serviceInstancesSearchResults = new ServiceInstancesSearchResults(); + AaiResponse emptyResponse = new AaiResponse<>(serviceInstancesSearchResults, + null, HttpStatus.SC_OK); + + AaiResponse actualResponse = aaiService.getServiceInstanceSearchResults(null, null, + null, null, null); + + assertThat(actualResponse).isEqualToComparingFieldByFieldRecursively(emptyResponse); + } + + @Test + public void shouldGetVersionByInvariantId() { + Response response = mock(Response.class); + when(aaiClient.getVersionByInvariantId(any())).thenReturn(response); + + Response actualResponse = aaiService.getVersionByInvariantId(any()); + + assertThat(actualResponse).isEqualTo(response); + } + + @Test + public void shouldGetSpecificPnf() { + AaiResponse expectedResponse = new AaiResponse<>(Pnf.builder().build(), null, HttpStatus.SC_OK); + when(aaiClient.getSpecificPnf(anyString())).thenReturn(expectedResponse); + + AaiResponse actualResponse = aaiService.getSpecificPnf(anyString()); - assertThat(actualResponse).isEqualTo(aaiResponse); - } + assertThat(actualResponse).isEqualTo(expectedResponse); + } - @Test - public void shouldGetVNFDataWithFiltering() { - VnfResult vnfResult1 = createVnfResult("ID1", "generic-vnf"); - VnfResult vnfResult2 = createVnfResult("ID2", "service-instance"); - VnfResult vnfResult3 = createVnfResult("ID3", "anything-else"); + @Test + public void shouldGetPnfData() { + when(aaiClient.getPNFData(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), + anyString())).thenReturn(aaiResponse); - List vnfResults = Arrays.asList(vnfResult1, vnfResult2, vnfResult3); - AaiResponse aaiResponseGetVnfResponse = createAaiResponseVnfResponse(vnfResults); + AaiResponse actualResponse = aaiService.getPNFData(anyString(), anyString(), anyString(), anyString(), + anyString(), anyString(), anyString()); - vnfResults = Arrays.asList(vnfResult1, vnfResult2); - AaiResponse expectedResponseWithReturnedVnfs = createAaiResponseVnfResponse(vnfResults); - AaiResponse expectedResponseWithoutReturnedVnfs = new AaiResponse(); + assertThat(actualResponse).isEqualTo(aaiResponse); + } - when(aaiClient.getVNFData(GLOBAL_SUBSCRIBER_ID, SERVICE_TYPE)).thenReturn(aaiResponseGetVnfResponse); - when(aaiClient.getVNFData(GLOBAL_SUBSCRIBER_ID_NULL_RESPONSE, SERVICE_TYPE)).thenReturn(null); + @Test + public void shouldGetServices() { + org.onap.vid.aai.model.AaiGetServicesRequestModel.Service s1 = + createService("ID1", "V1", "D1"); + org.onap.vid.aai.model.AaiGetServicesRequestModel.Service s2 = + createService("ID2", "V2", "D2"); - AaiResponse actualResponseWithReturnedVnfs = - aaiService.getVNFData(GLOBAL_SUBSCRIBER_ID, SERVICE_TYPE); - AaiResponse actualResponseWithoutReturnedVnfs = - aaiService.getVNFData(GLOBAL_SUBSCRIBER_ID_NULL_RESPONSE, SERVICE_TYPE); + GetServicesAAIRespone services = new GetServicesAAIRespone(); + services.service = Arrays.asList(s1, s2); - assertThat(actualResponseWithReturnedVnfs) - .isEqualToComparingFieldByFieldRecursively(expectedResponseWithReturnedVnfs); - assertThat(actualResponseWithoutReturnedVnfs) - .isEqualToComparingFieldByField(expectedResponseWithoutReturnedVnfs); - } + AaiResponse aaiResponseServices = + new AaiResponse<>(services, null, HttpStatus.SC_OK); - @Test - public void shouldGetAaiZones() { - when(aaiClient.getAllAicZones()).thenReturn(aaiResponse); + when(aaiClient.getServices()).thenReturn(aaiResponseServices); - AaiResponse actualResponse = aaiService.getAaiZones(); + Object actualObjectOfResponse = aaiService.getServices(roleValidator).getT(); - assertThat(actualResponse).isEqualTo(aaiResponse); - } - - @Test - public void shouldGetAicZoneForPnf() { - ServiceRelationships relationsService = createServiceRelationships(); - AaiResponse expectedServiceInstanceResp = - new AaiResponse<>(relationsService, null, HttpStatus.SC_OK); - AaiResponse expectedResponse = new AaiResponse<>(CORRECT_VALUE, null, HttpStatus.SC_OK); + assertThat(actualObjectOfResponse).isNotNull(); + assertThat(((GetServicesAAIRespone) actualObjectOfResponse).service).allMatch(s -> s.isPermitted); + } - when(aaiClient.getServiceInstance(anyString(), anyString(), anyString())) - .thenReturn(expectedServiceInstanceResp); + @Test + public void shouldGetTenants() { + GetTenantsResponse tenant1 = new GetTenantsResponse("REGION_ID1", "CLOUD_OWNER1", + "TENANT_NAME1", "TENANT_ID1", true); + GetTenantsResponse tenant2 = new GetTenantsResponse("REGION_ID2", "CLOUD_OWNER2", + "TENANT_NAME2", "TENANT_ID2", false); + GetTenantsResponse[] tenants = {tenant1, tenant2}; + AaiResponse aaiGetTenantsResponse = new AaiResponse<>(tenants, + null, HttpStatus.SC_OK); - AaiResponse actualResponse = aaiService.getAicZoneForPnf(anyString(), anyString(), anyString()); + when(aaiClient.getTenants(anyString(), anyString())).thenReturn(aaiGetTenantsResponse); + when(roleValidator.isTenantPermitted(anyString(), anyString(), anyString())) + .thenReturn(Boolean.TRUE); - assertThat(actualResponse).isEqualToComparingFieldByField(expectedResponse); - } + GetTenantsResponse[] actualResponses = aaiService + .getTenants(anyString(), anyString(), roleValidator).getT(); - @Test - public void shouldGetNodeTemplateInstances() { - when(aaiClient.getNodeTemplateInstances(anyString(), anyString(), anyString(), - anyString(), anyString())).thenReturn(aaiResponse); + assertThat(actualResponses).isNotNull(); + assertThat(actualResponses.length).isEqualTo(2); + assertThat(actualResponses).allMatch(tenant -> tenant.isPermitted); + } - AaiResponse expectedResponse = aaiService.getNodeTemplateInstances(anyString(), anyString(), anyString(), - anyString(), anyString()); + @Test + public void shouldGetVNFDataWithoutFiltering() { + when(aaiClient.getVNFData(anyString(), anyString(), anyString())).thenReturn(aaiResponse); - assertThat(expectedResponse).isEqualTo(aaiResponse); - } + AaiResponse actualResponse = aaiService.getVNFData(anyString(), anyString(), anyString()); - @Test - public void shouldGetNetworkCollectionDetails() { - when(aaiClient.getNetworkCollectionDetails(anyString())).thenReturn(aaiResponse); - - AaiResponse expectedResponse = aaiService.getNetworkCollectionDetails(anyString()); + assertThat(actualResponse).isEqualTo(aaiResponse); + } - assertThat(expectedResponse).isEqualTo(aaiResponse); - } + @Test + public void shouldGetVNFDataWithFiltering() { + VnfResult vnfResult1 = createVnfResult("ID1", "generic-vnf"); + VnfResult vnfResult2 = createVnfResult("ID2", "service-instance"); + VnfResult vnfResult3 = createVnfResult("ID3", "anything-else"); - @Test - public void shouldGetInstanceGroupsByCloudRegion() { - AaiGetInstanceGroupsByCloudRegion aaiGetInstanceGroupsByCloudRegion = - mock(AaiGetInstanceGroupsByCloudRegion.class); - AaiResponse expectedResponse = - new AaiResponse<>(aaiGetInstanceGroupsByCloudRegion, null, HttpStatus.SC_OK); + List vnfResults = Arrays.asList(vnfResult1, vnfResult2, vnfResult3); + AaiResponse aaiResponseGetVnfResponse = createAaiResponseVnfResponse(vnfResults); - when(aaiClient.getInstanceGroupsByCloudRegion(anyString(), anyString(), anyString())) - .thenReturn(expectedResponse); - AaiResponse actualResponse = - aaiService.getInstanceGroupsByCloudRegion(anyString(), anyString(), anyString()); + vnfResults = Arrays.asList(vnfResult1, vnfResult2); + AaiResponse expectedResponseWithReturnedVnfs = createAaiResponseVnfResponse(vnfResults); + AaiResponse expectedResponseWithoutReturnedVnfs = new AaiResponse(); - assertThat(actualResponse).isEqualTo(expectedResponse); - } + when(aaiClient.getVNFData(GLOBAL_SUBSCRIBER_ID, SERVICE_TYPE)).thenReturn(aaiResponseGetVnfResponse); + when(aaiClient.getVNFData(GLOBAL_SUBSCRIBER_ID_NULL_RESPONSE, SERVICE_TYPE)).thenReturn(null); - @Test - public void shouldGetServicesByDistributionStatus() { - Result resultWithModelType = createResult("MODEL_TYPE1", "1"); - Result resultWithEmptyModelType = createResult(null, "2"); - Result resultWithoutModel = new Result(); - resultWithoutModel.setModel(null); - Result resultWithoutValidModel = createResultWithoutValidModel(); - List results = Arrays.asList(resultWithModelType, resultWithEmptyModelType, resultWithoutModel, - resultWithoutValidModel); + AaiResponse actualResponseWithReturnedVnfs = + aaiService.getVNFData(GLOBAL_SUBSCRIBER_ID, SERVICE_TYPE); + AaiResponse actualResponseWithoutReturnedVnfs = + aaiService.getVNFData(GLOBAL_SUBSCRIBER_ID_NULL_RESPONSE, SERVICE_TYPE); - GetServiceModelsByDistributionStatusResponse serviceModels = new GetServiceModelsByDistributionStatusResponse(); - serviceModels.setResults(results); + assertThat(actualResponseWithReturnedVnfs) + .isEqualToComparingFieldByFieldRecursively(expectedResponseWithReturnedVnfs); + assertThat(actualResponseWithoutReturnedVnfs) + .isEqualToComparingFieldByField(expectedResponseWithoutReturnedVnfs); + } - AaiResponse serviceModelsByDistributionStatusResponse - = new AaiResponse<>(serviceModels, null, HttpStatus.SC_OK); + @Test + public void shouldGetAaiZones() { + when(aaiClient.getAllAicZones()).thenReturn(aaiResponse); - Service[] expectedServices = { - createService("MODEL_TYPE1", "1"), - createService("", "2") - }; + AaiResponse actualResponse = aaiService.getAaiZones(); - when(aaiClient.getServiceModelsByDistributionStatus()).thenReturn(serviceModelsByDistributionStatusResponse); - Collection actualServices = aaiService.getServicesByDistributionStatus(); + assertThat(actualResponse).isEqualTo(aaiResponse); + } + + @Test + public void shouldGetAicZoneForPnf() { + ServiceRelationships relationsService = createServiceRelationships(); + AaiResponse expectedServiceInstanceResp = + new AaiResponse<>(relationsService, null, HttpStatus.SC_OK); + AaiResponse expectedResponse = new AaiResponse<>(CORRECT_VALUE, null, HttpStatus.SC_OK); + + when(aaiClient.getServiceInstance(anyString(), anyString(), anyString())) + .thenReturn(expectedServiceInstanceResp); + + AaiResponse actualResponse = aaiService.getAicZoneForPnf(anyString(), anyString(), anyString()); - assertThat(actualServices) - .hasSize(2) - .usingFieldByFieldElementComparator() - .containsExactly(expectedServices); - } + assertThat(actualResponse).isEqualToComparingFieldByField(expectedResponse); + } + + @Test + public void shouldGetNodeTemplateInstances() { + when(aaiClient.getNodeTemplateInstances(anyString(), anyString(), anyString(), + anyString(), anyString())).thenReturn(aaiResponse); + + AaiResponse expectedResponse = aaiService.getNodeTemplateInstances(anyString(), anyString(), anyString(), + anyString(), anyString()); + + assertThat(expectedResponse).isEqualTo(aaiResponse); + } - @Test - public void shouldReturnEmptyListOfServices() { - AaiResponse emptyResponse - = new AaiResponse<>(null, null, HttpStatus.SC_OK); + @Test + public void shouldGetNetworkCollectionDetails() { + when(aaiClient.getNetworkCollectionDetails(anyString())).thenReturn(aaiResponse); + + AaiResponse expectedResponse = aaiService.getNetworkCollectionDetails(anyString()); + + assertThat(expectedResponse).isEqualTo(aaiResponse); + } + + @Test + public void shouldGetInstanceGroupsByCloudRegion() { + AaiGetInstanceGroupsByCloudRegion aaiGetInstanceGroupsByCloudRegion = + mock(AaiGetInstanceGroupsByCloudRegion.class); + AaiResponse expectedResponse = + new AaiResponse<>(aaiGetInstanceGroupsByCloudRegion, null, HttpStatus.SC_OK); - when(aaiClient.getServiceModelsByDistributionStatus()).thenReturn(emptyResponse); - Collection actualServices = aaiService.getServicesByDistributionStatus(); + when(aaiClient.getInstanceGroupsByCloudRegion(anyString(), anyString(), anyString())) + .thenReturn(expectedResponse); + AaiResponse actualResponse = + aaiService.getInstanceGroupsByCloudRegion(anyString(), anyString(), anyString()); - assertThat(actualServices).isEqualTo(Collections.EMPTY_LIST); - } + assertThat(actualResponse).isEqualTo(expectedResponse); + } - @Test - public void shouldGetServiceInstanceAssociatedPnfs() { - ServiceRelationships relationsList = createServiceRelationships(); - LogicalLinkResponse logicalLinkResponse = new LogicalLinkResponse(); - logicalLinkResponse.setRelationshipList(relationsList.getRelationshipList()); + @Test + public void shouldGetServicesByDistributionStatus() { + Result resultWithModelType = createResult("MODEL_TYPE1", "1"); + Result resultWithEmptyModelType = createResult(null, "2"); + Result resultWithoutModel = new Result(); + resultWithoutModel.setModel(null); + Result resultWithoutValidModel = createResultWithoutValidModel(); + List results = Arrays.asList(resultWithModelType, resultWithEmptyModelType, resultWithoutModel, + resultWithoutValidModel); - AaiResponse aaiResponseLogicalLinkResponse = - new AaiResponse<>(logicalLinkResponse, null, HttpStatus.SC_OK); - AaiResponse aaiResponseServiceRelations = - new AaiResponse<>(relationsList, null, HttpStatus.SC_OK); + GetServiceModelsByDistributionStatusResponse serviceModels = new GetServiceModelsByDistributionStatusResponse(); + serviceModels.setResults(results); - when(aaiClient.getServiceInstance(anyString(), anyString(), anyString())) - .thenReturn(aaiResponseServiceRelations); - when(aaiClient.getLogicalLink(anyString())).thenReturn(aaiResponseLogicalLinkResponse); + AaiResponse serviceModelsByDistributionStatusResponse + = new AaiResponse<>(serviceModels, null, HttpStatus.SC_OK); + + Service[] expectedServices = { + createService("MODEL_TYPE1", "1"), + createService("", "2") + }; + + when(aaiClient.getServiceModelsByDistributionStatus()).thenReturn(serviceModelsByDistributionStatusResponse); + Collection actualServices = aaiService.getServicesByDistributionStatus(); + + assertThat(actualServices) + .hasSize(2) + .usingFieldByFieldElementComparator() + .containsExactly(expectedServices); + } + @Test + public void shouldReturnEmptyListOfServices() { + AaiResponse emptyResponse + = new AaiResponse<>(null, null, HttpStatus.SC_OK); - List expectedPnfs = Collections.singletonList(CORRECT_VALUE); - List actualPnfs = aaiService.getServiceInstanceAssociatedPnfs(anyString(), anyString(), anyString()); + when(aaiClient.getServiceModelsByDistributionStatus()).thenReturn(emptyResponse); + Collection actualServices = aaiService.getServicesByDistributionStatus(); - assertThat(actualPnfs).isEqualTo(expectedPnfs); - } + assertThat(actualServices).isEqualTo(Collections.EMPTY_LIST); + } - @Test - public void shouldGetPortMirroringConfigData() { - AaiResponseTranslator.PortMirroringConfigData expectedData - = mock(AaiResponseTranslator.PortMirroringConfigData.class); + @Test + public void shouldGetServiceInstanceAssociatedPnfs() { + ServiceRelationships relationsList = createServiceRelationships(); + LogicalLinkResponse logicalLinkResponse = new LogicalLinkResponse(); + logicalLinkResponse.setRelationshipList(relationsList.getRelationshipList()); - when(aaiClient.getCloudRegionAndSourceByPortMirroringConfigurationId(anyString())).thenReturn(aaiResponseJsonNode); - when(aaiResponseTranslator.extractPortMirroringConfigData(aaiResponseJsonNode)).thenReturn(expectedData); + AaiResponse aaiResponseLogicalLinkResponse = + new AaiResponse<>(logicalLinkResponse, null, HttpStatus.SC_OK); + AaiResponse aaiResponseServiceRelations = + new AaiResponse<>(relationsList, null, HttpStatus.SC_OK); + + when(aaiClient.getServiceInstance(anyString(), anyString(), anyString())) + .thenReturn(aaiResponseServiceRelations); + when(aaiClient.getLogicalLink(anyString())).thenReturn(aaiResponseLogicalLinkResponse); - AaiResponseTranslator.PortMirroringConfigData actualData = aaiService.getPortMirroringConfigData(anyString()); - assertThat(actualData).isEqualTo(expectedData); - } + List expectedPnfs = Collections.singletonList(CORRECT_VALUE); + List actualPnfs = aaiService.getServiceInstanceAssociatedPnfs(anyString(), anyString(), anyString()); + assertThat(actualPnfs).isEqualTo(expectedPnfs); + } - @Test - public void shouldGetInstanceGroupsByVnfInstanceId() { - List instanceGroupInfo = Collections.singletonList(new InstanceGroupInfo(CORRECT_VALUE)); - AaiGetRelatedInstanceGroupsByVnfId relatedInstanceGroups = new AaiGetRelatedInstanceGroupsByVnfId(); - relatedInstanceGroups.setRelationshipList(createRelationshipList()); - - AaiResponse correctCodeResponse = - new AaiResponse<>(relatedInstanceGroups, null, HttpStatus.SC_OK); - - AaiResponse> expectedCorrectCodeResponse = - new AaiResponse<>(instanceGroupInfo, null, HttpStatus.SC_OK); - AaiResponse expectedIncorrectCodeResponse = - new AaiResponse<>(relatedInstanceGroups, null, HttpStatus.SC_PAYMENT_REQUIRED); - List expectedCorrectResponseObject = expectedCorrectCodeResponse.getT(); - - when(aaiClient.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_OK)).thenReturn(correctCodeResponse); - when(aaiClient.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_FAIL)).thenReturn(expectedIncorrectCodeResponse); - - AaiResponse actualCorrectCodeResponse = aaiService.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_OK); - AaiResponse actualIncorrectCodeResponse = aaiService.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_FAIL); - - List actualCorrectResponseObject = - (List) actualCorrectCodeResponse.getT(); - - assertThat(actualCorrectResponseObject) - .usingFieldByFieldElementComparator() - .hasSameElementsAs(expectedCorrectResponseObject); - - assertThat(actualIncorrectCodeResponse).isEqualTo(expectedIncorrectCodeResponse); - } - - @Test - public void shouldGetHomingDataByVfModule() { - GetTenantsResponse expectedResponse = new GetTenantsResponse(); - when(aaiClient.getHomingDataByVfModule(anyString(), anyString())).thenReturn(expectedResponse); - - GetTenantsResponse actualResponse = aaiService.getHomingDataByVfModule(anyString(), anyString()); - assertThat(actualResponse).isEqualTo(expectedResponse); - } - - @Test - public void shouldSearchGroupMembers() { - Properties properties = createProperties(); - Map regionsAndTenants = createRegionsAndTenantsMap(properties); - - AAITreeNode validTreeNode = new AAITreeNode(); - addAdditionalPropertiesToAaiTreeNode(validTreeNode); - List validNodes = Arrays.asList(validTreeNode, validTreeNode); - - AAITreeNode validBranch = createTree(validNodes); - addAdditionalPropertiesToAaiTreeNode(validBranch); - List testedBranches = Collections.singletonList(validBranch); - - AAITreeNode testedTree = createTree(testedBranches); - - RelatedVnf expectedVnf = createExpectedVnf(validBranch); - List expectedResult = Collections.singletonList(expectedVnf); - - when(aaiServiceTree.buildAAITree(anyString(), any())).thenReturn(Collections.singletonList(testedTree)); - when(aaiClient.getCloudRegionAndTenantByVnfId(anyString())).thenReturn(regionsAndTenants); - - List actualGroupMembers = aaiService.searchGroupMembers(GLOBAL_CUSTOMER_ID, SERVICE_TYPE, - INVARIANT_ID, GROUP_TYPE_FAILING, GROUP_ROLE_FAILING); - - assertThat(actualGroupMembers) - .usingFieldByFieldElementComparator() - .hasSameElementsAs(expectedResult); - } - - @Test - public void shouldGetPortMirroringSourcePorts() { - PortDetailsTranslator.PortDetails details = mock(PortDetailsTranslator.PortDetails.class); - List expectedDetailsList = Arrays.asList( - details, details, details - ); - - when(aaiClient.getPortMirroringSourcePorts(anyString())).thenReturn(expectedDetailsList); - List actualDetails = aaiService.getPortMirroringSourcePorts(anyString()); - - assertThat(actualDetails).isEqualTo(expectedDetailsList); - } - - @Test - public void shouldGetAAIServiceTree() throws JsonProcessingException { - ServiceInstance serviceInstance = mock(ServiceInstance.class); - String expectedResult = new ObjectMapper().writeValueAsString(serviceInstance); - - when(aaiServiceTree.getServiceInstanceTopology(anyString(), anyString(), anyString())) - .thenReturn(serviceInstance); - String actualResult = aaiService.getAAIServiceTree(anyString(), anyString(), anyString()); - - assertThat(actualResult).isEqualTo(expectedResult); - } - - @NotNull - private Map createRegionsAndTenantsMap(Properties properties) { - Map regionsAndTenants = new HashMap<>(); - regionsAndTenants.put("tenant", properties); - regionsAndTenants.put("cloud-region", properties); - return regionsAndTenants; - } - - private Properties createProperties() { - Properties properties = new Properties(); - properties.setTenantId(TENANT_ID); - properties.setTenantName(TENANT_NAME); - properties.setCloudRegionId(CLOUD_REGION_ID); - return properties; - } - - @NotNull - private RelatedVnf createExpectedVnf(AAITreeNode validBranch) { - RelatedVnf expectedVnf = RelatedVnf.from(validBranch); - expectedVnf.setTenantId(TENANT_ID); - expectedVnf.setTenantName(TENANT_NAME); - expectedVnf.setLcpCloudRegionId(CLOUD_REGION_ID); - expectedVnf.setServiceInstanceId(PARENT_ID); - expectedVnf.setServiceInstanceName(PARENT_NAME); - expectedVnf.setInstanceType(VNF_TYPE); - - return expectedVnf; - } - - - private AAITreeNode createTree(List children) { - AAITreeNode tree = new AAITreeNode(); - tree.addChildren(children); - tree.setId(PARENT_ID); - tree.setName(PARENT_NAME); - return tree; - } - - private void addAdditionalPropertiesToAaiTreeNode(AAITreeNode tree) { - Map additionalProperties = new HashMap<>(); - additionalProperties.put("instance-group-role", GROUP_ROLE_OK); - additionalProperties.put("instance-group-type", group_type_ok); - additionalProperties.put("vnf-type", VNF_TYPE); - additionalProperties.put("cloud-region", CLOUD_TYPE); - tree.setAdditionalProperties(additionalProperties); - } - - private org.onap.vid.asdc.beans.Service createService(String category, String suffix) { - return new Service.ServiceBuilder() - .setUuid("MODELVER_VERSION_ID" + suffix) - .setInvariantUUID("MODEL_INVARIANT_NAME" + suffix) - .setCategory(category) - .setVersion("MODELVER_VERSION" + suffix) - .setName("MODELVER_NAME" + suffix) - .setDistributionStatus("MODELVER_DIST_STATUS" + suffix) - .setToscaModelURL(null) - .setLifecycleState(null) - .setArtifacts(null) - .setResources(null) - .build(); - } - - @NotNull - private Result createResultWithoutValidModel() { - ModelVers modelVers = new ModelVers(); - modelVers.setModelVer(Collections.singletonList(new ModelVer())); - - Model model = new Model(); - model.setModelVers(modelVers); - - Result result1 = new Result(); - result1.setModel(model); - return result1; - } - - @NotNull - private Result createResult(String modelType, String suffix) { - ModelVer modelVer = new ModelVer(); - modelVer.setModelVersionId("MODELVER_VERSION_ID" + suffix); - modelVer.setModelVersion("MODELVER_VERSION" + suffix); - modelVer.setModelName("MODELVER_NAME" + suffix); - modelVer.setDistributionStatus("MODELVER_DIST_STATUS" + suffix); - - ModelVers modelVers = new ModelVers(); - modelVers.setModelVer(Collections.singletonList(modelVer)); - - Model model = new Model(); - model.setModelType(modelType); - model.setModelInvariantId("MODEL_INVARIANT_NAME" + suffix); - model.setModelVers(modelVers); - - Result result = new Result(); - result.setModel(model); - return result; - } - - @NotNull - private ServiceRelationships createServiceRelationships() { - RelationshipList relationsList = createRelationshipList(CORRECT_VALUE); - ServiceRelationships relationsService = new ServiceRelationships(); - relationsService.setRelationshipList(relationsList); - return relationsService; - } - - @NotNull - private RelationshipList createRelationshipList(String expectedValue) { - List relationsDataList = createRelationshipDataList(expectedValue); - return createRelationshipList(relationsDataList); - } - - @NotNull - private RelationshipList createRelationshipList(List relationsDataList) { - Relationship relation1 = crateRelationship("any", relationsDataList); - Relationship relation2 = crateRelationship("zone", relationsDataList); - Relationship relation3 = crateRelationship("logical-link", relationsDataList); - Relationship relation4 = crateRelationship("lag-interface", relationsDataList); - Relationship relation5 = crateRelationship("pnf", relationsDataList); - - RelationshipList relationsList = new RelationshipList(); - relationsList.setRelationship(Arrays.asList(relation1, relation2, relation3, relation4, relation5)); - return relationsList; - } - - @NotNull - private List createRelationshipDataList(String expectedValue) { - RelationshipData relationData1 = createRelationshipData("any-key", "incorrect_key"); - RelationshipData relationData2 = createRelationshipData("zone.zone-id", expectedValue); - RelationshipData relationData3 = createRelationshipData("logical-link.link-name", expectedValue); - RelationshipData relationData4 = createRelationshipData("pnf.pnf-name", expectedValue); - - return Arrays.asList(relationData1, relationData2, relationData3, relationData4); - } - - @NotNull - private Relationship crateRelationship(String relatedTo, List relationsDataList) { - Relationship relation = new Relationship(); - relation.setRelatedTo(relatedTo); - relation.setRelationDataList(relationsDataList); - return relation; - } - - @NotNull - private RelationshipData createRelationshipData(String key, String value) { - RelationshipData relationData = new RelationshipData(); - relationData.setRelationshipKey(key); - relationData.setRelationshipValue(value); - return relationData; - } - - private org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.RelationshipList createRelationshipList() { - RelatedToProperty property1 = - createRelatedToProperty("instance-group.instance-group-name", CORRECT_VALUE); - RelatedToProperty property2 = - createRelatedToProperty("anything-key", "anything-value"); - List properties = Arrays.asList(property1, property2); - - org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship relationship1 = - createRelationship("instance-group", properties); - org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship relationship2 = - createRelationship("any-key", properties); - - List relationships = - Arrays.asList(relationship1, relationship2); - - org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.RelationshipList relationshipList = - new org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.RelationshipList(); - relationshipList.setRelationship(relationships); - - return relationshipList; - } - - @NotNull - private org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship createRelationship(String relatedTo, - List relatedToPropertyList) { - org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship relationship1 = - new org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship(); - relationship1.setRelatedTo(relatedTo); - relationship1.setRelatedToPropertyList(relatedToPropertyList); - return relationship1; - } - - @NotNull - private RelatedToProperty createRelatedToProperty(String key, String value) { - RelatedToProperty prop = new RelatedToProperty(); - prop.setPropertyKey(key); - prop.setPropertyValue(value); - return prop; - } - - @NotNull - private AaiResponse createAaiResponseVnfResponse(List vnfResults) { - AaiGetVnfResponse vnfResponse = new AaiGetVnfResponse(); - vnfResponse.setResults(vnfResults); - return new AaiResponse<>(vnfResponse, null, HttpStatus.SC_OK); - } - - private VnfResult createVnfResult(String id, String nodeType) { - VnfResult result = new VnfResult(); - result.setJsonId(id); - result.setJsonNodeType(nodeType); - return result; - } - - - private org.onap.vid.aai.model.AaiGetServicesRequestModel.Service createService(String serviceId, - String resourceVersion, - String serviceDescription) { - org.onap.vid.aai.model.AaiGetServicesRequestModel.Service service - = new org.onap.vid.aai.model.AaiGetServicesRequestModel.Service(); - service.isPermitted = false; - service.resourceVersion = resourceVersion; - service.serviceDescription = serviceDescription; - service.serviceId = serviceId; - return service; - } - - @NotNull - private Services createAaiResponseServices() { - ServiceSubscription sub1 = new ServiceSubscription(); - sub1.isPermitted = false; - sub1.serviceType = "serviceSubsType1"; - - ServiceSubscription sub2 = new ServiceSubscription(); - sub2.isPermitted = true; - sub2.serviceType = "serviceSubsType2"; - - ServiceSubscriptions serviceSubs = new ServiceSubscriptions(); - serviceSubs.serviceSubscription = Collections.singletonList(sub2); - - Services services = new Services(); - services.globalCustomerId = GLOBAL_CUSTOMER_ID; - services.resourceVersion = "v-1"; - services.subscriberName = "name-1"; - services.subscriberType = "type-1"; - services.serviceSubscriptions = serviceSubs; - return services; - } - - @NotNull - private Subscriber createSubscriber() { - Subscriber subscriber = new Subscriber(); - subscriber.globalCustomerId = "id-1"; - subscriber.resourceVersion = "v-1"; - subscriber.subscriberName = "name-1"; - subscriber.subscriberType = "type-1"; - return subscriber; - } + @Test + public void shouldGetPortMirroringConfigData() { + AaiResponseTranslator.PortMirroringConfigData expectedData + = mock(AaiResponseTranslator.PortMirroringConfigData.class); + + when(aaiClient.getCloudRegionAndSourceByPortMirroringConfigurationId(anyString())) + .thenReturn(aaiResponseJsonNode); + when(aaiResponseTranslator.extractPortMirroringConfigData(aaiResponseJsonNode)).thenReturn(expectedData); + + AaiResponseTranslator.PortMirroringConfigData actualData = aaiService.getPortMirroringConfigData(anyString()); + assertThat(actualData).isEqualTo(expectedData); + } + + + @Test + public void shouldGetInstanceGroupsByVnfInstanceId() { + List instanceGroupInfo = Collections.singletonList(new InstanceGroupInfo(CORRECT_VALUE)); + AaiGetRelatedInstanceGroupsByVnfId relatedInstanceGroups = new AaiGetRelatedInstanceGroupsByVnfId(); + relatedInstanceGroups.setRelationshipList(createRelationshipList()); + + AaiResponse correctCodeResponse = + new AaiResponse<>(relatedInstanceGroups, null, HttpStatus.SC_OK); + + AaiResponse> expectedCorrectCodeResponse = + new AaiResponse<>(instanceGroupInfo, null, HttpStatus.SC_OK); + AaiResponse expectedIncorrectCodeResponse = + new AaiResponse<>(relatedInstanceGroups, null, HttpStatus.SC_PAYMENT_REQUIRED); + List expectedCorrectResponseObject = expectedCorrectCodeResponse.getT(); + + when(aaiClient.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_OK)).thenReturn(correctCodeResponse); + when(aaiClient.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_FAIL)) + .thenReturn(expectedIncorrectCodeResponse); + + AaiResponse actualCorrectCodeResponse = aaiService.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_OK); + AaiResponse actualIncorrectCodeResponse = aaiService.getInstanceGroupsByVnfInstanceId(VNF_INSTANCE_ID_FAIL); + + List actualCorrectResponseObject = + (List) actualCorrectCodeResponse.getT(); + + assertThat(actualCorrectResponseObject) + .usingFieldByFieldElementComparator() + .hasSameElementsAs(expectedCorrectResponseObject); + + assertThat(actualIncorrectCodeResponse).isEqualTo(expectedIncorrectCodeResponse); + } + + @Test + public void shouldGetHomingDataByVfModule() { + GetTenantsResponse expectedResponse = new GetTenantsResponse(); + when(aaiClient.getHomingDataByVfModule(anyString(), anyString())).thenReturn(expectedResponse); + + GetTenantsResponse actualResponse = aaiService.getHomingDataByVfModule(anyString(), anyString()); + assertThat(actualResponse).isEqualTo(expectedResponse); + } + + @Test + public void shouldSearchGroupMembers() { + Properties properties = createProperties(); + Map regionsAndTenants = createRegionsAndTenantsMap(properties); + + AAITreeNode validTreeNode = new AAITreeNode(); + addAdditionalPropertiesToAaiTreeNode(validTreeNode); + List validNodes = Arrays.asList(validTreeNode, validTreeNode); + + AAITreeNode validBranch = createTree(validNodes); + addAdditionalPropertiesToAaiTreeNode(validBranch); + List testedBranches = Collections.singletonList(validBranch); + + AAITreeNode testedTree = createTree(testedBranches); + + RelatedVnf expectedVnf = createExpectedVnf(validBranch); + List expectedResult = Collections.singletonList(expectedVnf); + + when(aaiServiceTree.buildAAITree(anyString(), isNull(), eq(HttpMethod.GET), any(), anyBoolean())) + .thenReturn(Collections.singletonList(testedTree)); + when(aaiClient.getCloudRegionAndTenantByVnfId(anyString())).thenReturn(regionsAndTenants); + + List actualGroupMembers = aaiService.searchGroupMembers(GLOBAL_CUSTOMER_ID, SERVICE_TYPE, + INVARIANT_ID, GROUP_TYPE_FAILING, GROUP_ROLE_FAILING); + + assertThat(actualGroupMembers) + .usingFieldByFieldElementComparator() + .hasSameElementsAs(expectedResult); + } + + @Test + public void shouldGetPortMirroringSourcePorts() { + PortDetailsTranslator.PortDetails details = mock(PortDetailsTranslator.PortDetails.class); + List expectedDetailsList = Arrays.asList( + details, details, details + ); + + when(aaiClient.getPortMirroringSourcePorts(anyString())).thenReturn(expectedDetailsList); + List actualDetails = aaiService.getPortMirroringSourcePorts(anyString()); + + assertThat(actualDetails).isEqualTo(expectedDetailsList); + } + + @Test + public void shouldGetAAIServiceTree() throws JsonProcessingException { + ServiceInstance serviceInstance = mock(ServiceInstance.class); + String expectedResult = new ObjectMapper().writeValueAsString(serviceInstance); + + when(aaiServiceTree.getServiceInstanceTopology(anyString(), anyString(), anyString())) + .thenReturn(serviceInstance); + String actualResult = aaiService.getAAIServiceTree(anyString(), anyString(), anyString()); + + assertThat(actualResult).isEqualTo(expectedResult); + } + + @NotNull + private Map createRegionsAndTenantsMap(Properties properties) { + Map regionsAndTenants = new HashMap<>(); + regionsAndTenants.put("tenant", properties); + regionsAndTenants.put("cloud-region", properties); + return regionsAndTenants; + } + + private Properties createProperties() { + Properties properties = new Properties(); + properties.setTenantId(TENANT_ID); + properties.setTenantName(TENANT_NAME); + properties.setCloudRegionId(CLOUD_REGION_ID); + return properties; + } + + @NotNull + private RelatedVnf createExpectedVnf(AAITreeNode validBranch) { + RelatedVnf expectedVnf = RelatedVnf.from(validBranch); + expectedVnf.setTenantId(TENANT_ID); + expectedVnf.setTenantName(TENANT_NAME); + expectedVnf.setLcpCloudRegionId(CLOUD_REGION_ID); + expectedVnf.setServiceInstanceId(PARENT_ID); + expectedVnf.setServiceInstanceName(PARENT_NAME); + expectedVnf.setInstanceType(VNF_TYPE); + + return expectedVnf; + } + + + private AAITreeNode createTree(List children) { + AAITreeNode tree = new AAITreeNode(); + tree.addChildren(children); + tree.setId(PARENT_ID); + tree.setName(PARENT_NAME); + tree.setType(SERVICE_INSTANCE); + return tree; + } + + private void addAdditionalPropertiesToAaiTreeNode(AAITreeNode tree) { + Map additionalProperties = new HashMap<>(); + additionalProperties.put("instance-group-role", GROUP_ROLE_OK); + additionalProperties.put("instance-group-type", group_type_ok); + additionalProperties.put("vnf-type", VNF_TYPE); + additionalProperties.put("cloud-region", CLOUD_TYPE); + tree.setAdditionalProperties(additionalProperties); + } + + private org.onap.vid.asdc.beans.Service createService(String category, String suffix) { + return new Service.ServiceBuilder() + .setUuid("MODELVER_VERSION_ID" + suffix) + .setInvariantUUID("MODEL_INVARIANT_NAME" + suffix) + .setCategory(category) + .setVersion("MODELVER_VERSION" + suffix) + .setName("MODELVER_NAME" + suffix) + .setDistributionStatus("MODELVER_DIST_STATUS" + suffix) + .setToscaModelURL(null) + .setLifecycleState(null) + .setArtifacts(null) + .setResources(null) + .build(); + } + + @NotNull + private Result createResultWithoutValidModel() { + ModelVers modelVers = new ModelVers(); + modelVers.setModelVer(Collections.singletonList(new ModelVer())); + + Model model = new Model(); + model.setModelVers(modelVers); + + Result result1 = new Result(); + result1.setModel(model); + return result1; + } + + @NotNull + private Result createResult(String modelType, String suffix) { + ModelVer modelVer = new ModelVer(); + modelVer.setModelVersionId("MODELVER_VERSION_ID" + suffix); + modelVer.setModelVersion("MODELVER_VERSION" + suffix); + modelVer.setModelName("MODELVER_NAME" + suffix); + modelVer.setDistributionStatus("MODELVER_DIST_STATUS" + suffix); + + ModelVers modelVers = new ModelVers(); + modelVers.setModelVer(Collections.singletonList(modelVer)); + + Model model = new Model(); + model.setModelType(modelType); + model.setModelInvariantId("MODEL_INVARIANT_NAME" + suffix); + model.setModelVers(modelVers); + + Result result = new Result(); + result.setModel(model); + return result; + } + + @NotNull + private ServiceRelationships createServiceRelationships() { + RelationshipList relationsList = createRelationshipList(CORRECT_VALUE); + ServiceRelationships relationsService = new ServiceRelationships(); + relationsService.setRelationshipList(relationsList); + return relationsService; + } + + @NotNull + private RelationshipList createRelationshipList(String expectedValue) { + List relationsDataList = createRelationshipDataList(expectedValue); + return createRelationshipList(relationsDataList); + } + + @NotNull + private RelationshipList createRelationshipList(List relationsDataList) { + Relationship relation1 = crateRelationship("any", relationsDataList); + Relationship relation2 = crateRelationship("zone", relationsDataList); + Relationship relation3 = crateRelationship("logical-link", relationsDataList); + Relationship relation4 = crateRelationship("lag-interface", relationsDataList); + Relationship relation5 = crateRelationship("pnf", relationsDataList); + + RelationshipList relationsList = new RelationshipList(); + relationsList.setRelationship(Arrays.asList(relation1, relation2, relation3, relation4, relation5)); + return relationsList; + } + + @NotNull + private List createRelationshipDataList(String expectedValue) { + RelationshipData relationData1 = createRelationshipData("any-key", "incorrect_key"); + RelationshipData relationData2 = createRelationshipData("zone.zone-id", expectedValue); + RelationshipData relationData3 = createRelationshipData("logical-link.link-name", expectedValue); + RelationshipData relationData4 = createRelationshipData("pnf.pnf-name", expectedValue); + + return Arrays.asList(relationData1, relationData2, relationData3, relationData4); + } + + @NotNull + private Relationship crateRelationship(String relatedTo, List relationsDataList) { + Relationship relation = new Relationship(); + relation.setRelatedTo(relatedTo); + relation.setRelationDataList(relationsDataList); + return relation; + } + + @NotNull + private RelationshipData createRelationshipData(String key, String value) { + RelationshipData relationData = new RelationshipData(); + relationData.setRelationshipKey(key); + relationData.setRelationshipValue(value); + return relationData; + } + + private org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.RelationshipList createRelationshipList() { + RelatedToProperty property1 = + createRelatedToProperty("instance-group.instance-group-name", CORRECT_VALUE); + RelatedToProperty property2 = + createRelatedToProperty("anything-key", "anything-value"); + List properties = Arrays.asList(property1, property2); + + org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship relationship1 = + createRelationship("instance-group", properties); + org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship relationship2 = + createRelationship("any-key", properties); + + List relationships = + Arrays.asList(relationship1, relationship2); + + org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.RelationshipList relationshipList = + new org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.RelationshipList(); + relationshipList.setRelationship(relationships); + + return relationshipList; + } + + @NotNull + private org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship createRelationship(String relatedTo, + List relatedToPropertyList) { + org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship relationship1 = + new org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Relationship(); + relationship1.setRelatedTo(relatedTo); + relationship1.setRelatedToPropertyList(relatedToPropertyList); + return relationship1; + } + + @NotNull + private RelatedToProperty createRelatedToProperty(String key, String value) { + RelatedToProperty prop = new RelatedToProperty(); + prop.setKey(key); + prop.setValue(value); + return prop; + } + + @NotNull + private AaiResponse createAaiResponseVnfResponse(List vnfResults) { + AaiGetVnfResponse vnfResponse = new AaiGetVnfResponse(); + vnfResponse.setResults(vnfResults); + return new AaiResponse<>(vnfResponse, null, HttpStatus.SC_OK); + } + + private VnfResult createVnfResult(String id, String nodeType) { + VnfResult result = new VnfResult(); + result.setJsonId(id); + result.setJsonNodeType(nodeType); + return result; + } + + + private org.onap.vid.aai.model.AaiGetServicesRequestModel.Service createService(String serviceId, + String resourceVersion, + String serviceDescription) { + org.onap.vid.aai.model.AaiGetServicesRequestModel.Service service + = new org.onap.vid.aai.model.AaiGetServicesRequestModel.Service(); + service.isPermitted = false; + service.resourceVersion = resourceVersion; + service.serviceDescription = serviceDescription; + service.serviceId = serviceId; + return service; + } + + @NotNull + private Services createAaiResponseServices() { + ServiceSubscription sub1 = new ServiceSubscription(); + sub1.isPermitted = false; + sub1.serviceType = "serviceSubsType1"; + + ServiceSubscription sub2 = new ServiceSubscription(); + sub2.isPermitted = true; + sub2.serviceType = "serviceSubsType2"; + + ServiceSubscriptions serviceSubs = new ServiceSubscriptions(); + serviceSubs.serviceSubscription = Collections.singletonList(sub2); + + Services services = new Services(); + services.globalCustomerId = GLOBAL_CUSTOMER_ID; + services.resourceVersion = "v-1"; + services.subscriberName = "name-1"; + services.subscriberType = "type-1"; + services.serviceSubscriptions = serviceSubs; + return services; + } + + @NotNull + private Subscriber createSubscriber() { + Subscriber subscriber = new Subscriber(); + subscriber.globalCustomerId = "id-1"; + subscriber.resourceVersion = "v-1"; + subscriber.subscriberName = "name-1"; + subscriber.subscriberType = "type-1"; + return subscriber; + } }