diff options
Diffstat (limited to 'so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java')
-rw-r--r-- | so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java | 381 |
1 files changed, 0 insertions, 381 deletions
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java deleted file mode 100644 index 3686cd620d..0000000000 --- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java +++ /dev/null @@ -1,381 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks; - -import static com.github.tomakehurst.wiremock.client.WireMock.get; -import static com.github.tomakehurst.wiremock.client.WireMock.notFound; -import static com.github.tomakehurst.wiremock.client.WireMock.ok; -import static com.github.tomakehurst.wiremock.client.WireMock.put; -import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog.EtsiCatalogServiceProviderConfiguration.ETSI_CATALOG_REST_TEMPLATE_BEAN; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.method; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; -import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; -import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; -import java.time.LocalDateTime; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.UUID; -import org.camunda.bpm.engine.history.HistoricProcessInstance; -import org.camunda.bpm.engine.history.HistoricVariableInstance; -import org.camunda.bpm.engine.runtime.ProcessInstance; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdInfo; -import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest; -import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants; -import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider; -import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.NsRequestProcessingException; -import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.JobExecutorService; -import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.WorkflowQueryService; -import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum; -import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob; -import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst; -import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State; -import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest; -import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400; -import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance; -import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance.NsStateEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.converter.json.GsonHttpMessageConverter; -import org.springframework.test.web.client.MockRestServiceServer; -import org.springframework.web.client.RestTemplate; -import com.github.tomakehurst.wiremock.client.WireMock; -import com.google.gson.Gson; - -/** - * @author Waqas Ikram (waqas.ikram@est.tech) - * - */ -public class CreateNsTaskTest extends BaseTest { - private static final String NSD_ID = UUID.randomUUID().toString(); - private static final String NS_NAME = "CreateNetworkService-" + NSD_ID; - private static final String CREATE_NS_WORKFLOW_NAME = "CreateNs"; - - @Autowired - @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN) - private RestTemplate restTemplate; - - @Autowired - private GsonProvider gsonProvider; - - @Autowired - private JobExecutorService objUnderTest; - - @Autowired - private WorkflowQueryService workflowQueryService; - - private MockRestServiceServer mockRestServiceServer; - - private Gson gson; - - @Before - public void before() { - wireMockServer.resetAll(); - final MockRestServiceServer.MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(restTemplate); - builder.ignoreExpectOrder(true); - mockRestServiceServer = builder.build(); - gson = gsonProvider.getGson(); - restTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gson)); - } - - @After - public void after() { - wireMockServer.resetAll(); - mockRestServiceServer.reset(); - } - - @Test - public void testCreateNsWorkflow_SuccessfullCase() throws InterruptedException { - final CreateNsRequest createNsRequest = getCreateNsRequest(); - - mockEtsiCatalogEndpoints(); - mockAAIEndpoints(createNsRequest); - - final NsInstancesNsInstance nsResponse = - objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE); - assertNotNull(nsResponse); - assertNotNull(nsResponse.getId()); - - final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId()); - assertTrue(optional.isPresent()); - final NfvoJob nfvoJob = optional.get(); - - assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId())); - - mockRestServiceServer.verify(); - final HistoricProcessInstance historicProcessInstance = - getHistoricProcessInstance(nfvoJob.getProcessInstanceId()); - assertNotNull(historicProcessInstance); - - assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState()); - assertTrue(databaseServiceProvider.isNsInstExists(createNsRequest.getNsName())); - - final NfvoJob actualJob = optional.get(); - assertEquals(JobStatusEnum.FINISHED, actualJob.getStatus()); - - assertEquals(NS_NAME, nsResponse.getNsInstanceName()); - assertEquals(NsStateEnum.NOT_INSTANTIATED, nsResponse.getNsState()); - - final HistoricVariableInstance doesNsPackageExistsVar = - getVariable(nfvoJob.getProcessInstanceId(), "doesNsPackageExists"); - assertNotNull(doesNsPackageExistsVar); - assertTrue((boolean) doesNsPackageExistsVar.getValue()); - - final HistoricVariableInstance doesNsInstanceExistsVar = - getVariable(nfvoJob.getProcessInstanceId(), "doesNsInstanceExists"); - assertNotNull(doesNsInstanceExistsVar); - assertFalse((boolean) doesNsInstanceExistsVar.getValue()); - - } - - @Test - public void testCreateNsWorkflow_FailsToGetNsPackage() throws InterruptedException { - final String nsdId = UUID.randomUUID().toString(); - final String nsdName = NS_NAME + "-" + System.currentTimeMillis(); - final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName); - - mockRestServiceServer.expect(requestTo(ETSI_CATALOG_URL + "/nsd/v1/ns_descriptors/" + nsdId)) - .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.NOT_FOUND)); - - try { - objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE); - fail("runCreateNsJob should throw exception"); - } catch (final Exception exception) { - assertEquals(NsRequestProcessingException.class, exception.getClass()); - } - - final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId()); - assertTrue(optional.isPresent()); - final NfvoJob nfvoJob = optional.get(); - assertEquals(JobStatusEnum.ERROR, nfvoJob.getStatus()); - - assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId())); - - mockRestServiceServer.verify(); - final HistoricProcessInstance historicProcessInstance = - getHistoricProcessInstance(nfvoJob.getProcessInstanceId()); - assertNotNull(historicProcessInstance); - - assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState()); - - - final HistoricVariableInstance nsResponseVariable = - getVariable(nfvoJob.getProcessInstanceId(), CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME); - assertNull(nsResponseVariable); - - final Optional<InlineResponse400> problemDetailsOptional = - workflowQueryService.getProblemDetails(nfvoJob.getProcessInstanceId()); - assertTrue(problemDetailsOptional.isPresent()); - - final InlineResponse400 problemDetails = problemDetailsOptional.get(); - assertNotNull(problemDetails); - assertNotNull(problemDetails.getDetail()); - - final HistoricVariableInstance doesNsPackageExistsVar = - getVariable(nfvoJob.getProcessInstanceId(), "doesNsPackageExists"); - assertNotNull(doesNsPackageExistsVar); - assertFalse((boolean) doesNsPackageExistsVar.getValue()); - assertEquals("Unexpected exception occured while getting ns package using nsdId: " + nsdId, - problemDetails.getDetail()); - } - - @Test - public void testCreateNsWorkflow_FailsToFindJobUsingJobId() throws InterruptedException { - final String nsdId = UUID.randomUUID().toString(); - final String nsdName = NS_NAME + "-" + System.currentTimeMillis(); - final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName); - - final String randomJobId = UUID.randomUUID().toString(); - final ProcessInstance processInstance = - executeWorkflow(CREATE_NS_WORKFLOW_NAME, randomJobId, getVariables(randomJobId, createNsRequest)); - assertTrue(waitForProcessInstanceToFinish(processInstance.getProcessInstanceId())); - - mockRestServiceServer.verify(); - final HistoricProcessInstance historicProcessInstance = - getHistoricProcessInstance(processInstance.getProcessInstanceId()); - assertNotNull(historicProcessInstance); - - assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState()); - - final HistoricVariableInstance nsResponseVariable = getVariable(processInstance.getProcessInstanceId(), - CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME); - - assertNull(nsResponseVariable); - - final HistoricVariableInstance workflowExceptionVariable = getVariable(processInstance.getProcessInstanceId(), - CamundaVariableNameConstants.NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME); - - final InlineResponse400 problemDetails = (InlineResponse400) workflowExceptionVariable.getValue(); - assertNotNull(problemDetails); - assertNotNull(problemDetails.getDetail()); - assertEquals("Unable to find job using job id: " + randomJobId, problemDetails.getDetail()); - - } - - @Test - public void testCreateNsWorkflow_NsInstanceExistsInDb() throws InterruptedException { - final String nsdId = UUID.randomUUID().toString(); - final String nsdName = NS_NAME + "-" + System.currentTimeMillis(); - final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName); - - databaseServiceProvider.saveNfvoNsInst(new NfvoNsInst().nsInstId(nsdId).name(createNsRequest.getNsName()) - .nsPackageId(UUID.randomUUID().toString()).nsdId(nsdId).nsdInvariantId(nsdId) - .description(createNsRequest.getNsDescription()).status(State.INSTANTIATED) - .statusUpdatedTime(LocalDateTime.now()).globalCustomerId(GLOBAL_CUSTOMER_ID).serviceType(SERVICE_TYPE)); - - mockEtsiCatalogEndpoints(nsdId); - - try { - objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE); - fail("runCreateNsJob should throw exception"); - } catch (final Exception exception) { - assertEquals(NsRequestProcessingException.class, exception.getClass()); - } - - final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId()); - assertTrue(optional.isPresent()); - final NfvoJob nfvoJob = optional.get(); - assertEquals(JobStatusEnum.ERROR, nfvoJob.getStatus()); - - assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId())); - - mockRestServiceServer.verify(); - final HistoricProcessInstance historicProcessInstance = - getHistoricProcessInstance(nfvoJob.getProcessInstanceId()); - assertNotNull(historicProcessInstance); - - assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState()); - assertTrue(databaseServiceProvider.isNsInstExists(createNsRequest.getNsName())); - - final HistoricVariableInstance historicVariableInstance = - getVariable(nfvoJob.getProcessInstanceId(), CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME); - - assertNull(historicVariableInstance); - - final Optional<InlineResponse400> problemDetailsOptional = - workflowQueryService.getProblemDetails(nfvoJob.getProcessInstanceId()); - - final InlineResponse400 problemDetails = problemDetailsOptional.get(); - assertNotNull(problemDetails); - assertNotNull(problemDetails.getDetail()); - assertTrue(problemDetails.getDetail().startsWith("Ns Instance already exists in database")); - - final HistoricVariableInstance doesNsInstanceExistsVar = - getVariable(nfvoJob.getProcessInstanceId(), "doesNsInstanceExists"); - assertNotNull(doesNsInstanceExistsVar); - assertTrue((boolean) doesNsInstanceExistsVar.getValue()); - - } - - @Test - public void testCreateNsWorkflow_FailToCreateResouceInAai() throws InterruptedException { - final String nsdId = UUID.randomUUID().toString(); - final String nsdName = NS_NAME + "-" + System.currentTimeMillis(); - final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName); - - mockEtsiCatalogEndpoints(nsdId); - - final String modelEndpoint = getAaiServiceInstanceEndPoint(); - wireMockServer.stubFor(put(urlMatching(modelEndpoint)).willReturn(WireMock.serverError())); - wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(WireMock.serverError())); - - try { - objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE); - fail("runCreateNsJob should throw exception"); - } catch (final Exception exception) { - assertEquals(NsRequestProcessingException.class, exception.getClass()); - } - final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId()); - assertTrue(optional.isPresent()); - final NfvoJob nfvoJob = optional.get(); - assertEquals(JobStatusEnum.ERROR, nfvoJob.getStatus()); - - mockRestServiceServer.verify(); - final HistoricProcessInstance historicProcessInstance = - getHistoricProcessInstance(nfvoJob.getProcessInstanceId()); - assertNotNull(historicProcessInstance); - - assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState()); - assertTrue(databaseServiceProvider.isNsInstExists(createNsRequest.getNsName())); - - final Optional<InlineResponse400> problemDetailsOptional = - workflowQueryService.getProblemDetails(nfvoJob.getProcessInstanceId()); - - final InlineResponse400 problemDetails = problemDetailsOptional.get(); - assertNotNull(problemDetails); - assertEquals("Unable to Create Service Instance in AAI", problemDetails.getDetail()); - - } - - private void mockAAIEndpoints(final CreateNsRequest createNsRequest) { - final String modelEndpoint = getAaiServiceInstanceEndPoint(); - - wireMockServer.stubFor(put(urlMatching(modelEndpoint)).willReturn(ok())); - wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(notFound())); - } - - private void mockEtsiCatalogEndpoints(final String nsdId) { - mockRestServiceServer.expect(requestTo(ETSI_CATALOG_URL + "/nsd/v1/ns_descriptors/" + nsdId)) - .andExpect(method(HttpMethod.GET)) - .andRespond(withSuccess(gson.toJson(getNSPackageModel(NSD_ID)), MediaType.APPLICATION_JSON)); - } - - private void mockEtsiCatalogEndpoints() { - mockEtsiCatalogEndpoints(NSD_ID);; - } - - private NsdInfo getNSPackageModel(final String nsdId) { - return new NsdInfo().id(nsdId).nsdId(nsdId).nsdInvariantId(NSD_INVARIANT_ID).nsdName("vcpe").nsdDesigner("ONAP") - .vnfPkgIds(Arrays.asList(GLOBAL_CUSTOMER_ID)); - } - - private CreateNsRequest getCreateNsRequest() { - return getCreateNsRequest(NSD_ID, NS_NAME); - } - - private CreateNsRequest getCreateNsRequest(final String nsdId, final String nsName) { - return new CreateNsRequest().nsdId(nsdId).nsName(nsName); - } - - private Map<String, Object> getVariables(final String jobId, final CreateNsRequest createNsRequest) { - final Map<String, Object> variables = new HashMap<>(); - variables.put(CamundaVariableNameConstants.JOB_ID_PARAM_NAME, jobId); - variables.put(CamundaVariableNameConstants.CREATE_NS_REQUEST_PARAM_NAME, createNsRequest); - variables.put(CamundaVariableNameConstants.GLOBAL_CUSTOMER_ID_PARAM_NAME, GLOBAL_CUSTOMER_ID); - variables.put(CamundaVariableNameConstants.SERVICE_TYPE_PARAM_NAME, SERVICE_TYPE); - - return variables; - } - -} |