diff options
Diffstat (limited to 'vid-app-common/src/test/java/org')
8 files changed, 797 insertions, 170 deletions
diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java b/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java index 36f4bdd4..54e924d9 100644 --- a/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java @@ -1,12 +1,14 @@ package org.onap.vid.mso; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.mockito.*; +import org.onap.portalsdk.core.util.SystemProperties; +import org.onap.vid.changeManagement.RequestDetailsWrapper; +import org.onap.vid.controllers.MsoController; +import org.onap.vid.mso.rest.Request; import org.onap.vid.mso.rest.RequestDetails; import org.onap.vid.properties.Features; -import org.onap.portalsdk.core.util.SystemProperties; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.springframework.test.context.web.WebAppConfiguration; @@ -16,16 +18,32 @@ import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import org.togglz.core.manager.FeatureManager; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.*; import static org.onap.vid.controllers.MsoController.SVC_INSTANCE_ID; -import static org.onap.vid.controllers.MsoController.VNF_INSTANCE_ID; import static org.onap.vid.mso.MsoBusinessLogicImpl.validateEndpointPath; @ContextConfiguration(classes = {SystemProperties.class}) @WebAppConfiguration public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests { + private static final String SERVICE_INSTANCE_ID = "1"; + private static final String VNF_INSTANCE_ID = "1"; + private static final String EXPECTED_SCALE_OUT_PATH = "/serviceInstantiation/v7/serviceInstances/1/vnfs/1/vfModules/scaleOut"; + private static final Path PATH_TO_NOT_PROCESSED_SCALE_OUT_REQUEST = Paths.get("src", "test", "resources", "payload_jsons", "scaleOutVfModulePayload.json"); + private static final Path PATH_TO_FINAL_SCALE_OUT_REQUEST = Paths.get("src", "test", "resources", "payload_jsons", "scaleOutVfModulePayloadToMso.json"); + private static final Path PATH_TO_EXPECTED_MSO_MODEL_TYPE_REQ = Paths.get("src", "test", "resources", "payload_jsons", "mso_model_info_sample_response.json"); + private static final Path PATH_TO_EXPECTED_MSO_SCALEOUT_REQ = Paths.get("src", "test", "resources", "payload_jsons", "mso_action_scaleout_sample_response.json"); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + @InjectMocks private MsoBusinessLogicImpl msoBusinessLogic; @@ -37,31 +55,31 @@ public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests { @BeforeTest - public void initMocks(){ + public void initMocks() { MockitoAnnotations.initMocks(this); } @Test - public void validateEndpointPath_endPointIsNotEmptyAndVaild_returnProperty(){ - System.setProperty("TestEnv","123"); + public void validateEndpointPath_endPointIsNotEmptyAndVaild_returnProperty() { + System.setProperty("TestEnv", "123"); String foundEndPoint = validateEndpointPath("TestEnv"); - Assert.assertEquals("123",foundEndPoint); + Assert.assertEquals("123", foundEndPoint); } @Test(expectedExceptions = RuntimeException.class) - public void validateEndpointPath_endPointIsNull_throwRuntimeException(){ + public void validateEndpointPath_endPointIsNull_throwRuntimeException() { validateEndpointPath("NotExists"); } @Test(expectedExceptions = RuntimeException.class) - public void validateEndpointPath_endPointIsNotEmptyButDoesntExists_throwRuntimeException(){ - System.setProperty("EmptyEndPoint",""); + public void validateEndpointPath_endPointIsNotEmptyButDoesntExists_throwRuntimeException() { + System.setProperty("EmptyEndPoint", ""); validateEndpointPath("EmptyEndPoint"); } //@Test(dataProvider = "unAssignOrDeleteParams") - public void deleteSvcInstance_verifyEndPointPathConstructing_unAssignFeatureOffOrUnAssignFlagIsFalse(boolean isAssignFlag,String status) { + public void deleteSvcInstance_verifyEndPointPathConstructing_unAssignFeatureOffOrUnAssignFlagIsFalse(boolean isAssignFlag, String status) { Mockito.reset(msoInterfaceMock); String endpoint = validateEndpointPath(isAssignFlag ? MsoProperties.MSO_DELETE_OR_UNASSIGN_REST_API_SVC_INSTANCE : MsoProperties.MSO_REST_API_SVC_INSTANCE); RequestDetails requestDetails = new RequestDetails(); @@ -114,7 +132,7 @@ public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests { String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, "serviceInstanceTempId"); - msoBusinessLogic.deleteVnf(requestDetails, "serviceInstanceTempId","vnfInstanceTempId"); + msoBusinessLogic.deleteVnf(requestDetails, "serviceInstanceTempId", "vnfInstanceTempId"); verify(msoInterfaceMock).deleteVnf(requestDetails, vnf_endpoint + "/vnfInstanceTempId"); } @@ -123,31 +141,64 @@ public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests { String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE); RequestDetails requestDetails = new RequestDetails(); - String vf__modules_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, "serviceInstanceTempId").replaceFirst(VNF_INSTANCE_ID, "vnfInstanceTempId"); + String vf__modules_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, "serviceInstanceTempId").replaceFirst(MsoController.VNF_INSTANCE_ID, "vnfInstanceTempId"); + + msoBusinessLogic.deleteVfModule(requestDetails, "serviceInstanceTempId", "vnfInstanceTempId", "vfModuleTempId"); + verify(msoInterfaceMock).deleteVfModule(requestDetails, vf__modules_endpoint + "/vfModuleTempId"); + } + + + @Test + public void shouldSendProperScaleOutRequest() throws IOException { + ArgumentCaptor<RequestDetailsWrapper> requestDetailsWrapperArgumentCaptor = ArgumentCaptor.forClass(RequestDetailsWrapper.class); + org.onap.vid.changeManagement.RequestDetails requestDetails = getScaleOutRequest(); + RequestDetailsWrapper expectedRequestWrapper = getExpectedRequestWrapper(); + + msoBusinessLogic.scaleOutVfModuleInstance(requestDetails, SERVICE_INSTANCE_ID, VNF_INSTANCE_ID); + + verify(msoInterfaceMock).scaleOutVFModuleInstance(requestDetailsWrapperArgumentCaptor.capture(), eq(EXPECTED_SCALE_OUT_PATH)); + RequestDetailsWrapper actual = requestDetailsWrapperArgumentCaptor.getAllValues().get(0); - msoBusinessLogic.deleteVfModule(requestDetails, "serviceInstanceTempId","vnfInstanceTempId", "vfModuleTempId"); - verify(msoInterfaceMock).deleteVfModule(requestDetails, vf__modules_endpoint + "/vfModuleTempId" ); + assertThat(expectedRequestWrapper.requestDetails).isEqualTo(actual.requestDetails); } @Test - public void insertServiceInstantiationToDB_StartJob() { - -// broker = new JobsBrokerServiceInDatabaseImpl(dataAccessServiceMock, sessionFactory); -// ((JobsBrokerServiceInDatabaseImpl)broker).deleteAll(); -// -//// msoBusinessLogic.setDataAccessService(dataAccessServiceMock); -//// msoBusinessLogic.setJobsBrokerService(broker); -//// msoBusinessLogic.setJobAdapter(jobAdapter); -// -// ServiceInstantiation serviceInstantiation = new ServiceInstantiation(); -// serviceInstantiation.setCount(2); -// serviceInstantiation.setInstanceName("TestName"); -// -// msoBusinessLogic.pushBulkJob(serviceInstantiation, "testUserId"); -// -// List<ServiceInfo> serviceInfoList = dataAccessServiceMock.getList(ServiceInfo.class, null); -// int k = 9; -// Assert.assertEquals(serviceInstantiation, containsInAnyOrder(serviceInfoList.toArray())); + public void shouldFilterOutOrchestrationRequestsNotAllowedInDashboard() throws IOException { + String vnfModelTypeOrchestrationRequests = getFileContentAsString(PATH_TO_EXPECTED_MSO_MODEL_TYPE_REQ); + String scaleOutActionOrchestrationRequests = getFileContentAsString(PATH_TO_EXPECTED_MSO_SCALEOUT_REQ); + + MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class); + when(msoInterfaceMock.getOrchestrationRequestsForDashboard(any(String.class), any(String.class), any(String.class), any(RestObject.class))) + .thenReturn(msoResponseWrapperMock); + when(msoResponseWrapperMock.getEntity()).thenReturn(vnfModelTypeOrchestrationRequests, scaleOutActionOrchestrationRequests); + + List<Request> filteredOrchestrationReqs = msoBusinessLogic.getOrchestrationRequestsForDashboard(); + + assertThat(filteredOrchestrationReqs).hasSize(3); + assertThat(MsoBusinessLogicImpl.DASHBOARD_ALLOWED_TYPES) + .containsAll(filteredOrchestrationReqs + .stream() + .map(el -> el.getRequestType().toUpperCase()) + .collect(Collectors.toList())); + assertThat(filteredOrchestrationReqs + .stream() + .map(org.onap.vid.domain.mso.Request::getRequestScope) + .collect(Collectors.toList())) + .containsOnly("vnf", "vfModule"); + } + + + private String getFileContentAsString(Path pathToFile) throws IOException { + return new String(Files.readAllBytes(pathToFile)); + } + + private org.onap.vid.changeManagement.RequestDetails getScaleOutRequest() throws IOException { + return OBJECT_MAPPER.readValue(PATH_TO_NOT_PROCESSED_SCALE_OUT_REQUEST.toFile(), org.onap.vid.changeManagement.RequestDetails.class); + } + + private RequestDetailsWrapper getExpectedRequestWrapper() throws IOException { + return OBJECT_MAPPER.readValue(PATH_TO_FINAL_SCALE_OUT_REQUEST.toFile(), new TypeReference<RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails>>() { + }); } } diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientNewTest.java b/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientNewTest.java index 402386a5..69966407 100644 --- a/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientNewTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientNewTest.java @@ -21,17 +21,11 @@ package org.onap.vid.mso.rest; import com.xebialabs.restito.server.StubServer; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Properties; -import java.util.UUID; import org.glassfish.grizzly.http.util.HttpStatus; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; +import org.onap.portalsdk.core.util.SystemProperties; import org.onap.vid.client.SyncRestClient; import org.onap.vid.controllers.MsoController; import org.onap.vid.mso.MsoInterface; @@ -39,16 +33,30 @@ import org.onap.vid.mso.MsoProperties; import org.onap.vid.mso.MsoResponseWrapper; import org.onap.vid.mso.MsoResponseWrapperInterface; import org.onap.vid.mso.RestObject; +import org.springframework.test.context.ContextConfiguration; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Properties; +import java.util.UUID; + +import static org.onap.vid.controllers.MsoController.SVC_INSTANCE_ID; +import static org.onap.vid.controllers.MsoController.VNF_INSTANCE_ID; + +@ContextConfiguration(classes = {SystemProperties.class}) public class MsoRestClientNewTest { private static StubServer server; private static StubServer securedServer; private static Properties props = new Properties(); private static String msoCreateServiceInstanceJson; + private static String msoScaleOutVfModule; private final static String CREATE_INSTANCE_RESPONSE_STR = - "{\"requestReferences\":{\"instanceId\":\"baa13544-0e95-4644-9565-9a198a29a294\"," - + "\"requestId\":\"a42a1a35-3d63-4629-bbe0-4989fa7414cb\"}}"; + "{\"requestReferences\":{\"instanceId\":\"baa13544-0e95-4644-9565-9a198a29a294\"," + + "\"requestId\":\"a42a1a35-3d63-4629-bbe0-4989fa7414cb\"}}"; private final static String SERVICE_INSTANCE_ID = "12345"; private static final String SAMPLE_VNF_INSTANCE_ID = "111"; private static final String SAMPLE_VNF_MODULE_ID = "987"; @@ -63,15 +71,19 @@ public class MsoRestClientNewTest { securedServer = new StubServer().secured().run(); Path resourceDirectory = - Paths.get("src", "test", "resources", "WEB-INF", "conf", "system.properties"); - try(InputStream is = Files.newInputStream(resourceDirectory)) { + Paths.get("src", "test", "resources", "WEB-INF", "conf", "system.properties"); + try (InputStream is = Files.newInputStream(resourceDirectory)) { props.load(is); } Path msoServiceInstantiationJsonFilePath = - Paths.get("src", "test", "resources", "payload_jsons", "mso_service_instantiation.json"); + Paths.get("src", "test", "resources", "payload_jsons", "mso_service_instantiation.json"); + + Path scaleOutJsonFilePath = Paths.get("src", "test", "resources", "payload_jsons", "scaleOutVfModulePayloadToMso.json"); msoCreateServiceInstanceJson = - String.join("\n", Files.readAllLines(msoServiceInstantiationJsonFilePath)); + String.join("\n", Files.readAllLines(msoServiceInstantiationJsonFilePath)); + msoScaleOutVfModule = String.join("\n", Files.readAllLines(scaleOutJsonFilePath)); + } @AfterClass @@ -89,11 +101,11 @@ public class MsoRestClientNewTest { public void testCreateSvcInstance() throws Exception { String endpoint = props.getProperty(MsoProperties.MSO_REST_API_CONFIGURATIONS); endpoint = endpoint.replace(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - endpoint, - HttpStatus.ACCEPTED_202, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + endpoint, + HttpStatus.ACCEPTED_202, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createSvcInstance); } } @@ -102,12 +114,12 @@ public class MsoRestClientNewTest { public void testCreateVnf() throws Exception { String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VNF_INSTANCE); endpoint = endpoint.replace(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - endpoint, - HttpStatus.ACCEPTED_202, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { - + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + endpoint, + HttpStatus.ACCEPTED_202, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { + closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createVnf); } } @@ -116,11 +128,11 @@ public class MsoRestClientNewTest { public void testCreateNwInstance() throws Exception { String endpoint = props.getProperty(MsoProperties.MSO_REST_API_NETWORK_INSTANCE); String nw_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - nw_endpoint, - HttpStatus.ACCEPTED_202, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + nw_endpoint, + HttpStatus.ACCEPTED_202, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createNwInstance); } } @@ -130,11 +142,11 @@ public class MsoRestClientNewTest { String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE); String vnf_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); vnf_endpoint = vnf_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID); - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - vnf_endpoint, - HttpStatus.ACCEPTED_202, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + vnf_endpoint, + HttpStatus.ACCEPTED_202, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createVolumeGroupInstance); } } @@ -144,14 +156,14 @@ public class MsoRestClientNewTest { String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE); String partial_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); String vf_module_endpoint = - partial_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID); + partial_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID); - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - vf_module_endpoint, - HttpStatus.ACCEPTED_202, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + vf_module_endpoint, + HttpStatus.ACCEPTED_202, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createVfModuleInstance); } } @@ -177,11 +189,11 @@ public class MsoRestClientNewTest { endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - endpoint, - HttpStatus.NO_CONTENT_204, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + endpoint, + HttpStatus.NO_CONTENT_204, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteSvcInstance); } } @@ -191,11 +203,11 @@ public class MsoRestClientNewTest { String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VNF_INSTANCE); endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - endpoint, - HttpStatus.NO_CONTENT_204, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + endpoint, + HttpStatus.NO_CONTENT_204, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteVnf); } } @@ -207,11 +219,11 @@ public class MsoRestClientNewTest { String vf_modules_endpoint = part_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID); String delete_vf_endpoint = vf_modules_endpoint + '/' + SAMPLE_VNF_MODULE_ID; - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - delete_vf_endpoint, - HttpStatus.NO_CONTENT_204, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + delete_vf_endpoint, + HttpStatus.NO_CONTENT_204, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteVfModule); } } @@ -223,11 +235,11 @@ public class MsoRestClientNewTest { String vnf_endpoint = svc_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID); String delete_volume_group_endpoint = vnf_endpoint + "/" + SAMPLE_VNF_MODULE_ID; - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - delete_volume_group_endpoint, - HttpStatus.NO_CONTENT_204, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + delete_volume_group_endpoint, + HttpStatus.NO_CONTENT_204, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteVolumeGroupInstance); } } @@ -410,11 +422,11 @@ public class MsoRestClientNewTest { String serviceEndpoint = props.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE); String removeRelationshipsPath = serviceEndpoint + "/" + SERVICE_INSTANCE_ID + "/removeRelationships"; - try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil( - server, - removeRelationshipsPath, - HttpStatus.ACCEPTED_202, - CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) { + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + removeRelationshipsPath, + HttpStatus.ACCEPTED_202, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::removeRelationshipFromServiceInstance); } } @@ -433,6 +445,20 @@ public class MsoRestClientNewTest { } catch (Exception e) { } } + @Test + public void testScaleOutVfModule() throws IOException { + String serviceEndpoint = props.getProperty(MsoProperties.MSO_REST_API_VF_MODULE_SCALE_OUT); + String partial_endpoint = serviceEndpoint.replaceFirst(SVC_INSTANCE_ID, SERVICE_INSTANCE_ID); + String vf_module_endpoint = partial_endpoint.replaceFirst(VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID); + try (MsoRestClientTestUtil closure = new MsoRestClientTestUtil( + server, + vf_module_endpoint, + HttpStatus.ACCEPTED_202, + CREATE_INSTANCE_RESPONSE_STR, CREATE_INSTANCE_RESPONSE_STR)) { + closure.executePostCall(msoScaleOutVfModule, msoRestClient()::scaleOutVFModuleInstance); + } + + } private MsoRestClientNew msoRestClient() { return new MsoRestClientNew(new SyncRestClient(MsoInterface.objectMapper()), baseUrl()); diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTestUtil.java b/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTestUtil.java index e8f55699..c81fa16f 100644 --- a/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTestUtil.java +++ b/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTestUtil.java @@ -20,11 +20,13 @@ import java.util.function.BiFunction; import java.util.function.Function; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; + import org.glassfish.grizzly.http.Method; import org.glassfish.grizzly.http.util.HttpStatus; import org.json.JSONObject; import org.junit.Assert; import org.onap.portalsdk.core.util.SystemProperties; +import org.onap.vid.changeManagement.RequestDetailsWrapper; import org.onap.vid.mso.MsoResponseWrapper; class MsoRestClientTestUtil implements AutoCloseable { @@ -60,6 +62,21 @@ class MsoRestClientTestUtil implements AutoCloseable { verifyServer(server, endpoint, Method.POST); } + void executePostCall(String jsonPayload, BiFunction<RequestDetailsWrapper, String, MsoResponseWrapper> func) throws IOException { + whenHttp(server) + .match(post(endpoint)) + .then(status(expectedStatus), jsonContent(responsePayload), contentType(MediaType.APPLICATION_JSON)); + + RequestDetailsWrapper sampleRequestDetails = + new ObjectMapper().readValue(jsonPayload, RequestDetailsWrapper.class); + + MsoResponseWrapper response = func.apply(sampleRequestDetails, endpoint); + JSONObject actualJson = new JSONObject(response.getEntity()); + + Assert.assertEquals(expectedStatus.getStatusCode(), response.getStatus()); + Assert.assertEquals(expectedResponseStr, actualJson.toString()); + verifyServer(server, endpoint, Method.POST); + } void executeDelete(String jsonPayload, BiFunction<RequestDetails, String, MsoResponseWrapper> func) throws IOException { diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AuditServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AuditServiceImplTest.java new file mode 100644 index 00000000..3d2a20b6 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/services/AuditServiceImplTest.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2018 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.vid.services; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.util.UUID; +import org.glassfish.grizzly.http.util.HttpStatus; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class AuditServiceImplTest { + @Mock + private AsyncInstantiationBusinessLogic asyncInstantiationBL; + + @InjectMocks + private AuditServiceImpl auditService; + + @BeforeClass + public void init() { + initMocks(this); + } + + @Test + public void setFailedAuditStatusFromMsoTest() { + + UUID jobUuid = UUID.randomUUID(); + String requestId = "1"; + int statusCode = HttpStatus.OK_200.getStatusCode(); + String msoResponse = "{}"; + + auditService.setFailedAuditStatusFromMso(jobUuid, requestId, statusCode, msoResponse); + + verify(asyncInstantiationBL, times(1)) + .auditMsoStatus( + Mockito.any(UUID.class), + Mockito.anyString(), + Mockito.anyString(), + Mockito.anyString()); + } +} diff --git a/vid-app-common/src/test/java/org/onap/vid/services/BulkInstantiationServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/BulkInstantiationServiceImplTest.java new file mode 100644 index 00000000..6677da35 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/services/BulkInstantiationServiceImplTest.java @@ -0,0 +1,135 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2018 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.vid.services; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import javax.ws.rs.NotFoundException; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.onap.vid.job.Job; +import org.onap.vid.job.JobAdapter; +import org.onap.vid.job.JobsBrokerService; +import org.onap.vid.job.impl.JobDaoImpl; +import org.onap.vid.model.JobBulk; +import org.onap.vid.model.JobModel; +import org.testng.Assert; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +public class BulkInstantiationServiceImplTest { + + @Mock + private JobsBrokerService jobsBrokerService; + + @Mock + private JobAdapter jobAdapter; + + @InjectMocks + private BulkInstantiationServiceImpl testSubject; + + @BeforeSuite + public void before() { + initMocks(this); + } + + @BeforeMethod + public void resetMocks() { + reset(jobsBrokerService); + reset(jobAdapter); + } + + @Test + public void saveBulkTest() { + UUID uuid = UUID.randomUUID(); + Map<String, Object> bulkRequest = new HashMap<>(); + List<Job> jobList = new ArrayList<>(); + jobList.add(createJob(uuid)); + when(jobAdapter.createBulkOfJobs(bulkRequest)).thenReturn(jobList); + + JobBulk jobBulk = createJobBulk(jobList); + when(jobAdapter.toModelBulk(jobList)).thenReturn(jobBulk); + + JobBulk result = testSubject.saveBulk(bulkRequest); + + Assert.assertEquals(result.getJobs().size(), jobList.size()); + Assert.assertEquals(result.getJobs().get(0).getUuid(), uuid); + } + + @Test + public void getJobTest() { + UUID uuid = UUID.randomUUID(); + Job job = createJob(uuid); + doReturn(job).when(jobsBrokerService).peek(uuid); + JobModel jobModel = createJobModel(uuid); + when(jobAdapter.toModel(job)).thenReturn(jobModel); + + JobModel response = testSubject.getJob(uuid); + Assert.assertEquals(response.getUuid(), uuid); + } + + @Test(expectedExceptions = {NotFoundException.class}) + public void getJobTest_throwsExceptionOnEmptyUUID() { + UUID uuid = null; + Job job = createJob(uuid); + doReturn(job).when(jobsBrokerService).peek(uuid); + JobModel response = testSubject.getJob(uuid); + Assert.fail(); + } + + @Test(expectedExceptions = {NotFoundException.class}) + public void getJobTest_throwsExceptionCauseJobDoesNotExists() { + UUID uuid = UUID.randomUUID(); + doReturn(null).when(jobsBrokerService).peek(uuid); + JobModel response = testSubject.getJob(uuid); + Assert.fail(); + } + + private Job createJob(UUID uuid) { + Job job = new JobDaoImpl(); + job.setUuid(uuid); + return job; + } + + private JobModel createJobModel(UUID uuid) { + JobModel jobModel = new JobModel(); + jobModel.setUuid(uuid); + return jobModel; + } + + private JobBulk createJobBulk(List<Job> jobList) { + List<JobModel> jobBulkList = new ArrayList<>(); + jobList.stream().forEach(job -> { + JobModel jm = new JobModel(); + jm.setUuid(job.getUuid()); + jobBulkList.add(jm); + }); + return new JobBulk(jobBulkList); + } +} diff --git a/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java index 440a2a7b..04ee4643 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceImplTest.java @@ -1,80 +1,261 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2018 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ package org.onap.vid.services; -import org.junit.Test; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import javax.ws.rs.ForbiddenException; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.onap.portalsdk.core.service.DataAccessService; import org.onap.vid.category.AddCategoryOptionResponse; import org.onap.vid.category.AddCategoryOptionsRequest; import org.onap.vid.category.CategoryParameterOptionRep; import org.onap.vid.category.CategoryParametersResponse; +import org.onap.vid.model.CategoryParameter; +import org.onap.vid.model.CategoryParameter.Family; import org.onap.vid.model.CategoryParameterOption; +import org.onap.vid.services.CategoryParameterServiceImpl.AlreadyExistOptionNameException; +import org.onap.vid.services.CategoryParameterServiceImpl.UnfoundedCategoryException; +import org.onap.vid.services.CategoryParameterServiceImpl.UnfoundedCategoryOptionException; +import org.testng.Assert; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; public class CategoryParameterServiceImplTest { - private CategoryParameterServiceImpl createTestSubject() { - return new CategoryParameterServiceImpl(); + private static final String CATEGORY_NAME = "SAMPLE_CATEGORY_NAME"; + private static final String OPTION_NAME = "SAMPLE_OPTION_NAME"; + private static final String UNIQUE_OPTION_NAME = "UNIQUE_OPTION_NAME"; + private static final String APP_ID_VID = "VID"; + private static final String APP_ID_SDC = "SDC"; + private static final String QUERY_STRING_FOR_CATEGORY_NAME = String.format(" where name = '%s' ", CATEGORY_NAME); + + + @Mock + private DataAccessService dataAccessService; + + @InjectMocks + private CategoryParameterServiceImpl testSubject; + + @BeforeSuite + public void before() { + initMocks(this); + } + + @BeforeMethod + public void resetMocks() { + reset(dataAccessService); } @Test - public void testCreateCategoryParameterOptions() throws Exception { - CategoryParameterServiceImpl testSubject; - String categoryName = ""; - AddCategoryOptionsRequest optionsRequest = null; - AddCategoryOptionResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.createCategoryParameterOptions(categoryName, optionsRequest); - } catch ( - - Exception e) { - } + public void createCategoryParameterOptions_happyPath() { + AddCategoryOptionsRequest optionsRequest = new AddCategoryOptionsRequest(); + optionsRequest.options.add(UNIQUE_OPTION_NAME); + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, true); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.createCategoryParameterOptions(CATEGORY_NAME, optionsRequest); + + Assert.assertTrue(result.getErrors().isEmpty());; + verify(dataAccessService, times(1)) + .saveDomainObject(anyObject(), anyObject()); } @Test - public void testDeleteCategoryOption() throws Exception { - CategoryParameterServiceImpl testSubject; - String categoryName = ""; + public void createCategoryParameterOptions_existingOptionsForCategory() { + AddCategoryOptionsRequest optionsRequest = new AddCategoryOptionsRequest(); + optionsRequest.options.add(OPTION_NAME); + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, true); + categoryParameter.getOptions().add(new CategoryParameterOption(APP_ID_VID, OPTION_NAME, categoryParameter)); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + String expectedError = String.format(CategoryParameterServiceImpl.OPTION_ALREADY_EXIST_FOR_CATEGORY + , OPTION_NAME, CATEGORY_NAME); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.createCategoryParameterOptions(CATEGORY_NAME, optionsRequest); + + Assert.assertFalse(result.getErrors().isEmpty()); + Assert.assertEquals(result.getErrors().size(), 1); + Assert.assertTrue(result.getErrors().stream().allMatch(expectedError::equals)); + } + + private List<CategoryParameter> createCategoryParametersList(CategoryParameter categoryParameter) { + List<CategoryParameter> aList = new ArrayList<>(); + aList.add(categoryParameter); + return aList; + } + + @Test + public void createCategoryParameterOptions_nonExistingOptionsForCategory() { + AddCategoryOptionsRequest optionsRequest = new AddCategoryOptionsRequest(); + + List<CategoryParameter> aList = createCategoryParametersList(new CategoryParameter()); + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.createCategoryParameterOptions(CATEGORY_NAME, optionsRequest); + + Assert.assertTrue(result.getErrors().isEmpty()); + } + + @Test(expectedExceptions = { UnfoundedCategoryException.class }) + public void createCategoryParameterOptions_wrongNumberOfCategoryParameters() { + AddCategoryOptionsRequest optionsRequest = new AddCategoryOptionsRequest(); + List<CategoryParameter> aList = Collections.emptyList(); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.createCategoryParameterOptions(CATEGORY_NAME, optionsRequest); + + Assert.fail(); + } + + @Test(expectedExceptions = { UnfoundedCategoryException.class }) + public void deleteCategoryOption_wrongNumberOfParameters() { CategoryParameterOption option = null; + List<CategoryParameter> aList = Collections.emptyList(); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + testSubject.deleteCategoryOption(CATEGORY_NAME, option); - // default test - try { - testSubject = createTestSubject(); - testSubject.deleteCategoryOption(categoryName, option); - } catch ( + Assert.fail(); + } + + @Test + public void deleteCategoryOption_happyPath() { + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, true); + CategoryParameterOption categoryParameterOption = + new CategoryParameterOption(APP_ID_VID, OPTION_NAME, categoryParameter); + categoryParameter.getOptions().add(categoryParameterOption); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + doReturn(aList).when(dataAccessService).getList(anyObject(), anyString(), anyString(), anyObject()); - Exception e) { - } + testSubject.deleteCategoryOption(CATEGORY_NAME, categoryParameterOption); + + verify(dataAccessService, times(1)) + .deleteDomainObject(anyObject(), anyObject()); } @Test - public void testGetCategoryParameters() throws Exception { - CategoryParameterServiceImpl testSubject; - CategoryParametersResponse result; - - // default test - try { - testSubject = createTestSubject(); - testSubject.getCategoryParameters(null); - } catch ( - - Exception e) { - } + public void getCategoryParametersTest() { + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, true); + CategoryParameterOption categoryParameterOption = + new CategoryParameterOption(APP_ID_VID, OPTION_NAME, categoryParameter); + categoryParameter.getOptions().add(categoryParameterOption); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + doReturn(aList).when(dataAccessService).getList(anyObject(), anyString(), anyString(), anyObject()); + + CategoryParametersResponse response = testSubject.getCategoryParameters(Family.PARAMETER_STANDARDIZATION); + + Assert.assertFalse(response.getCategoryParameters().isEmpty()); + Assert.assertTrue(response.getCategoryParameters().containsKey(CATEGORY_NAME)); + + verify(dataAccessService, times(1)) + .getList(anyObject(), anyString(), anyString(), anyObject()); } @Test - public void testUpdateCategoryParameterOption() throws Exception { - CategoryParameterServiceImpl testSubject; - String categoryName = ""; - CategoryParameterOptionRep option = null; - AddCategoryOptionResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.updateCategoryParameterOption(categoryName, option); - } catch ( - - Exception e) { - } + public void updateCategoryParameterOption_domainObjectGetsSavedSuccessfully() { + CategoryParameterOptionRep optionRepExisting = new CategoryParameterOptionRep(APP_ID_VID, OPTION_NAME); + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, true); + categoryParameter.getOptions().add( + new CategoryParameterOption(APP_ID_VID, UNIQUE_OPTION_NAME, categoryParameter)); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.updateCategoryParameterOption(CATEGORY_NAME, optionRepExisting); + + verify(dataAccessService, times(1)) + .saveDomainObject(anyObject(), anyObject()); + } + + @Test(expectedExceptions = { ForbiddenException.class }) + public void updateCategoryParameterOption_shouldFailUpdateForbidden() { + CategoryParameterOptionRep optionRep = new CategoryParameterOptionRep("1", CATEGORY_NAME); + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, false); + categoryParameter.getOptions().add(new CategoryParameterOption(APP_ID_VID, OPTION_NAME, categoryParameter)); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.updateCategoryParameterOption(CATEGORY_NAME, optionRep); + + Assert.fail(); + } + + @Test(expectedExceptions = { UnfoundedCategoryOptionException.class }) + public void updateCategoryParameterOption_CategoryNotFound() { + CategoryParameterOptionRep optionRep = new CategoryParameterOptionRep("SOME_UNRELATED_ID", CATEGORY_NAME); + + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, true); + categoryParameter.getOptions().add(new CategoryParameterOption(APP_ID_VID, OPTION_NAME, categoryParameter)); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.updateCategoryParameterOption(CATEGORY_NAME, optionRep); + + Assert.fail(); + } + + @Test(expectedExceptions = { AlreadyExistOptionNameException.class }) + public void updateCategoryParameterOption_OptionNameExists() { + CategoryParameterOptionRep optionRepExisting = new CategoryParameterOptionRep(APP_ID_VID, OPTION_NAME); + + CategoryParameter categoryParameter = createCategoryParameter(CATEGORY_NAME, true); + categoryParameter.getOptions().add( + new CategoryParameterOption(APP_ID_VID, UNIQUE_OPTION_NAME, categoryParameter)); + categoryParameter.getOptions().add( + new CategoryParameterOption(APP_ID_SDC, OPTION_NAME, categoryParameter)); + List<CategoryParameter> aList = createCategoryParametersList(categoryParameter); + + doReturn(aList).when(dataAccessService).getList(CategoryParameter.class, QUERY_STRING_FOR_CATEGORY_NAME, null, null); + + AddCategoryOptionResponse result = testSubject.updateCategoryParameterOption(CATEGORY_NAME, optionRepExisting); + + Assert.fail(); + } + + private CategoryParameter createCategoryParameter(String categoryName, boolean idSupported) { + CategoryParameter categoryParameter = new CategoryParameter(); + categoryParameter.setName(categoryName); + categoryParameter.setIdSupported(idSupported); + return categoryParameter; } }
\ No newline at end of file diff --git a/vid-app-common/src/test/java/org/onap/vid/services/PombaServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/PombaServiceImplTest.java new file mode 100644 index 00000000..d0eec261 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/services/PombaServiceImplTest.java @@ -0,0 +1,40 @@ +package org.onap.vid.services; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.MockitoAnnotations.initMocks; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.vid.aai.PombaClientInterface; +import org.onap.vid.model.PombaInstance.PombaRequest; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +public class PombaServiceImplTest { + + @Mock + private PombaClientInterface pombaClientInterface; + + @InjectMocks + private PombaServiceImpl testSubject; + + @BeforeClass + public void beforeClass() { + initMocks(this); + } + + @BeforeMethod + public void resetMocks() { + Mockito.reset(pombaClientInterface); + } + + @Test + public void testVerify() { + PombaRequest pombaRequest = new PombaRequest(); + testSubject.verify(pombaRequest); + verify(pombaClientInterface, times(1)) + .verify(pombaRequest); + } +}
\ No newline at end of file diff --git a/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java index 544a799a..d7db4955 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java @@ -1,25 +1,139 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2018 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ package org.onap.vid.services; -import static org.junit.Assert.*; -import java.util.*; -import org.junit.Assert; -import org.junit.Test; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.util.ArrayList; +import org.apache.commons.lang.StringUtils; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.vid.aai.AaiClientInterface; +import org.onap.vid.aai.AaiResponse; +import org.onap.vid.aai.ServiceSubscription; +import org.onap.vid.aai.ServiceSubscriptions; +import org.onap.vid.aai.Services; +import org.onap.vid.model.Subscriber; +import org.onap.vid.model.SubscriberList; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; public class RoleGenaratorServiceImplTest { - private RoleGenaratorServiceImpl createTestSubject() { - return new RoleGenaratorServiceImpl(); + private static final String GLOBAL_CUSTOMER_ID = "997"; + private static final String SUBSCRIBER_NAME = "name"; + private static final String SUBSCRIBER_TYPE = "subscriber_type"; + private static final String RESOURCE_VERSION = "1"; + private static final String SERVICE_TYPE = "service_type"; + + @Mock + private AaiClientInterface aaiClientInterface; + + @InjectMocks + private RoleGenaratorServiceImpl testSubject; + + @BeforeClass + public void beforeClass() { + initMocks(this); + } + + @BeforeMethod + public void resetMocks() { + Mockito.reset(aaiClientInterface); + } + + @Test + public void tenerateRoleScript_firstRun() { + boolean firstRun = true; + + Subscriber subscriber = createSubscriber(); + AaiResponse<SubscriberList> subscribers = createSubscriberListAaiResponse(subscriber); + doReturn(subscribers).when(aaiClientInterface).getAllSubscribers(); + + ServiceSubscription serviceSubscription = createServiceSubscription(); + AaiResponse<Services> subscriberResponse = createServicesAaiResponse(serviceSubscription); + doReturn(subscriberResponse).when(aaiClientInterface).getSubscriberData(subscriber.globalCustomerId); + + String result = testSubject.generateRoleScript(firstRun); + Assert.assertTrue(StringUtils.isNotBlank(result)); } @Test - public void testGenerateRoleScript() throws Exception { - RoleGenaratorServiceImpl testSubject; - Boolean firstRun = null; - String result; - - // default test - testSubject = createTestSubject(); - result = testSubject.generateRoleScript(firstRun); + public void tenerateRoleScript_notAFirstRun() { + boolean firstRun = false; + + Subscriber subscriber = createSubscriber(); + AaiResponse<SubscriberList> subscribers = createSubscriberListAaiResponse(subscriber); + doReturn(subscribers).when(aaiClientInterface).getAllSubscribers(); + + ServiceSubscription serviceSubscription = createServiceSubscription(); + AaiResponse<Services> subscriberResponse = createServicesAaiResponse(serviceSubscription); + doReturn(subscriberResponse).when(aaiClientInterface).getSubscriberData(subscriber.globalCustomerId); + + String result = testSubject.generateRoleScript(firstRun); + Assert.assertTrue(StringUtils.isNotBlank(result)); + } + + @Test(expectedExceptions = { Exception.class }) + public void tenerateRoleScript_errorGettingDataFromAAIClient() { + boolean firstRun = false; + + doThrow(new Exception("This is expected.")).when(aaiClientInterface).getAllSubscribers(); + + String result = testSubject.generateRoleScript(firstRun); + Assert.fail(); + } + + private ServiceSubscription createServiceSubscription() { + ServiceSubscription serviceSubscription = new ServiceSubscription(); + serviceSubscription.serviceType = SERVICE_TYPE; + return serviceSubscription; + } + + private AaiResponse<SubscriberList> createSubscriberListAaiResponse(Subscriber subscriber) { + AaiResponse<SubscriberList> subscribers = new AaiResponse<>(new SubscriberList(new ArrayList<>()), "", 200); + subscribers.getT().customer.add(subscriber); + return subscribers; + } + + private AaiResponse<Services> createServicesAaiResponse(ServiceSubscription serviceSubscription) { + AaiResponse<Services> subscriberResponse = new AaiResponse<>(new Services(), "", 200); + subscriberResponse.getT().serviceSubscriptions = new ServiceSubscriptions(); + subscriberResponse.getT().serviceSubscriptions.serviceSubscription = new ArrayList<>(); + subscriberResponse.getT().serviceSubscriptions.serviceSubscription.add(serviceSubscription); + return subscriberResponse; + } + + private Subscriber createSubscriber() { + Subscriber subscriber = new Subscriber(); + subscriber.globalCustomerId = GLOBAL_CUSTOMER_ID; + subscriber.subscriberName = SUBSCRIBER_NAME; + subscriber.subscriberType = SUBSCRIBER_TYPE; + subscriber.resourceVersion = RESOURCE_VERSION; + return subscriber; } |