Merge branch 'recursive-orch'
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / service / composition / CreateChildServiceBBTest.java
1 package org.onap.so.bpmn.infrastructure.service.composition;
2
3 import com.fasterxml.jackson.databind.DeserializationFeature;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5 import org.junit.Before;
6 import org.junit.Test;
7 import org.junit.runner.RunWith;
8 import org.onap.logging.filter.base.ONAPComponentsList;
9 import org.onap.so.bpmn.common.BuildingBlockExecution;
10 import org.onap.so.bpmn.infrastructure.decisionpoint.impl.buildingblock.MockControllerBB;
11 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
12 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
13 import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
14 import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
15 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
16 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
17 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
18 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
19 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
20 import org.onap.so.client.exception.ExceptionBuilder;
21 import org.onap.so.client.orchestration.ApiHandlerClient;
22 import org.onap.so.client.orchestration.ApiHandlerClientException;
23 import org.onap.so.serviceinstancebeans.RequestDetails;
24 import org.onap.so.serviceinstancebeans.RequestInfo;
25 import org.onap.so.serviceinstancebeans.RequestReferences;
26 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
27 import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
28 import org.springframework.beans.factory.annotation.Autowired;
29 import org.springframework.boot.test.mock.mockito.MockBean;
30 import org.springframework.test.context.ContextConfiguration;
31 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
32 import java.io.IOException;
33 import java.util.HashMap;
34 import java.util.Map;
35 import static org.mockito.ArgumentMatchers.any;
36 import static org.mockito.ArgumentMatchers.anyInt;
37 import static org.mockito.ArgumentMatchers.anyString;
38 import static org.mockito.Mockito.verify;
39 import static org.mockito.Mockito.when;
40 import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_INSTANCE_ID;
41 import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID;
42 import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ID;
43 import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_PAYLOAD;
44
45 @RunWith(SpringJUnit4ClassRunner.class)
46 @ContextConfiguration(classes = {CreateChildServiceBB.class, MockControllerBB.class, ExceptionBuilder.class})
47 public class CreateChildServiceBBTest {
48
49     @Autowired
50     private CreateChildServiceBB createChildServiceBB;
51
52     @MockBean
53     private BuildingBlockExecution execution;
54
55     @MockBean
56     private ApiHandlerClient apiHandlerClient;
57
58     @MockBean
59     private ExceptionBuilder exceptionBuilder;
60
61     @Before
62     public void setUp() throws IOException, ApiHandlerClientException {
63         String incomingRequest =
64                 "{\"requestDetails\":{\"subscriberInfo\":{\"globalSubscriberId\":\"ubuntu-customer\"},\"requestInfo\":{\"suppressRollback\":false,\"instanceName\":\"LcmDemo\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"requestorId\":\"portal\",\"source\":\"postman\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"requestParameters\":{\"subscriptionServiceType\":\"ubuntu\",\"userParams\":[{\"Homing_Solution\":\"none\"},{\"service\":{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}],\"services\":[{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelCustomizationId\":\"cs1-svc-modelCustomizationId\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service1-instanceName\"},{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelCustomizationId\":\"cs1-svc-modelCustomizationId\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service2-instanceName\"}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-UbuntuDemo\"},\"owningEntity\":{\"owningEntityId\":\"33a8b609-1cfe-4d19-8dc2-5b95b921de1e\",\"owningEntityName\":\"demo\"},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}";
65
66         ObjectMapper mapper = new ObjectMapper();
67         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
68
69         ServiceInstancesRequest request = mapper.readValue(incomingRequest, ServiceInstancesRequest.class);
70         RequestContext context = new RequestContext();
71         RequestParameters parameters = new RequestParameters();
72         parameters.setUserParams(request.getRequestDetails().getRequestParameters().getUserParams());
73         context.setRequestParameters(parameters);
74         context.setProductFamilyId("FamilyId");
75         context.setSource("source");
76         context.setRequestorId("RequestOrId");
77
78         CloudRegion cloudRegion = new CloudRegion();
79         cloudRegion.setCloudOwner("CloudOwner");
80         cloudRegion.setLcpCloudRegionId("my-region-id");
81         cloudRegion.setTenantId("tenant-id");
82
83         Customer customer = new Customer();
84         customer.setGlobalCustomerId("GlobalCustomerId");
85         customer.setSubscriberName("SubscriberName");
86
87         ServiceInstance serviceInstance = new ServiceInstance();
88         OwningEntity owningEntity = new OwningEntity();
89         owningEntity.setOwningEntityId("owningEntityId");
90         owningEntity.setOwningEntityName("owningEntityName");
91         serviceInstance.setOwningEntity(owningEntity);
92
93         Project project = new Project();
94         project.setProjectName("projectName");
95         serviceInstance.setProject(project);
96
97         serviceInstance.setServiceInstanceId("serviceInstanceId");
98
99         GeneralBuildingBlock gbb = new GeneralBuildingBlock();
100         gbb.setCloudRegion(cloudRegion);
101         gbb.setCustomer(customer);
102         gbb.setRequestContext(context);
103         gbb.setServiceInstance(serviceInstance);
104
105         Map<ResourceKey, String> map = new HashMap<>();
106         map.put(ResourceKey.CHILD_SERVICE_INSTANCE_NAME, "service1-instanceName");
107
108         when(execution.getGeneralBuildingBlock()).thenReturn(gbb);
109         when(execution.getLookupMap()).thenReturn(map);
110
111         ServiceInstancesResponse response = new ServiceInstancesResponse();
112         response.setRequestReferences(new RequestReferences());
113         response.getRequestReferences().setInstanceId("instanceId");
114         response.getRequestReferences().setRequestId("requestId");
115
116         when(apiHandlerClient.createServiceInstance(any())).thenReturn(response);
117     }
118
119     @Test
120     public void buildRequestTest() {
121         createChildServiceBB.buildRequest(execution);
122     }
123
124     @Test
125     public void sendRequestTest() throws Exception {
126         ServiceInstancesRequest sir = new ServiceInstancesRequest();
127         RequestDetails details = new RequestDetails();
128         details.setRequestInfo(new RequestInfo());
129         details.getRequestInfo().setCorrelator("correlator");
130         sir.setRequestDetails(details);
131
132         when(execution.getVariable(CHILD_SVC_REQ_PAYLOAD)).thenReturn(sir);
133         createChildServiceBB.sendRequest(execution);
134         verify(execution).setVariable(CHILD_SVC_REQ_ID, "requestId");
135         verify(execution).setVariable(CHILD_SVC_INSTANCE_ID, "instanceId");
136         verify(execution).setVariable(CHILD_SVC_REQ_CORRELATION_ID, "correlator");
137     }
138
139     @Test
140     public void handleFailureTest() {
141         createChildServiceBB.handleFailure(execution);
142         verify(exceptionBuilder).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), anyInt(),
143                 anyString(), any(ONAPComponentsList.class));
144     }
145 }