summaryrefslogtreecommitdiffstats
path: root/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test
diff options
context:
space:
mode:
authorwaqas.ikram <waqas.ikram@est.tech>2023-01-23 14:59:18 +0000
committerwaqas.ikram <waqas.ikram@est.tech>2023-01-23 14:59:29 +0000
commit9783df1b5660ee0e0460cfd8dc5477a7edcb1d94 (patch)
treee3ffe3209ff38f839cd1af60a4f0dffd341dd1ee /so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test
parentbd591af78a4ab97af4f65d6b7094d9c60f7879c4 (diff)
Adding Create AS support
Change-Id: I4b1d417c7f20d67d5fb0d05718819186f8dd3bea Issue-ID: SO-4068 Signed-off-by: waqas.ikram <waqas.ikram@est.tech>
Diffstat (limited to 'so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test')
-rw-r--r--so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/BaseTest.java181
-rw-r--r--so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java37
-rw-r--r--so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/TestApplication.java45
-rw-r--r--so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/CreateAsTaskTest.java191
-rw-r--r--so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/resources/application.yaml2
5 files changed, 455 insertions, 1 deletions
diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/BaseTest.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/BaseTest.java
new file mode 100644
index 0000000..9920ab9
--- /dev/null
+++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/BaseTest.java
@@ -0,0 +1,181 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2023 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.cnfm.lcm.bpmn.flows;
+
+import static org.camunda.bpm.engine.history.HistoricProcessInstance.STATE_ACTIVE;
+import static org.slf4j.LoggerFactory.getLogger;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+import org.camunda.bpm.engine.HistoryService;
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
+import org.camunda.bpm.engine.history.HistoricVariableInstance;
+import org.camunda.bpm.engine.runtime.ProcessInstance;
+import org.junit.runner.RunWith;
+//import org.onap.so.cnfm.lcm.bpmn.flows.service.KubConfigProvider;
+//import org.onap.so.cnfm.lcm.bpmn.flows.tasks.MockedHelmClientConfiguration;
+//import org.onap.so.cnfm.lcm.bpmn.flows.tasks.MockedKubernetesClientProviderConfiguration;
+import org.onap.so.cnfm.lcm.database.beans.AsInst;
+import org.onap.so.cnfm.lcm.database.beans.Job;
+import org.onap.so.cnfm.lcm.database.beans.JobAction;
+import org.onap.so.cnfm.lcm.database.beans.JobStatusEnum;
+import org.onap.so.cnfm.lcm.database.service.DatabaseServiceProvider;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock;
+//import org.springframework.context.annotation.Import;
+//import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.util.FileSystemUtils;
+
+/**
+ * @author Waqas Ikram (waqas.ikram@est.tech)
+ *
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ActiveProfiles("test")
+@ContextConfiguration
+@AutoConfigureWireMock(port = 0)
+//@Import({MockedHelmClientConfiguration.class, MockedKubernetesClientProviderConfiguration.class})
+public abstract class BaseTest {
+ protected static final String SERVICE_INSTANCE_ID = UUID.randomUUID().toString();
+ protected static final String SERVICE_INSTANCE_NAME = "ServiceName";
+// private static final String KUBE_CONFIG_EMPTY_FILE_NAME = "kube-config-empty-file";
+// private static final String EMPTY = "";
+
+ protected static final String UUID_REGEX =
+ "[0-9a-zA-Z]{8}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{12}";
+ protected static final String RANDOM_JOB_ID = UUID.randomUUID().toString();
+ protected static final Logger logger = getLogger(BaseTest.class);
+
+ private static final long TIME_OUT_IN_SECONDS = 120;
+ private static final int SLEEP_TIME_IN_SECONDS = 5;
+
+ @Autowired
+ private HistoryService historyService;
+
+ @Autowired
+ private RuntimeService runtimeService;
+
+// @Autowired
+// private KubConfigProvider kubConfigProvider;
+
+ @Autowired
+ protected DatabaseServiceProvider databaseServiceProvider;
+
+ @Autowired
+ protected WireMockServer wireMockServer;
+
+ public Job createNewJob(final String jobAction, final String nsdId, final String nsName) {
+ final Job newJob = new Job().startTime(LocalDateTime.now()).jobType("AS").jobAction(JobAction.CREATE)
+ .status(JobStatusEnum.STARTING).resourceId(nsdId).resourceName(nsName);
+ databaseServiceProvider.addJob(newJob);
+ return newJob;
+ }
+
+ public Optional<Job> getJob(final String jobId) {
+ return databaseServiceProvider.getJob(jobId);
+ }
+
+ public Optional<Job> getJobByResourceId(final String resourceId) {
+ return databaseServiceProvider.getJobByResourceId(resourceId);
+ }
+
+ public ProcessInstance executeWorkflow(final String processDefinitionKey, final String businessKey,
+ final Map<String, Object> variables) {
+ return runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
+ }
+
+ public HistoricProcessInstance getHistoricProcessInstance(final String processInstanceId) {
+ return historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+ }
+
+ public HistoricVariableInstance getVariable(final String processInstanceId, final String name) {
+ return historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId)
+ .variableName(name).singleResult();
+ }
+
+ public List<HistoricVariableInstance> getVariables(final String processInstanceId) {
+ return historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).list();
+ }
+
+ public boolean waitForProcessInstanceToFinish(final String processInstanceId) throws InterruptedException {
+ final long startTimeInMillis = System.currentTimeMillis();
+ final long timeOutTime = startTimeInMillis + TimeUnit.SECONDS.toMillis(TIME_OUT_IN_SECONDS);
+ while (timeOutTime > System.currentTimeMillis()) {
+
+ if (isProcessEndedByProcessInstanceId(processInstanceId)) {
+ logger.info("processInstanceId: {} is finished", processInstanceId);
+ return true;
+ }
+ logger.info("processInstanceId: {} is still running", processInstanceId);
+ logger.info("Process instance {} not finished yet, will try again in {} seconds", processInstanceId,
+ SLEEP_TIME_IN_SECONDS);
+ TimeUnit.SECONDS.sleep(SLEEP_TIME_IN_SECONDS);
+ }
+ logger.warn("Timeout {} process didn't finished ", processInstanceId);
+ return false;
+ }
+
+
+ public boolean isProcessEndedByProcessInstanceId(final String processInstanceId) {
+ return !isProcessInstanceActive(processInstanceId) && isProcessInstanceEnded(processInstanceId)
+ && isProcessInstanceCompleted(processInstanceId);
+ }
+
+ private boolean isProcessInstanceActive(final String processInstanceId) {
+ final HistoricProcessInstance processInstance = getHistoricProcessInstance(processInstanceId);
+ return processInstance != null && STATE_ACTIVE.equalsIgnoreCase(processInstance.getState());
+ }
+
+ private boolean isProcessInstanceEnded(final String processInstanceId) {
+ return runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null;
+ }
+
+ private boolean isProcessInstanceCompleted(final String processInstanceId) {
+ final HistoricProcessInstance result =
+ historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+ return result == null ? false : HistoricProcessInstance.STATE_COMPLETED.equalsIgnoreCase(result.getState());
+ }
+
+ public void createKubeConfigFile(final AsInst asInst) throws IOException {
+// final MockMultipartFile file = new MockMultipartFile(KUBE_CONFIG_EMPTY_FILE_NAME, EMPTY.getBytes());
+// kubConfigProvider.addKubeConfigFile(file, asInst.getCloudOwner(), asInst.getCloudRegion(),
+// asInst.getTenantId());
+ }
+
+ public void deleteFoldersAndFiles(final Path path) throws IOException {
+ FileSystemUtils.deleteRecursively(path);
+ }
+
+}
diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java
new file mode 100644
index 0000000..3ae5cac
--- /dev/null
+++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2023 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.cnfm.lcm.bpmn.flows;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.context.annotation.AnnotationBeanNameGenerator;
+import org.springframework.util.ClassUtils;
+
+/**
+ * @author Waqas Ikram (waqas.ikram@est.tech)
+ *
+ */
+public class DefaultToShortClassNameBeanNameGenerator extends AnnotationBeanNameGenerator {
+
+ @Override
+ protected String buildDefaultBeanName(final BeanDefinition definition) {
+ return ClassUtils.getShortName(definition.getBeanClassName());
+ }
+}
diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/TestApplication.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/TestApplication.java
new file mode 100644
index 0000000..40868ab
--- /dev/null
+++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/TestApplication.java
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2023 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.cnfm.lcm.bpmn.flows;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.ComponentScan.Filter;
+
+/**
+ * @author Waqas Ikram (waqas.ikram@est.tech)
+ *
+ */
+@SpringBootApplication(scanBasePackages = {"org.onap.so"})
+@EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class})
+@ComponentScan(basePackages = {"org.onap"}, nameGenerator = DefaultToShortClassNameBeanNameGenerator.class,
+ excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class)})
+public class TestApplication {
+
+ public static void main(final String[] args) {
+ new SpringApplication(TestApplication.class).run(args);
+ }
+
+}
diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/CreateAsTaskTest.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/CreateAsTaskTest.java
new file mode 100644
index 0000000..bd0afe9
--- /dev/null
+++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/CreateAsTaskTest.java
@@ -0,0 +1,191 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2023 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.cnfm.lcm.bpmn.flows.tasks;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+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.okJson;
+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.assertTrue;
+import static org.onap.aaiclient.client.aai.AAIVersion.V19;
+import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.CLOUD_OWNER_PARAM_KEY;
+import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.CLOUD_REGION_PARAM_KEY;
+import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.SERVICE_INSTANCE_ID_PARAM_KEY;
+import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.SERVICE_INSTANCE_NAME_PARAM_KEY;
+import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.TENANT_ID_PARAM_KEY;
+import static org.springframework.http.HttpHeaders.ACCEPT;
+import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM_VALUE;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+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.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aaiclient.client.aai.entities.Results;
+import org.onap.aaiclient.client.graphinventory.entities.Resource;
+import org.onap.so.cnfm.lcm.bpmn.flows.BaseTest;
+import org.onap.so.cnfm.lcm.bpmn.flows.service.JobExecutorService;
+import org.onap.so.cnfm.lcm.database.beans.Job;
+import org.onap.so.cnfm.lcm.database.beans.JobStatusEnum;
+import org.onap.so.cnfm.lcm.model.AsInstance;
+import org.onap.so.cnfm.lcm.model.AsInstance.InstantiationStateEnum;
+import org.onap.so.cnfm.lcm.model.CreateAsRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * @author Waqas Ikram (waqas.ikram@est.tech)
+ *
+ */
+public class CreateAsTaskTest extends BaseTest {
+ private static final String SRC_TEST_DIR = "src/test/resources";
+ private static final String TENAT_ID = UUID.randomUUID().toString();
+ private static final String CLOUD_OWNER = "CloudOwner";
+ private static final String CLOUD_REGION = "CloudRegion";
+ private static final String ASD_ID = UUID.randomUUID().toString();
+ private static final String AS_NAME = "CreateAsService-" + ASD_ID;
+ private static final String SDC_GET_RESOURCE_URL = "/sdc/v1/catalog/resources/" + ASD_ID + "/toscaModel";
+ private static final String RESOURCE_ASD_PACKAGE_CSAR_PATH =
+ SRC_TEST_DIR + "/resource-Generatedasdpackage-csar.csar";
+
+ @Autowired
+ private JobExecutorService objUnderTest;
+
+ @Before
+ public void before() {
+ wireMockServer.resetAll();
+ }
+
+ @After
+ public void after() {
+ wireMockServer.resetAll();
+ }
+
+ @Test
+ public void testCreateAsWorkflow_SuccessfullCase() throws InterruptedException, IOException {
+
+ wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL)
+ .willReturn(aResponse().withBody(getFileContent(getAbsolutePath(RESOURCE_ASD_PACKAGE_CSAR_PATH)))
+ .withHeader(ACCEPT, APPLICATION_OCTET_STREAM_VALUE)));
+
+ final CreateAsRequest createAsRequest = getCreateAsRequest();
+
+ mockAAIEndpoints();
+
+ final AsInstance nsResponse = objUnderTest.runCreateAsJob(createAsRequest);
+ assertNotNull(nsResponse);
+ assertNotNull(nsResponse.getAsInstanceid());
+
+ final Optional<Job> optional = getJobByResourceId(createAsRequest.getAsdId());
+ assertTrue(optional.isPresent());
+ final Job job = optional.get();
+
+ assertTrue(waitForProcessInstanceToFinish(job.getProcessInstanceId()));
+
+ final HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(job.getProcessInstanceId());
+ assertNotNull(historicProcessInstance);
+
+ assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
+ assertTrue(databaseServiceProvider.isAsInstExists(createAsRequest.getAsInstanceName()));
+
+ final Job actualJob = optional.get();
+ assertEquals(JobStatusEnum.FINISHED, actualJob.getStatus());
+
+ assertEquals(AS_NAME, nsResponse.getAsInstanceName());
+ assertEquals(InstantiationStateEnum.NOT_INSTANTIATED, nsResponse.getInstantiationState());
+
+ final HistoricVariableInstance doesNsPackageExistsVar =
+ getVariable(job.getProcessInstanceId(), "doesAsPackageExists");
+ assertNotNull(doesNsPackageExistsVar);
+ assertTrue((boolean) doesNsPackageExistsVar.getValue());
+
+ final HistoricVariableInstance doesNsInstanceExistsVar =
+ getVariable(job.getProcessInstanceId(), "doesAsInstanceExists");
+ assertNotNull(doesNsInstanceExistsVar);
+ assertFalse((boolean) doesNsInstanceExistsVar.getValue());
+
+ }
+
+ private CreateAsRequest getCreateAsRequest() {
+ return getCreateAsRequest(ASD_ID, AS_NAME);
+ }
+
+ private CreateAsRequest getCreateAsRequest(final String asdId, final String asName) {
+ final Map<String, Object> additionalParams = Map.of(SERVICE_INSTANCE_ID_PARAM_KEY, SERVICE_INSTANCE_ID,
+ SERVICE_INSTANCE_NAME_PARAM_KEY, SERVICE_INSTANCE_NAME, CLOUD_OWNER_PARAM_KEY, CLOUD_OWNER,
+ CLOUD_REGION_PARAM_KEY, CLOUD_REGION, TENANT_ID_PARAM_KEY, TENAT_ID);
+
+ return new CreateAsRequest().asdId(asdId).asInstanceName(asName).additionalParams(additionalParams);
+ }
+
+ private void mockAAIEndpoints() throws JsonProcessingException {
+ final String modelEndpoint = "/aai/" + V19 + "/network/generic-vnfs/generic-vnf/" + UUID_REGEX;
+
+ wireMockServer.stubFor(
+ get(urlMatching(modelEndpoint + "\\?resultIndex=0&resultSize=1&format=count")).willReturn(notFound()));
+
+ wireMockServer.stubFor(put(urlMatching(modelEndpoint)).willReturn(ok()));
+ wireMockServer.stubFor(put(urlMatching(modelEndpoint + "/relationship-list/relationship")).willReturn(ok()));
+
+ wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(ok())
+ .willReturn(okJson("{\"orchestration-status\": \"Created\"}")));
+
+ wireMockServer.stubFor(get(urlMatching("/aai/" + V19 + "/nodes/service-instances/service-instance/.*"))
+ .willReturn(okJson(getResourceResultsResponseAsJson(SERVICE_INSTANCE_ID))));
+
+ wireMockServer.stubFor(put(urlMatching("/aai/" + V19 + "/cloud-infrastructure/cloud-regions/cloud-region/"
+ + CLOUD_OWNER + "/" + CLOUD_REGION + "/tenants/tenant/" + TENAT_ID + "/relationship-list/relationship"))
+ .willReturn(ok()));
+
+ }
+
+ private String getResourceResultsResponseAsJson(final String nsdId) throws JsonProcessingException {
+ final Resource resource = new Resource();
+ resource.setResourceType("service-instance");
+ resource.setResourceLink("/aai/" + V19 + "/business/customers/customer/GLOBAL_CUSTOMER_ID"
+ + "/service-subscriptions/service-subscription/NetworkService/service-instances/service-instance/"
+ + nsdId);
+ final Results<Resource> results = new Results<>();
+ results.getResult().add(resource);
+ return new ObjectMapper().writeValueAsString(results);
+ }
+
+ private Path getAbsolutePath(final String path) {
+ final File file = new File(path);
+ return file.toPath();
+ }
+
+ private byte[] getFileContent(final Path path) throws IOException {
+ return Files.readAllBytes(path);
+ }
+}
diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/resources/application.yaml b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/resources/application.yaml
index 404bbdb..72bc80f 100644
--- a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/resources/application.yaml
+++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/resources/application.yaml
@@ -1,4 +1,4 @@
-# Copyright © 2022 Nordix Foundation
+# Copyright © 2023 Nordix Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.