Enable DeleteChildService functionality
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / service / composition / ChildServiceRequestBuilderTest.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.Assert;
6 import org.junit.Before;
7 import org.junit.Test;
8 import org.onap.so.bpmn.common.BuildingBlockExecution;
9 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
10 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
11 import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
12 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
13 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
14 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
15 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
16 import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
17 import org.onap.so.serviceinstancebeans.CloudConfiguration;
18 import org.onap.so.serviceinstancebeans.InstanceDirection;
19 import org.onap.so.serviceinstancebeans.ModelInfo;
20 import org.onap.so.serviceinstancebeans.ModelType;
21 import org.onap.so.serviceinstancebeans.RelatedInstance;
22 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
23 import org.onap.so.serviceinstancebeans.RequestInfo;
24 import org.onap.so.serviceinstancebeans.Service;
25 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
26 import org.onap.so.serviceinstancebeans.SubscriberInfo;
27 import java.io.IOException;
28 import java.util.List;
29 import java.util.Map;
30 import java.util.UUID;
31 import static org.mockito.Mockito.doReturn;
32 import static org.mockito.Mockito.mock;
33
34 public class ChildServiceRequestBuilderTest {
35
36     private BuildingBlockExecution mockExecution;
37     private List<Map<String, Object>> userParamsExpected;
38
39     @Before
40     public void setUp() throws IOException {
41         String incomingRequest =
42                 "{\"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\"}}}";
43
44         ObjectMapper mapper = new ObjectMapper();
45         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
46
47         ServiceInstancesRequest request = mapper.readValue(incomingRequest, ServiceInstancesRequest.class);
48         userParamsExpected = request.getRequestDetails().getRequestParameters().getUserParams();
49         RequestContext context = new RequestContext();
50         RequestParameters parameters = new RequestParameters();
51         parameters.setUserParams(request.getRequestDetails().getRequestParameters().getUserParams());
52         context.setRequestParameters(parameters);
53         context.setProductFamilyId("FamilyId");
54         context.setSource("source");
55         context.setRequestorId("RequestOrId");
56         context.setAction("createInstance");
57
58         CloudRegion cloudRegion = new CloudRegion();
59         cloudRegion.setCloudOwner("CloudOwner");
60         cloudRegion.setLcpCloudRegionId("my-region-id");
61         cloudRegion.setTenantId("tenant-id");
62
63         Customer customer = new Customer();
64         customer.setGlobalCustomerId("GlobalCustomerId");
65         customer.setSubscriberName("SubscriberName");
66
67         ServiceInstance serviceInstance = new ServiceInstance();
68         OwningEntity owningEntity = new OwningEntity();
69         owningEntity.setOwningEntityId("owningEntityId");
70         owningEntity.setOwningEntityName("owningEntityName");
71         serviceInstance.setOwningEntity(owningEntity);
72
73         Project project = new Project();
74         project.setProjectName("projectName");
75         serviceInstance.setProject(project);
76
77         serviceInstance.setServiceInstanceId("serviceInstanceId");
78
79         GeneralBuildingBlock gbb = new GeneralBuildingBlock();
80         gbb.setCloudRegion(cloudRegion);
81         gbb.setCustomer(customer);
82         gbb.setRequestContext(context);
83         gbb.setServiceInstance(serviceInstance);
84         mockExecution = mock(BuildingBlockExecution.class);
85         doReturn(gbb).when(mockExecution).getGeneralBuildingBlock();
86         doReturn("CreateChildServiceBB").when(mockExecution).getFlowToBeCalled();
87     }
88
89     @Test
90     public void deleteChildServiceRequestBuilderTest() {
91         Service parent = new Service();
92         Service child = new Service();
93
94         ChildServiceRequestBuilder builder = ChildServiceRequestBuilder.getInstance(mockExecution, parent, child);
95         ServiceInstancesRequest sir = builder
96                 .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
97                 .setCorrelationId(UUID.randomUUID().toString()).setChildSvcInstanceId("childInstanceId").build();
98
99         Assert.assertEquals("childInstanceId", sir.getServiceInstanceId());
100         Assert.assertEquals("serviceInstanceId",
101                 sir.getRequestDetails().getRelatedInstanceList()[0].getRelatedInstance().getInstanceId());
102     }
103
104     @Test
105     public void createChildServiceRequestBuilderTest() {
106
107         ServiceInstancesRequest sir = ChildServiceRequestBuilder.getInstance(mockExecution, "service1-instanceName")
108                 .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
109                 .setCorrelationId(UUID.randomUUID().toString()).setChildSvcInstanceId("childInstanceId").build();
110
111         Assert.assertEquals("childInstanceId", sir.getServiceInstanceId());
112
113         // modelInfo
114         ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
115         Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", modelInfo.getModelInvariantId());
116         Assert.assertEquals(ModelType.service, modelInfo.getModelType());
117         Assert.assertEquals("GuilinLcmSVC", modelInfo.getModelName());
118         Assert.assertEquals("2.0", modelInfo.getModelVersion());
119         Assert.assertEquals("cs1-svc-modelCustomizationId", modelInfo.getModelCustomizationId());
120         Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", modelInfo.getModelVersionId());
121         Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", modelInfo.getModelUuid());
122         Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", modelInfo.getModelInvariantUuid());
123
124         // requestInfo
125         RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
126         Assert.assertNotNull(requestInfo.getCorrelator());
127         Assert.assertEquals("FamilyId", requestInfo.getProductFamilyId());
128         Assert.assertEquals("source", requestInfo.getSource());
129         Assert.assertEquals("service1-instanceName", requestInfo.getInstanceName());
130         Assert.assertEquals(false, requestInfo.getSuppressRollback());
131         Assert.assertEquals("RequestOrId", requestInfo.getRequestorId());
132
133         RelatedInstanceList[] relatedInstanceList = sir.getRequestDetails().getRelatedInstanceList();
134         Assert.assertEquals(1, relatedInstanceList.length);
135         RelatedInstance relatedInstance = relatedInstanceList[0].getRelatedInstance();
136         Assert.assertEquals("serviceInstanceId", relatedInstance.getInstanceId());
137         Assert.assertEquals(InstanceDirection.source, relatedInstance.getInstanceDirection());
138
139         ModelInfo parentModel = relatedInstance.getModelInfo();
140         Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", parentModel.getModelInvariantId());
141         Assert.assertEquals(ModelType.service, parentModel.getModelType());
142         Assert.assertEquals("GuilinLcmSVC", parentModel.getModelName());
143         Assert.assertEquals("2.0", parentModel.getModelVersion());
144         Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", parentModel.getModelVersionId());
145         Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", parentModel.getModelUuid());
146         Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", parentModel.getModelInvariantUuid());
147
148         SubscriberInfo subsciberInfo = sir.getRequestDetails().getSubscriberInfo();
149         Assert.assertEquals("GlobalCustomerId", subsciberInfo.getGlobalSubscriberId());
150         Assert.assertEquals("SubscriberName", subsciberInfo.getSubscriberName());
151
152         CloudConfiguration cloudConfiguration = sir.getRequestDetails().getCloudConfiguration();
153         Assert.assertEquals("tenant-id", cloudConfiguration.getTenantId());
154         Assert.assertEquals("CloudOwner", cloudConfiguration.getCloudOwner());
155         Assert.assertEquals("my-region-id", cloudConfiguration.getLcpCloudRegionId());
156
157         org.onap.so.serviceinstancebeans.RequestParameters requestParameters =
158                 sir.getRequestDetails().getRequestParameters();
159         Assert.assertEquals(2, requestParameters.getUserParams().size());
160         Assert.assertEquals(userParamsExpected.get(0), requestParameters.getUserParams().get(0));
161
162         ObjectMapper mapper = new ObjectMapper();
163         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
164
165         try {
166             String expectedChildService =
167                     mapper.writeValueAsString(getChildService(userParamsExpected, "service1-instanceName"));
168             String actualChildService =
169                     mapper.writeValueAsString(requestParameters.getUserParams().get(1).get("service"));
170             Assert.assertEquals(expectedChildService, actualChildService);
171         } catch (Exception e) {
172             Assert.fail();
173         }
174
175         org.onap.so.serviceinstancebeans.Project project = sir.getRequestDetails().getProject();
176         Assert.assertEquals("projectName", project.getProjectName());
177
178         org.onap.so.serviceinstancebeans.OwningEntity owningEntity = sir.getRequestDetails().getOwningEntity();
179         Assert.assertEquals("owningEntityId", owningEntity.getOwningEntityId());
180         Assert.assertEquals("owningEntityName", owningEntity.getOwningEntityName());
181     }
182
183     @Test
184     public void childServiceCloudConfigurationRequestBuilderTest() throws IOException {
185         String incomingRequest =
186                 "{\"requestDetails\":{\"subscriberInfo\":{\"globalSubscriberId\":\"ubuntu-customer\"},\"requestInfo\":{\"suppressRollback\":false,\"instanceName\":\"onap-test-parent-child-service\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"requestorId\":\"portal\",\"source\":\"postman\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"215\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"iaas\"},\"requestParameters\":{\"subscriptionServiceType\":\"ubuntu\",\"userParams\":[{\"Homing_Solution\":\"none\"},{\"service\":{\"instanceParams\":[],\"resources\":{\"services\":[{\"instanceParams\":[],\"resources\":{},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service1-instanceName-child\",\"cloudConfiguration\":{\"lcpCloudRegionId\":\"test\",\"tenantId\":\"1234567890\",\"cloudOwner\":\"demo\"}},{\"instanceParams\":[],\"resources\":{},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service2-instanceName-child\"}]},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-UbuntuDemo\"},\"owningEntity\":{\"owningEntityId\":\"33a8b609-1cfe-4d19-8dc2-5b95b921de1e\",\"owningEntityName\":\"seb\"},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}";
187
188         ObjectMapper mapper = new ObjectMapper();
189         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
190
191         ServiceInstancesRequest request = mapper.readValue(incomingRequest, ServiceInstancesRequest.class);
192
193         RequestContext context = new RequestContext();
194         RequestParameters parameters = new RequestParameters();
195         parameters.setUserParams(request.getRequestDetails().getRequestParameters().getUserParams());
196         context.setRequestParameters(parameters);
197         context.setProductFamilyId("FamilyId");
198         context.setSource("source");
199         context.setRequestorId("RequestOrId");
200         context.setAction("createInstance");
201
202         CloudRegion cloudRegion = new CloudRegion();
203         cloudRegion.setCloudOwner("CloudOwner");
204         cloudRegion.setLcpCloudRegionId("my-region-id");
205         cloudRegion.setTenantId("tenant-id");
206
207         ServiceInstance serviceInstance = new ServiceInstance();
208         OwningEntity owningEntity = new OwningEntity();
209         owningEntity.setOwningEntityId("owningEntityId");
210         owningEntity.setOwningEntityName("owningEntityName");
211         serviceInstance.setOwningEntity(owningEntity);
212
213         GeneralBuildingBlock gbb = new GeneralBuildingBlock();
214         gbb.setCloudRegion(cloudRegion);
215         gbb.setRequestContext(context);
216         gbb.setServiceInstance(serviceInstance);
217         mockExecution = mock(BuildingBlockExecution.class);
218         doReturn(gbb).when(mockExecution).getGeneralBuildingBlock();
219         doReturn("CreateChildServiceBB").when(mockExecution).getFlowToBeCalled();
220
221         ServiceInstancesRequest sir = ChildServiceRequestBuilder
222                 .getInstance(mockExecution, "service1-instanceName-child")
223                 .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
224                 .setCorrelationId(UUID.randomUUID().toString()).setChildSvcInstanceId("childInstanceId").build();
225
226         Assert.assertEquals("childInstanceId", sir.getServiceInstanceId());
227
228         CloudConfiguration cloudConfiguration = sir.getRequestDetails().getCloudConfiguration();
229         Assert.assertEquals("1234567890", cloudConfiguration.getTenantId());
230         Assert.assertEquals("demo", cloudConfiguration.getCloudOwner());
231         Assert.assertEquals("test", cloudConfiguration.getLcpCloudRegionId());
232     }
233
234     private Service getChildService(List<Map<String, Object>> userParams, String serviceInstanceName)
235             throws IOException {
236         String USERPARAMSERVICE = "service";
237         for (Map<String, Object> params : userParams) {
238             if (params.containsKey(USERPARAMSERVICE)) {
239                 ObjectMapper obj = new ObjectMapper();
240                 String input = obj.writeValueAsString(params.get(USERPARAMSERVICE));
241                 Service validate = obj.readValue(input, Service.class);
242                 if (validate.getResources().getServices() != null) {
243                     for (Service service : validate.getResources().getServices()) {
244                         if (serviceInstanceName.equals(service.getInstanceName())) {
245                             return service;
246                         }
247                     }
248                 }
249             }
250         }
251         return null;
252     }
253 }