From 1a0189f890e4ff65ee245be9b7ef67788ac53a61 Mon Sep 17 00:00:00 2001 From: "Stone, Avi (as206k)" Date: Thu, 24 May 2018 16:12:32 +0300 Subject: Update code Update to latest version after improving testing and sonar coverage Change-Id: I527f4bc38d3b4e1005d38e3a2584fa730857425d Issue-ID: SDC-1313 Signed-off-by: Stone, Avi (as206k) --- .../composition/impl/ServiceBusinessLogicTest.java | 406 +++++++++++++-------- 1 file changed, 257 insertions(+), 149 deletions(-) (limited to 'dcaedt_be/src/test/java/org/onap/sdc/dcae/composition/impl/ServiceBusinessLogicTest.java') diff --git a/dcaedt_be/src/test/java/org/onap/sdc/dcae/composition/impl/ServiceBusinessLogicTest.java b/dcaedt_be/src/test/java/org/onap/sdc/dcae/composition/impl/ServiceBusinessLogicTest.java index 3cac355..a6f82f6 100644 --- a/dcaedt_be/src/test/java/org/onap/sdc/dcae/composition/impl/ServiceBusinessLogicTest.java +++ b/dcaedt_be/src/test/java/org/onap/sdc/dcae/composition/impl/ServiceBusinessLogicTest.java @@ -1,173 +1,281 @@ package org.onap.sdc.dcae.composition.impl; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.when; - -import java.util.*; -import java.util.stream.Collectors; - import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.junit.Before; +import org.junit.Test; import org.mockito.InjectMocks; -import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.onap.sdc.dcae.client.ISdcClient; +import org.onap.sdc.dcae.composition.restmodels.AttachVFCMTServiceRequest; import org.onap.sdc.dcae.composition.restmodels.DcaeMinimizedService; -import org.onap.sdc.dcae.composition.impl.ServiceBusinessLogic; +import org.onap.sdc.dcae.composition.restmodels.MessageResponse; import org.onap.sdc.dcae.composition.restmodels.ruleeditor.ActionDeserializer; import org.onap.sdc.dcae.composition.restmodels.ruleeditor.BaseAction; import org.onap.sdc.dcae.composition.restmodels.ruleeditor.BaseCondition; import org.onap.sdc.dcae.composition.restmodels.ruleeditor.ConditionDeserializer; -import org.onap.sdc.dcae.composition.restmodels.sdc.Artifact; -import org.onap.sdc.dcae.composition.restmodels.sdc.ResourceInstance; -import org.onap.sdc.dcae.composition.restmodels.sdc.ServiceDetailed; +import org.onap.sdc.dcae.composition.restmodels.sdc.*; import org.onap.sdc.dcae.composition.util.DcaeBeConstants; -import org.onap.sdc.dcae.composition.util.DcaeBeConstants.LifecycleStateEnum; import org.onap.sdc.dcae.errormng.ErrorConfigurationLoader; -import org.testng.annotations.Test; +import org.onap.sdc.dcae.errormng.ResponseFormat; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + + +import java.util.*; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.when; +import static org.testng.Assert.assertNotEquals; public class ServiceBusinessLogicTest { - private String userId = "me"; - private String requestId = "1"; - private String monitoringComponentName = "monitoringComponentName"; - private String serviceUuid = "serviceUuid"; - private String vfiName = "vfiName"; + private String uuid = "b632b1da-e6ab-419d-8853-420e259097d9"; + private String userId = "gc786h"; + private String requestId = "1"; + private String monitoringComponentName = "monitoringComponentName"; + private String serviceUuid = "serviceUuid"; + private String vfiName = "vfiName"; + private String vfcmtUuid = "26e8d4b5-f087-4821-a75a-0b9514b5a7ab"; + private ResourceDetailed vfcmt = Mockito.mock(ResourceDetailed.class); + private String categoryName = "Template"; + private String resourceType = "VFCMT"; + private ISdcClient sdcClientMock = Mockito.mock(ISdcClient.class); + + + private static Gson gson = new GsonBuilder() + .registerTypeAdapter(BaseAction.class, new ActionDeserializer()) + .registerTypeAdapter(BaseCondition.class, new ConditionDeserializer()).create(); + + @InjectMocks + ServiceBusinessLogic serviceBusinessLogic = new ServiceBusinessLogic(); + + + @Before + public void setUp() { + + MockitoAnnotations.initMocks(this); + serviceBusinessLogic.setSdcRestClient(sdcClientMock); + + new ErrorConfigurationLoader(System.getProperty("user.dir") + "/src/main/webapp/WEB-INF"); + + setServicesMock(); + setVfcmtMock(); + } + + private void setVfcmtMock() { + + when(vfcmt.getResourceType()).thenReturn(resourceType); + when(vfcmt.getCategory()).thenReturn(categoryName); + when(vfcmt.getLifecycleState()).thenReturn("NOT_CERTIFIED_CHECKIN"); + when(vfcmt.getUuid()).thenReturn(vfcmtUuid); + List artifactList = new ArrayList<>(); + Artifact artifact = Mockito.mock(Artifact.class);//gson.fromJson(artifactJson, Artifact.class); + artifactList.add(artifact); + when(vfcmt.getArtifacts()).thenReturn(artifactList); + + when(artifact.getArtifactName()).thenReturn(DcaeBeConstants.Composition.fileNames.SVC_REF); + + when(serviceBusinessLogic.getSdcRestClient().getResource(anyString(), anyString())).thenReturn(vfcmt); + when(serviceBusinessLogic.getSdcRestClient().changeResourceLifecycleState(anyString(), anyString(), anyString(), anyString(), anyString())).thenReturn(vfcmt); + + } + + private void setServicesMock() { + + ServiceDetailed serviceDetailed = new ServiceDetailed(); + ResourceInstance resourceInstance = new ResourceInstance(); + Artifact artifact = new Artifact(); + artifact.setArtifactName("." + monitoringComponentName + "." + DcaeBeConstants.Composition.fileNames.EVENT_PROC_BP_YAML); + resourceInstance.setArtifacts(Collections.singletonList(artifact)); + resourceInstance.setResourceInstanceName(vfiName); + resourceInstance.setResoucreType("VF"); + serviceDetailed.setResources(Collections.singletonList(resourceInstance)); + when(serviceBusinessLogic.getSdcRestClient().getService(anyString(), anyString())).thenReturn(serviceDetailed); + + String serviceJson = "{\n\"lastUpdaterFullName\":\"GALCOHEN\",\n\"resources\":[{\n\"resourceInstanceName\":\"LiavVf0\",\n\"resourceName\":\"LiavVf\",\n\"resourceInvariantUUID\":\"47d5c3d6-83d8-4cbc-831c-1c7e52bd2964\",\n\"resourceVersion\":\"0.1\",\n\"resoucreType\":\"VF\",\n\"resourceUUID\":\"6e3a2db2-213b-41a4-b9eb-afab3c3b1463\",\n\"artifacts\":null\n}],\n\"artifacts\":null,\n\"distributionStatus\":\"DISTRIBUTION_NOT_APPROVED\",\n\"uuid\":\"b632b1da-e6ab-419d-8853-420e259097d9\",\n\"invariantUUID\":\"4cc1f274-107c-48e7-a7c7-9768c88043f7\",\n\"name\":\"Rony7777777\",\n\"version\":\"0.2\",\n\"toscaModelURL\":\"/sdc/v1/catalog/services/b632b1da-e6ab-419d-8853-420e259097d9/toscaModel\",\n\"lastUpdaterUserId\":\"gc786h\",\n\"category\":\"NetworkL1-3\",\n\"lifecycleState\":\"NOT_CERTIFIED_CHECKOUT\"\n}\n"; + Service service = gson.fromJson(serviceJson, Service.class); + List serviceList = new ArrayList<>(); + serviceList.add(service); + when(serviceBusinessLogic.getSdcRestClient().getServices(requestId)).thenReturn(serviceList); + + } + + @Test + public void test_Service() { + + ResponseEntity result = serviceBusinessLogic.service(uuid, requestId); - private static Gson gson = new GsonBuilder() - .registerTypeAdapter(BaseAction.class, new ActionDeserializer()) - .registerTypeAdapter(BaseCondition.class, new ConditionDeserializer()).create(); + assertEquals(HttpStatus.OK, result.getStatusCode()); + assertEquals("vfiName", result.getBody().getResources().get(0).getResourceInstanceName()); + assertEquals("VF", result.getBody().getResources().get(0).getResoucreType()); + } - ServiceBusinessLogic target = new ServiceBusinessLogic(); + @Test + public void test_Services() { + ResponseEntity> result = serviceBusinessLogic.services(userId, vfcmtUuid, requestId); + assertEquals(HttpStatus.OK, result.getStatusCode()); + assertNotEquals(0, result.getBody().size()); + assertEquals(uuid, result.getBody().get(0).getUuid()); - @Test - public void parseAndFliterServicesByUser_nullServices_TBD() { + } + + @Test + public void test_AttachService() { + + AttachVFCMTServiceRequest request = new AttachVFCMTServiceRequest(); + request.setServiceUuid(serviceUuid); + request.setInstanceName(vfiName); + + + ResponseEntity result = serviceBusinessLogic.attachService(vfcmtUuid, userId, request, requestId); + assertEquals(HttpStatus.OK, result.getStatusCode()); + assertThat(result.getBody().getSuccessResponse()).isEqualTo("Artifact updated"); + } + + @Test + public void test_AttachService_verifyVfiExists_Exception() { + + AttachVFCMTServiceRequest request = new AttachVFCMTServiceRequest(); + request.setServiceUuid(serviceUuid); + request.setInstanceName("WrongName"); + when(serviceBusinessLogic.checkinVfcmt(userId, uuid, requestId)).thenReturn(null); + + ResponseEntity result = serviceBusinessLogic.attachService(vfcmtUuid, userId, request, requestId); + assertEquals(HttpStatus.NOT_FOUND, result.getStatusCode()); + assertEquals("SVC6039", result.getBody().getRequestError().getServiceException().getMessageId()); + } + + @Test + public void test_GetAttachedService() { + + when(serviceBusinessLogic.getSdcRestClient().getResourceArtifact(anyString(), anyString(), anyString())).thenReturn("artifact data"); + + ResponseEntity result = serviceBusinessLogic.getAttachedService(vfcmtUuid, requestId); + assertEquals(HttpStatus.OK, result.getStatusCode()); + assertThat(result.getBody().getSuccessResponse()).isEqualTo("artifact data"); + } + + + @Test + public void test_parseAndFliterServicesByUser_nullServices_TBD() { // fail("TODO Auto-generated method stub"); - } - - - @Test - public void parseAndFliterServicesByUser_emptyList_emptyList() { - // arrange - String user_id = "test"; - String lastUpdaterUserId = "test"; - List> services = new ArrayList>(); - // act - List result = target.parseAndFilterServicesByUser(lastUpdaterUserId, services, user_id); - // assert - assertThat(result).isEqualTo(new ArrayList()); - } - - - @Test - public void parseAndFliterServicesByUser_singleServicesAsMap_singleServiceParsed() { - // arrange - String user_id = "test"; - String lastUpdaterUserId = user_id; - String uuid = "a"; - String invariantUUID = "1"; - String lifecycleState = LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name(); - String version = "0.1"; - String serviceName = "TestService"; - - LinkedHashMap service = createServiceAsMap(lastUpdaterUserId, uuid, invariantUUID, - lifecycleState, version, serviceName); - List> services = new ArrayList>( - Arrays.asList(service)); - - DcaeMinimizedService expected = new DcaeMinimizedService(uuid, serviceName, lastUpdaterUserId, lifecycleState, - version, invariantUUID); - // act - List result = target.parseAndFilterServicesByUser(lastUpdaterUserId, services, user_id); - // assert - assertThat(result).usingRecursiveFieldByFieldElementComparator().contains(expected); - } - - - @Test - public void parseAndFliterServicesByUser_unsortedServices_sortedServices() { - // arrange - String user_id = "test"; - String lastUpdaterUserId = user_id; - String uuid = "a"; - String lifecycleState = LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name(); - String version = "0.1"; - - List> unsortedServices = Arrays.asList("d", "a", "c", "b").stream() - .map(x -> createServiceAsMap(lastUpdaterUserId, uuid, UUID.randomUUID().toString(), lifecycleState, version, x)) - .collect(Collectors.toList()); - - - // act - List result = target.parseAndFilterServicesByUser(lastUpdaterUserId, unsortedServices, - user_id); - // assert - assertThat(result).extracting("name").containsExactly("a","b","c","d"); - } - - - @Test - public void parseAndFliterServicesByUser_allOptionsForLastUpdaterAndIsCheckout_allOptionsButIsCheckoutAndNotLastUpdater() { - // ------------user == last_updater - // -----------------True----False-- - // isCheckout---------------------- - // --------True------V--------X---- - // --------False-----V--------V---- - // -------------------------------- + } + + + @Test + public void test_parseAndFliterServicesByUser_emptyList_emptyList() { + // arrange + String user_id = "test"; + String lastUpdaterUserId = "test"; + List> services = new ArrayList>(); + // act + List result = serviceBusinessLogic.parseAndFilterServicesByUser(lastUpdaterUserId, services, user_id); + // assert + assertThat(result).isEqualTo(new ArrayList()); + } + + + @Test + public void test_parseAndFliterServicesByUser_singleServicesAsMap_singleServiceParsed() { + // arrange + String user_id = "test"; + String lastUpdaterUserId = user_id; + String uuid = "a"; + String invariantUUID = "1"; + String lifecycleState = DcaeBeConstants.LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name(); + String version = "0.1"; + String serviceName = "TestService"; + + LinkedHashMap service = createServiceAsMap(lastUpdaterUserId, uuid, invariantUUID, + lifecycleState, version, serviceName); + List> services = new ArrayList>( + Arrays.asList(service)); + + DcaeMinimizedService expected = new DcaeMinimizedService(uuid, serviceName, lastUpdaterUserId, lifecycleState, + version, invariantUUID); + // act + List result = serviceBusinessLogic.parseAndFilterServicesByUser(lastUpdaterUserId, services, user_id); + // assert + assertThat(result).usingRecursiveFieldByFieldElementComparator().contains(expected); + } + + + @Test + public void test_parseAndFliterServicesByUser_unsortedServices_sortedServices() { + // arrange + String user_id = "test"; + String lastUpdaterUserId = user_id; + String uuid = "a"; + String lifecycleState = DcaeBeConstants.LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name(); + String version = "0.1"; + + List> unsortedServices = Arrays.asList("d", "a", "c", "b").stream() + .map(x -> createServiceAsMap(lastUpdaterUserId, uuid, UUID.randomUUID().toString(), lifecycleState, version, x)) + .collect(Collectors.toList()); + + + // act + List result = serviceBusinessLogic.parseAndFilterServicesByUser(lastUpdaterUserId, unsortedServices, + user_id); + // assert + assertThat(result).extracting("name").containsExactly("a", "b", "c", "d"); + } + + + @Test + public void test_parseAndFliterServicesByUser_allOptionsForLastUpdaterAndIsCheckout_allOptionsButIsCheckoutAndNotLastUpdater() { + // ------------user == last_updater + // -----------------True----False-- + // isCheckout---------------------- + // --------True------V--------X---- + // --------False-----V--------V---- + // -------------------------------- // fail("TODO Auto-generated method stub"); - } - - - @Test - public void parseAndFliterServicesByUser_singleServiceWithMultiVersions_singleServiceWithLatestVersion() { - // arrange - String user_id = "test"; - String lastUpdaterUserId = user_id; - String uuid = "a"; - String invariantUUID = "1"; - String lifecycleState = LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name(); - String serviceName = "TestService"; - - List> singleServiceWithMultiVersions = Arrays.asList("1.0", "0.3", "11.0", "2.0", "1.8").stream() - .map(x -> createServiceAsMap(lastUpdaterUserId, uuid, invariantUUID, lifecycleState, x, serviceName)) - .collect(Collectors.toList()); - - // act - List result = target.parseAndFilterServicesByUser(lastUpdaterUserId, singleServiceWithMultiVersions, user_id); - - // assert - assertThat(result).extracting("version").containsExactly("11.0"); - } - - - private static LinkedHashMap createServiceAsMap(String lastUpdaterUserId, String uuid, - String invariantUUID, String lifecycleState, String version, String serviceName) { - - LinkedHashMap service = new LinkedHashMap() { - { - put("invariantUUID", invariantUUID); - put("uuid", uuid); - put("name", serviceName); - put("lastUpdaterUserId", lastUpdaterUserId); - put("lifecycleState", lifecycleState); - put("version", version); - } - }; - - return service; - } - private void mockGetService() - { - ServiceDetailed serviceDetailed = new ServiceDetailed(); - ResourceInstance resourceInstance = new ResourceInstance(); - Artifact artifact = new Artifact(); - artifact.setArtifactName("." + monitoringComponentName + "." + DcaeBeConstants.Composition.fileNames.EVENT_PROC_BP_YAML); - resourceInstance.setArtifacts(Collections.singletonList(artifact)); - resourceInstance.setResourceInstanceName(vfiName); - serviceDetailed.setResources(Collections.singletonList(resourceInstance)); - when(target.getSdcRestClient().getService(serviceUuid, requestId)).thenReturn(serviceDetailed); - } -} + } + + + @Test + public void test_parseAndFliterServicesByUser_singleServiceWithMultiVersions_singleServiceWithLatestVersion() { + // arrange + String user_id = "test"; + String lastUpdaterUserId = user_id; + String uuid = "a"; + String invariantUUID = "1"; + String lifecycleState = DcaeBeConstants.LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name(); + String serviceName = "TestService"; + + List> singleServiceWithMultiVersions = Arrays.asList("1.0", "0.3", "11.0", "2.0", "1.8").stream() + .map(x -> createServiceAsMap(lastUpdaterUserId, uuid, invariantUUID, lifecycleState, x, serviceName)) + .collect(Collectors.toList()); + + // act + List result = serviceBusinessLogic.parseAndFilterServicesByUser(lastUpdaterUserId, singleServiceWithMultiVersions, user_id); + + // assert + assertThat(result).extracting("version").containsExactly("11.0"); + } + + + private static LinkedHashMap createServiceAsMap(String lastUpdaterUserId, String uuid, + String invariantUUID, String lifecycleState, String version, String serviceName) { + + LinkedHashMap service = new LinkedHashMap() { + { + put("invariantUUID", invariantUUID); + put("uuid", uuid); + put("name", serviceName); + put("lastUpdaterUserId", lastUpdaterUserId); + put("lifecycleState", lifecycleState); + put("version", version); + } + }; + + return service; + } +} \ No newline at end of file -- cgit 1.2.3-korg