From a9b77291648d448aef377f1ca33cf04fe21b9252 Mon Sep 17 00:00:00 2001 From: Stanislav Marszalek Date: Thu, 26 Aug 2021 15:17:11 +0200 Subject: Add tests for AAI and AAI package refactoring - SM Issue-ID: SO-3747 Signed-off-by: Stanislav Marszalek Change-Id: I02d3684c98d563d7f386de2fdf032e935ac42b3f --- so-cnf-adapter-application/pom.xml | 10 + .../cnf/service/CnfAdapterServiceTest.java | 258 +++++++++++++++++---- .../healthcheck/HealthCheckServiceTest.java | 81 +++++++ 3 files changed, 306 insertions(+), 43 deletions(-) create mode 100644 so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/healthcheck/HealthCheckServiceTest.java diff --git a/so-cnf-adapter-application/pom.xml b/so-cnf-adapter-application/pom.xml index cd2d28e..e51144d 100755 --- a/so-cnf-adapter-application/pom.xml +++ b/so-cnf-adapter-application/pom.xml @@ -163,6 +163,16 @@ 2.3.0 pom + + org.junit.jupiter + junit-jupiter + test + + + org.projectlombok + lombok + test + diff --git a/so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java b/so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java index 8e8cd5c..f049310 100644 --- a/so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java +++ b/so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java @@ -20,108 +20,280 @@ package org.onap.so.adapters.cnf.service; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; + +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.InjectMocks; +import org.mockito.ArgumentMatchers; import org.mockito.Mock; import org.onap.so.adapters.cnf.MulticloudConfiguration; import org.onap.so.adapters.cnf.model.BpmnInstanceRequest; +import org.onap.so.adapters.cnf.service.healthcheck.HealthCheckService; +import org.onap.so.adapters.cnf.service.statuscheck.SimpleStatusCheckService; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestTemplate; +import java.io.IOException; import java.util.HashMap; import java.util.Map; +import javax.persistence.EntityNotFoundException; + +import lombok.Data; + @RunWith(SpringRunner.class) public class CnfAdapterServiceTest { - private static final String INSTANCE_CREATE_PATH = "/v1/instance"; + + private static final String INSTANCE_ID = "ins"; + + private CnfAdapterService cnfAdapterService; + @Mock private RestTemplate restTemplate; - @InjectMocks - CnfAdapterService cnfAdapterService; - @Mock - private MulticloudConfiguration multicloudConfiguration; + HealthCheckService healthCheckService; @Mock - ResponseEntity instanceResponse; + SimpleStatusCheckService simpleStatusCheckService; + + + @Before + public void setUp() { + MulticloudConfiguration multicloudConfiguration = mock(MulticloudConfiguration.class); + doReturn("http://test.url").when(multicloudConfiguration).getMulticloudUrl(); + cnfAdapterService = spy(new CnfAdapterService(restTemplate, healthCheckService, simpleStatusCheckService, multicloudConfiguration)); + } + - @Test public void createInstanceTest() throws Exception { - Map labels = new HashMap(); - labels.put("custom-label-1", "label1"); - Map overrideValues = new HashMap(); - overrideValues.put("a", "b"); - labels.put("image.tag", "latest"); - labels.put("dcae_collector_ip", "1.2.3.4"); - BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest(); - bpmnInstanceRequest.setCloudRegionId("v1"); - bpmnInstanceRequest.setLabels(labels); - bpmnInstanceRequest.setModelInvariantId("krd"); - bpmnInstanceRequest.setModelVersionId("p1"); - bpmnInstanceRequest.setOverrideValues(overrideValues); - bpmnInstanceRequest.setVfModuleUUID("20200824"); - bpmnInstanceRequest.setK8sRBProfileName("K8sRBProfileName is required"); try { - cnfAdapterService.createInstance(bpmnInstanceRequest); + cnfAdapterService.createInstance(getBpmnInstanceRequest()); + } catch (Exception exp) { + assert (true); } - catch (Exception exp) { - assert(true); + } + + @Test(expected = EntityNotFoundException.class) + public void testcreateInstanceHttpException() { + doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.createInstance(getBpmnInstanceRequest()); + } catch (IOException e) { + e.printStackTrace(); } + } + @Test(expected = HttpStatusCodeException.class) + public void testcreateInstanceHttpStatusCodeException() { + doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.createInstance(getBpmnInstanceRequest()); + } catch (IOException e) { + e.printStackTrace(); + } } @Test public void getInstanceByInstanceIdTest() throws Exception { - String instanceId = "ins"; try { - cnfAdapterService.getInstanceByInstanceId(instanceId); + cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID); + } catch (Exception exp) { + assert (true); } - catch (Exception exp) { - assert(true); + } + + @Test(expected = EntityNotFoundException.class) + public void testInstanceByInstanceIdHttpException() { + doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID); + } catch (IOException e) { + e.printStackTrace(); } + } + @Test(expected = HttpStatusCodeException.class) + public void testInstanceByInstanceIdHttpStatusCodeException() { + doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID); + } catch (IOException e) { + e.printStackTrace(); + } } @Test public void getInstanceStatusByInstanceIdTest() throws Exception { - String instanceId = "ins"; try { - cnfAdapterService.getInstanceStatusByInstanceId(instanceId); + cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID); + } catch (Exception exp) { + assert (true); } - catch (Exception exp) { - assert(true); + } + + @Test(expected = EntityNotFoundException.class) + public void testInstanceStatusByInstanceIdHttpException() { + doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID); + } catch (IOException e) { + e.printStackTrace(); } + } + @Test(expected = HttpStatusCodeException.class) + public void testInstanceStatusByInstanceIdHttpStatusCodeException() { + doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID); + } catch (IOException e) { + e.printStackTrace(); + } } @Test public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception { - String rbName = "rb"; - String rbVersion = "rv1"; - String profileName = "p1"; + RbNameVersionData rbNameVersionData = new RbNameVersionData(); try { - cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbName, rbVersion, profileName); + cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(), + rbNameVersionData.getProfileName()); + } catch (Exception exp) { + assert (true); } - catch (Exception exp) { - assert(true); + } + + @Test(expected = EntityNotFoundException.class) + public void testInstanceByRBNameOrRBVersionOrProfileNameHttpException() { + RbNameVersionData rbNameVersionData = new RbNameVersionData(); + doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(), + rbNameVersionData.getProfileName()); + } catch (IOException e) { + e.printStackTrace(); } + } + @Test(expected = HttpStatusCodeException.class) + public void testInstanceByRBNameOrRBVersionOrProfileNameHttpStatusCodeException() { + RbNameVersionData rbNameVersionData = new RbNameVersionData(); + doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(), + rbNameVersionData.getProfileName()); + } catch (IOException e) { + e.printStackTrace(); + } } @Test public void deleteInstanceByInstanceIdTest() throws Exception { - String instanceId = "ins"; try { - cnfAdapterService.deleteInstanceByInstanceId(instanceId); + cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID); + } catch (Exception exp) { + assert (true); + } + } + + @Test(expected = EntityNotFoundException.class) + public void testdeleteInstanceByInstanceIdHttpException() { + doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test(expected = HttpStatusCodeException.class) + public void testdeleteInstanceByInstanceIdException() { + doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + try { + cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID); + } catch (IOException e) { + e.printStackTrace(); } - catch (Exception exp) { - assert(true); + } + + @Test + public void queryInstanceResourcesTest() { + try { + cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", ""); + } catch (Exception exp) { + assert (true); } + } + @Test(expected = EntityNotFoundException.class) + public void queryInstanceResourcesException() { + doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", ""); + } + + @Test + public void queryResourcesTest() { + try { + cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", ""); + } catch (Exception exp) { + assert (true); + } + } + + @Test(expected = EntityNotFoundException.class) + public void queryResourcesException() { + doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(), + ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.>any()); + cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", ""); + } + + private BpmnInstanceRequest getBpmnInstanceRequest() { + Map labels = new HashMap(); + labels.put("custom-label-1", "label1"); + Map overrideValues = new HashMap(); + overrideValues.put("a", "b"); + labels.put("image.tag", "latest"); + labels.put("dcae_collector_ip", "1.2.3.4"); + BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest(); + bpmnInstanceRequest.setCloudRegionId("v1"); + bpmnInstanceRequest.setLabels(labels); + bpmnInstanceRequest.setModelInvariantId("krd"); + bpmnInstanceRequest.setModelVersionId("p1"); + bpmnInstanceRequest.setOverrideValues(overrideValues); + bpmnInstanceRequest.setVfModuleUUID("20200824"); + bpmnInstanceRequest.setK8sRBProfileName("K8sRBProfileName is required"); + return bpmnInstanceRequest; + } + + @Data + private class RbNameVersionData { + + String rbName = "rb"; + String rbVersion = "rv1"; + String profileName = "p1"; } } diff --git a/so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/healthcheck/HealthCheckServiceTest.java b/so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/healthcheck/HealthCheckServiceTest.java new file mode 100644 index 0000000..9a043ba --- /dev/null +++ b/so-cnf-adapter-application/src/test/java/org/onap/so/adapters/cnf/service/healthcheck/HealthCheckServiceTest.java @@ -0,0 +1,81 @@ +package org.onap.so.adapters.cnf.service.healthcheck; + +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.UUID; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.so.adapters.cnf.client.MulticloudClient; +import org.onap.so.adapters.cnf.model.CheckInstanceRequest; +import org.onap.so.adapters.cnf.model.InstanceRequest; +import org.onap.so.adapters.cnf.model.healthcheck.HealthCheckResponse; +import org.onap.so.adapters.cnf.model.healthcheck.K8sRbInstanceHealthCheck; +import org.onap.so.adapters.cnf.model.healthcheck.K8sRbInstanceHealthCheckSimple; +import org.onap.so.client.exception.BadResponseException; + +class HealthCheckServiceTest { + + @InjectMocks + HealthCheckService healthCheckService; + + @Mock + MulticloudClient multicloudClient; + + @BeforeEach + void setUp() { + MockitoAnnotations.initMocks(this); + } + + @Test + void healthCheckTest() { + try { + doReturn(getK8sRbInstanceHealthCheckSimple()).when(multicloudClient).startInstanceHealthCheck(any()); + doReturn(getK8sRbInstanceHealthCheck()).when(multicloudClient).getInstanceHealthCheck(any(),any()); + HealthCheckResponse response = healthCheckService.healthCheck(getTestCheckInstanceRequest()); + + verify(multicloudClient, times(3)).startInstanceHealthCheck(any()); + verify(multicloudClient, times(3)).getInstanceHealthCheck(any(),any()); + assertThat(response.getInstanceResponse()).hasSize(getTestCheckInstanceRequest().getInstances().size()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private CheckInstanceRequest getTestCheckInstanceRequest(){ + CheckInstanceRequest checkInstanceRequest=new CheckInstanceRequest() ; + checkInstanceRequest.setInstances(asList(getRandomInstance(),getRandomInstance(),getRandomInstance())); + return checkInstanceRequest; + } + + private InstanceRequest getRandomInstance(){ + InstanceRequest instanceRequest=new InstanceRequest(); + instanceRequest.setInstanceId(UUID.randomUUID().toString()); + return instanceRequest; + } + + private K8sRbInstanceHealthCheckSimple getK8sRbInstanceHealthCheckSimple(){ + K8sRbInstanceHealthCheckSimple k8sRbInstanceHealthCheckSimple=new K8sRbInstanceHealthCheckSimple(); + k8sRbInstanceHealthCheckSimple.setId(UUID.randomUUID().toString()); + k8sRbInstanceHealthCheckSimple.setStatus("RUNNING"); + return k8sRbInstanceHealthCheckSimple; + } + + private K8sRbInstanceHealthCheck getK8sRbInstanceHealthCheck(){ + K8sRbInstanceHealthCheck k8sRbInstanceHealthCheck=new K8sRbInstanceHealthCheck(); + k8sRbInstanceHealthCheck.setStatus("STOPPED"); + return k8sRbInstanceHealthCheck; + } +} \ No newline at end of file -- cgit 1.2.3-korg