Fix for Penetration test _ Session and cookie management
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / AsyncInstantiationBaseTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.vid.services;
22
23 import static java.util.Collections.emptyList;
24 import static java.util.Collections.emptyMap;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.anyString;
27 import static org.mockito.ArgumentMatchers.eq;
28 import static org.mockito.Mockito.when;
29 import static org.onap.vid.model.VidNotions.InstantiationType;
30 import static org.onap.vid.model.VidNotions.InstantiationUI;
31 import static org.onap.vid.model.VidNotions.ModelCategory;
32
33 import com.google.common.collect.ImmutableList;
34 import com.google.common.collect.ImmutableMap;
35 import java.time.LocalDateTime;
36 import java.time.ZoneId;
37 import java.time.ZonedDateTime;
38 import java.util.ArrayList;
39 import java.util.Collections;
40 import java.util.Date;
41 import java.util.HashMap;
42 import java.util.LinkedHashMap;
43 import java.util.List;
44 import java.util.Map;
45 import java.util.UUID;
46 import java.util.stream.Collectors;
47 import java.util.stream.Stream;
48 import javax.inject.Inject;
49 import org.hibernate.SessionFactory;
50 import org.jetbrains.annotations.NotNull;
51 import org.onap.portalsdk.core.domain.FusionObject;
52 import org.onap.portalsdk.core.service.DataAccessService;
53 import org.onap.vid.aai.AaiClientInterface;
54 import org.onap.vid.aai.ExceptionWithRequestInfo;
55 import org.onap.vid.job.Job.JobStatus;
56 import org.onap.vid.model.Action;
57 import org.onap.vid.model.ServiceInfo;
58 import org.onap.vid.model.ServiceInfo.ServiceAction;
59 import org.onap.vid.model.VidNotions;
60 import org.onap.vid.model.serviceInstantiation.*;
61 import org.onap.vid.mso.RestObject;
62 import org.onap.vid.mso.model.ModelInfo;
63 import org.onap.vid.mso.model.ServiceInstantiationRequestDetails;
64 import org.onap.vid.mso.model.ServiceInstantiationRequestDetails.UserParamNameAndValue;
65 import org.onap.vid.mso.rest.AsyncRequestStatus;
66 import org.onap.vid.mso.rest.RequestStatus;
67 import org.onap.vid.properties.Features;
68 import org.onap.vid.utils.DaoUtils;
69 import org.onap.vid.utils.TimeUtils;
70 import org.springframework.beans.factory.annotation.Autowired;
71 import org.springframework.http.HttpMethod;
72 import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
73 import org.togglz.core.manager.FeatureManager;
74
75 public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests {
76
77     public static final String MODEL_UUID = "337be3fc-293e-43ec-af0b-cf932dad07e6";
78     public static final String MODEL_UUID_2 = "ce052844-22ba-4030-a838-822f2b39eb9b";
79     public static final String MODEL_UUID_3 = "47a071cd-99f7-49bb-bc8b-f957979d6fe1";
80
81     public static final String OWNING_ENTITY_ID = "038d99af-0427-42c2-9d15-971b99b9b489";
82     public static final String JULIO_ERICKSON = "JULIO ERICKSON";
83     public static final String PROJECT_NAME = "{some project name}";
84     public static final String SUBSCRIBER_ID = "{some subscriber id}";
85     public static final String SUBSCRIBER_NAME = "{some subscriber name}";
86     public static final String PRODUCT_FAMILY_ID = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
87     public static final String INSTANCE_NAME = "vPE_Service";
88     public static final String SUBSCRIPTION_SERVICE_TYPE = "VMX";
89     public static final String LCP_CLOUD_REGION_ID = "mdt1";
90     public static final String A6CA3EE0394ADE9403F075DB23167E = "88a6ca3ee0394ade9403f075db23167e";
91     public static final String TENANT_NAME = "USP-SIP-IC-24335-T-01";
92     public static final String AIC_ZONE_ID = "NFT1";
93     public static final String AIC_ZONE_NAME = "NFTJSSSS-NFT1";
94     public static final String TEST_API = "GR_API";
95     public static final String SERVICE_MODEL_VERSION_ID = "3c40d244-808e-42ca-b09a-256d83d19d0a";
96     public static final String VF_MODULE_0_MODEL_CUSTOMIZATION_NAME = "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f";
97     public static final String VF_MODULE_1_MODEL_CUSTOMIZATION_NAME = "72d9d1cd-f46d-447a-abdb-451d6fb05fa8";
98     public static final String VF_MODULE_0_MODEL_VERSION_ID = "4c75f813-fa91-45a4-89d0-790ff5f1ae79";
99     public static final String VF_MODULE_1_MODEL_VERSION_ID = "56e2b103-637c-4d1a-adc8-3a7f4a6c3240";
100     public static final String VNF_NAME = "vmxnjr001";
101     public static final String VNF_GROUP_NAME = "VNF_GROUP_NAME";
102
103     protected HashMap<String, String> instanceParamsMapWithoutParams;
104     protected HashMap<String, String> vfModuleInstanceParamsMapWithParamsToRemove;
105     protected HashMap<String, String> vnfInstanceParamsMapWithParamsToRemove;
106
107     protected int serviceCount = 0;
108
109
110     @Inject
111     protected DataAccessService dataAccessService;
112
113     @Inject
114     protected FeatureManager featureManager;
115
116     @Inject
117     protected AaiClientInterface aaiClient;
118
119     @Inject
120     protected CloudOwnerService cloudOwnerService;
121
122     @Autowired
123     protected SessionFactory sessionFactory;
124
125
126     protected static Date toDate(LocalDateTime localDateTime) {
127         return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
128     }
129
130     protected HashMap<String, Object> getPropsMap() {
131         HashMap<String, Object> props = new HashMap<>();
132         props.put(FusionObject.Parameters.PARAM_USERID, 0);
133         return props;
134     }
135
136
137     private void setCreateDateToServiceInfo(UUID jobUuid, LocalDateTime createDate) {
138         List<ServiceInfo> serviceInfoList = dataAccessService.getList(ServiceInfo.class, getPropsMap());
139         DaoUtils.tryWithSessionAndTransaction(sessionFactory, session -> {
140             serviceInfoList.stream()
141                 .filter(serviceInfo -> jobUuid.equals(serviceInfo.getJobId()))
142                 .forEach(serviceInfo -> {
143                     serviceInfo.setCreated(toDate(createDate));
144                     session.saveOrUpdate(serviceInfo);
145                 });
146             return 1;
147         });
148     }
149
150
151     protected void addNewServiceInfo(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
152         LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled,
153         String modelUUID) {
154         ServiceInfo serviceInfo = createServiceInfo(uuid, userId, serviceName, createDate, statusModifiedDate, status,
155             isHidden, retryEnabled, modelUUID);
156         dataAccessService.saveDomainObject(serviceInfo, getPropsMap());
157         setCreateDateToServiceInfo(uuid, createDate);
158         serviceCount++;
159     }
160     @NotNull
161     private ServiceInfo createServiceInfo(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
162         LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled, String modelUUID) {
163         ServiceInfo serviceInfo = new ServiceInfo();
164         serviceInfo.setJobId(uuid);
165         serviceInfo.setUserId(userId);
166         serviceInfo.setServiceInstanceName(serviceName);
167         serviceInfo.setStatusModifiedDate(toDate(statusModifiedDate));
168         serviceInfo.setJobStatus(status);
169         serviceInfo.setPause(false);
170         serviceInfo.setOwningEntityId("1234");
171         serviceInfo.setCreatedBulkDate(toDate(createDate));
172         serviceInfo.setRetryEnabled(retryEnabled);
173         serviceInfo.setServiceModelId(modelUUID);
174         serviceInfo.setHidden(isHidden);
175         return serviceInfo;
176     }
177
178     protected void addNewServiceInfoWithAction(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
179         LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled,
180         String modelUUID, ServiceAction action) {
181         ServiceInfo serviceInfo = createServiceInfo(uuid, userId, serviceName, createDate, statusModifiedDate, status,
182             isHidden, retryEnabled, modelUUID);
183         serviceInfo.setAction(action);
184         dataAccessService.saveDomainObject(serviceInfo, getPropsMap());
185         setCreateDateToServiceInfo(uuid, createDate);
186         serviceCount++;
187     }
188
189
190     public ServiceInstantiation generateMockMacroServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure) {
191         return generateMockServiceInstantiationPayload(isPause, vnfs, pnfs, Collections.EMPTY_MAP, Collections.EMPTY_MAP, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, null, Action.Create, null);
192     }
193
194     public ServiceInstantiation generateMockALaCarteServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Network> networks, Map<String, InstanceGroup> vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, String testApi) {
195         return generateMockServiceInstantiationPayload(isPause, vnfs, null, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Create, null);
196     }
197
198     public ServiceInstantiation generateMockAlaCarteServiceDeletionPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Network> networks, Map<String, InstanceGroup> vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, String testApi, String instanceId) {
199         return generateMockServiceInstantiationPayload(isPause, vnfs, null, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Delete, instanceId);
200     }
201
202     public ServiceInstantiation generateMockServiceDeletionPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs, Map<String, Network> networks, Map<String, InstanceGroup> vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, String testApi, String instanceId) {
203         return generateMockServiceInstantiationPayload(isPause, vnfs, pnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, testApi, Action.Delete, instanceId);
204     }
205     private ServiceInstantiation generateMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs, Map<String, Network> networks, Map<String, InstanceGroup> vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, boolean isAlacarte, String testApi, Action action, String instanceId) {
206         ModelInfo modelInfo = createModelInfo();
207
208         List<Map<String,String>> instanceParams = createInstanceParams();
209
210         return new ServiceInstantiation( modelInfo,
211                 AsyncInstantiationBusinessLogicTest.OWNING_ENTITY_ID,
212                 AsyncInstantiationBusinessLogicTest.JULIO_ERICKSON,
213                 projectName,
214                 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_ID,
215                 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_NAME,
216                 AsyncInstantiationBusinessLogicTest.PRODUCT_FAMILY_ID,
217                 isUserProvidedNaming ? AsyncInstantiationBusinessLogicTest.INSTANCE_NAME : null,
218                 AsyncInstantiationBusinessLogicTest.SUBSCRIPTION_SERVICE_TYPE,
219                 AsyncInstantiationBusinessLogicTest.LCP_CLOUD_REGION_ID,
220                 null,
221                 AsyncInstantiationBusinessLogicTest.A6CA3EE0394ADE9403F075DB23167E,
222                 AsyncInstantiationBusinessLogicTest.TENANT_NAME,
223                 AsyncInstantiationBusinessLogicTest.AIC_ZONE_ID,
224                 AsyncInstantiationBusinessLogicTest.AIC_ZONE_NAME,
225                 vnfs,
226                 pnfs,
227                 networks,
228                 vnfGroups,
229                 null,
230                 instanceParams,
231                 isPause,
232                 bulkSize,
233                 rollbackOnFailure,
234                 isAlacarte,
235                 testApi,
236                 instanceId,
237                 action.name(),
238                 UUID.randomUUID().toString(), null, null, null, null);
239     }
240
241     private List<Map<String,String>> createInstanceParams() {
242         List<Map<String, String>> instanceParams = new ArrayList<>();
243         HashMap<String, String> map = new HashMap<>();
244         map.put("instanceParams_test1" , "some text");
245         map.put("instanceParams_test2" , "another text");
246         instanceParams.add(map);
247         return instanceParams;
248     }
249
250     protected VfModule createVfModule(
251         String modelName, String modelVersionId, String modelCustomizationId,
252         List<Map<String, String>> instanceParams, List<UserParamNameAndValue> supplementaryParams, String instanceName,
253         String volumeGroupInstanceName, boolean isAlacarte, Boolean usePreload) {
254         ModelInfo vfModuleInfo = new ModelInfo();
255         vfModuleInfo.setModelType("vfModule");
256         vfModuleInfo.setModelName(modelName);
257         vfModuleInfo.setModelVersionId(modelVersionId);
258         vfModuleInfo.setModelCustomizationId(modelCustomizationId);
259         vfModuleInfo.setModelCustomizationName(modelName);
260
261         if (isAlacarte) {
262             vfModuleInfo.setModelInvariantId("22222222-f63c-463e-ba94-286933b895f9");
263             vfModuleInfo.setModelVersion("10.0");
264             return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), "mdt1", null,
265                 "88a6ca3ee0394ade9403f075db23167e", instanceParams, supplementaryParams, false,
266                 usePreload, null, UUID.randomUUID().toString(), null, null,
267                 null, null, null, null, "originalName");
268         }
269
270         return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), null, null, null,
271                 instanceParams, supplementaryParams, false, false, null, UUID.randomUUID().toString(), null,
272             null, null, null, null, null, "originalName");
273     }
274
275     protected ModelInfo createVfModuleModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
276         return createModelInfo("vfModule", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
277     }
278
279     protected VfModule createVfModuleForReplace(ModelInfo vfModuleModelInfo, String instanceName,
280         String lcpCloudRegionId, String tenantId, Boolean retainAssignments, Boolean retainVolumeGroups, List<UserParamNameAndValue> supplementaryParams) {
281         return new VfModule( vfModuleModelInfo, instanceName, null, Action.Upgrade.name(), lcpCloudRegionId, null, tenantId,
282                 null, supplementaryParams, true, null, null, UUID.randomUUID().toString(), null,
283                 null, retainAssignments, retainVolumeGroups, null, null, "originalName");
284     }
285
286     protected ModelInfo createVnfModelInfo(boolean isAlacarte) {
287         ModelInfo vnfModelInfo = new ModelInfo();
288         vnfModelInfo.setModelType("vnf");
289         vnfModelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
290         vnfModelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
291         vnfModelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
292         vnfModelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
293         //added two conditional fields according to MSO AID - needed only in alacarte
294         if (isAlacarte) {
295             vnfModelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
296             vnfModelInfo.setModelVersion("10.0");
297         }
298         return vnfModelInfo;
299     }
300
301     protected ModelInfo createVnfModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
302         return createModelInfo("vnf", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
303     }
304
305     protected ModelInfo createPnfModelInfo() {
306         ModelInfo modelInfo = new ModelInfo();
307         modelInfo.setModelCustomizationName("modelCustomizationName");
308         modelInfo.setModelCustomizationId("modelCustomizationId");
309         modelInfo.setModelInvariantId("modelInvariantId");
310         modelInfo.setModelVersionId("modelVersionId");
311         modelInfo.setModelName("modelName");
312         modelInfo.setModelType("pnf");
313         modelInfo.setModelVersion("1.0");
314         return modelInfo;
315     }
316
317     protected Pnf createPnf() {
318         ModelInfo modelInfo = createPnfModelInfo();
319         List<Map<String, String>> instanceParams = new ArrayList<>();
320
321         return new Pnf(modelInfo, "productFamilyId", "instanceName", null, "platformName", null, null,
322                 null, instanceParams, "lineOfBusinessName", true,null, null, null, null, null, null);
323     }
324
325     private ModelInfo createNetworkModelInfo(boolean isAlacarte, String modelCustomizationId)
326     {
327         ModelInfo modelInfo = new ModelInfo();
328         modelInfo.setModelType("network");
329         modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
330         modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
331         modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
332         modelInfo.setModelCustomizationId(modelCustomizationId);
333         //added two conditional fields according to MSO AID - needed only in alacarte
334         if (isAlacarte) {
335             modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
336             modelInfo.setModelVersion("10.0");
337         }
338         return modelInfo;
339     }
340
341     private ModelInfo createModelInfo() {
342         ModelInfo modelInfo = new ModelInfo();
343         modelInfo.setModelType("service");
344         modelInfo.setModelVersionId(SERVICE_MODEL_VERSION_ID);
345         modelInfo.setModelVersion("10.0");
346         modelInfo.setModelInvariantId("5d48acb5-097d-4982-aeb2-f4a3bd87d31b");
347         modelInfo.setModelName("MOW AVPN vMX BV vPE 1 Service");
348         return modelInfo;
349     }
350
351     private ModelInfo createModelInfo(String modelType, String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName ) {
352         ModelInfo modelInfo = new ModelInfo();
353         modelInfo.setModelType(modelType);
354         modelInfo.setModelVersionId(modelVersionId);
355         modelInfo.setModelVersion(modelVersion);
356         modelInfo.setModelInvariantId(modelInvariantId);
357         modelInfo.setModelName(modelName);
358         modelInfo.setModelCustomizationId(modelCustomizationId);
359         modelInfo.setModelCustomizationName(modelCustomizationName);
360         return modelInfo;
361     }
362
363     protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming) {
364         return createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, isUserProvidedNaming, false);
365     }
366
367     protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming, boolean isAlacarte) {
368         Map<String, Vnf> vnfs = new HashMap<>();
369         ModelInfo vnfModelInfo = createVnfModelInfo(isAlacarte);
370
371         Map<String, Map<String, VfModule>> vfModules = new HashMap<>();
372
373         List<Map<String, String>> instanceParams1 = ImmutableList.of((ImmutableMap.of("vmx_int_net_len", "24")));
374         VfModule vfModule1 = createVfModule("201673MowAvpnVpeBvL..AVPN_base_vPE_BV..module-0", VF_MODULE_0_MODEL_VERSION_ID, VF_MODULE_0_MODEL_CUSTOMIZATION_NAME,
375             instanceParams1, emptyList(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vPE_BV_base" : null), null, isAlacarte, true);
376         List<Map<String, String>> instanceParams2 = ImmutableList.of(vfModuleInstanceParamsMap);
377         VfModule vfModule2 = createVfModule("201673MowAvpnVpeBvL..AVPN_vRE_BV..module-1", VF_MODULE_1_MODEL_VERSION_ID, VF_MODULE_1_MODEL_CUSTOMIZATION_NAME,
378             instanceParams2, emptyList(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vRE_BV_expansion": null), (isUserProvidedNaming ? "myVgName" : null), isAlacarte, true);
379
380         String vfModuleModelName = vfModule1.getModelInfo().getModelName();
381         vfModules.put(vfModuleModelName, new LinkedHashMap<>());
382
383         vfModules.get(vfModuleModelName).put(vfModuleModelName + ":001", vfModule1);
384         vfModules.get(vfModuleModelName).put(vfModuleModelName + ":002", vfModule2);
385
386         Vnf vnf = new Vnf(vnfModelInfo, "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", (isUserProvidedNaming ? VNF_NAME : null), Action.Create.name(),
387                 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", vnfInstanceParams,"lineOfBusinessName" , false, null, vfModules,
388                 UUID.randomUUID().toString(), null, null, null, "originalName");
389
390         vnfs.put(vnf.getModelInfo().getModelName(), vnf);
391         return vnfs;
392     }
393
394     protected Map<String, Pnf> createPnfList() {
395         Map<String, Pnf> pnfs = new HashMap<>();
396         Pnf pnf = createPnf();
397
398         pnfs.put(pnf.getModelInfo().getModelName(), pnf);
399
400
401         return pnfs;
402     }
403
404     protected void mockAaiClientAaiStatusOK() {
405         when(aaiClient.isNodeTypeExistsByName(eq(AsyncInstantiationBusinessLogicImpl.NAME_FOR_CHECK_AAI_STATUS), any())).thenReturn(false);
406     }
407
408     protected void enableAddCloudOwnerOnMsoRequest(boolean isActive) {
409         // always turn on the feature flag
410         when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(isActive);
411         when(aaiClient.getCloudOwnerByCloudRegionId(anyString())).thenReturn("irma-aic");
412     }
413
414     protected void enableAddCloudOwnerOnMsoRequest() {
415         enableAddCloudOwnerOnMsoRequest(true);
416     }
417
418     protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs) {
419         return generateMockMacroServiceInstantiationPayload(isPause, vnfs, pnfs,1, true, PROJECT_NAME, false);
420     }
421
422     protected ServiceInstantiation generatePre1806MacroTransportServiceInstantiationPayload(String tenantId, String lcpCloudRegionId) {
423         List<Map<String, String>> instanceParams = ImmutableList
424             .of(ImmutableMap.of("someUserParam","someValue", "anotherUserParam","anotherValue"));
425         ServiceInstantiation serviceInstantiation = new ServiceInstantiation(createServiceModelInfo(), "038d99af-0427-42c2-9d15-971b99b9b489",
426                 "JULIO ERICKSON", "some_project_name", "some_subscriber_id", "some_subscriber_name",
427                 "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", null, "MOG", lcpCloudRegionId, null, tenantId,
428                 null, null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, instanceParams, false, 1, false, false,
429                 null, null, null, null, null, null,
430                 new VidNotions(InstantiationUI.TRANSPORT_SERVICE, ModelCategory.Transport, InstantiationUI.TRANSPORT_SERVICE, InstantiationType.Macro), "originalName"
431         );
432         return serviceInstantiation;
433     }
434
435     public static class NetworkDetails {
436
437         public NetworkDetails(String name, String modelCustomizationId) {
438             this.name = name;
439             this.modelCustomizationId = modelCustomizationId;
440         }
441
442         public String name;
443         public String modelCustomizationId;
444     }
445
446     protected Map<String, Network> createNetworkList(List instanceParams, List<NetworkDetails> networkDetails, boolean isALaCarte) {
447         Stream<Network> networkStream = networkDetails.stream().map(
448                 details->new Network(createNetworkModelInfo(isALaCarte, details.modelCustomizationId), "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
449                 details.name, Action.Create.name(),
450                 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", instanceParams,"lineOfBusinessName" ,
451                 false, null, UUID.randomUUID().toString(), null, null, null, "originalName"));
452 //        I can't tell why compiler don't like the statement if it's only one line...
453         return networkStream.collect(Collectors.toMap(network -> network.getModelInfo().getModelCustomizationId(), network -> network));
454     }
455
456     protected InstanceGroup createInstanceGroup(boolean isUserProvidedNaming, Action action) {
457         ModelInfo modelInfo = new ModelInfo();
458         modelInfo.setModelType("instanceGroup");
459         modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
460         modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
461         modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
462         modelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
463         modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
464         modelInfo.setModelVersion("10.0");
465
466         return new InstanceGroup(modelInfo, (isUserProvidedNaming ? VNF_GROUP_NAME : null), action.name(), false, null, emptyMap(), UUID.randomUUID().toString(), null, null,
467             null, "originalName");
468     }
469
470     protected ModelInfo createServiceModelInfo() {
471         ModelInfo siModelInfo = new ModelInfo();
472         siModelInfo.setModelName("sriov");
473         siModelInfo.setModelType("service");
474         siModelInfo.setModelInvariantId("ff3514e3-5a33-55df-13ab-12abad84e7ff");
475         siModelInfo.setModelVersionId("fe6985cd-ea33-3346-ac12-ab121484a3fe");
476         siModelInfo.setModelVersion("1.0");
477
478         return siModelInfo;
479     }
480
481     protected ModelInfo createServiceModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
482         return createModelInfo("service", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
483     }
484
485     protected void createInstanceParamsMaps() {
486         instanceParamsMapWithoutParams = new HashMap<>();
487         instanceParamsMapWithoutParams.put("availability_zone_0" , "mtpocdv-kvm-az01");
488         instanceParamsMapWithoutParams.put("vre_a_volume_size_0" , "100");
489
490         vfModuleInstanceParamsMapWithParamsToRemove = new HashMap<>();
491         vfModuleInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(0), "should be removed");
492         vfModuleInstanceParamsMapWithParamsToRemove.put("availability_zone_0" , "mtpocdv-kvm-az01");
493         vfModuleInstanceParamsMapWithParamsToRemove.put("vre_a_volume_size_0" , "100");
494
495         vnfInstanceParamsMapWithParamsToRemove = new HashMap<>();
496         vnfInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(1), "should be removed");
497     }
498
499     public static AsyncRequestStatus asyncRequestStatusResponse(String msoStatus) {
500         AsyncRequestStatus asyncRequestStatus = new AsyncRequestStatus(new AsyncRequestStatus.Request(new RequestStatus()));
501         asyncRequestStatus.request.requestStatus.setRequestState(msoStatus);
502         asyncRequestStatus.request.requestId = UUID.randomUUID().toString();
503         asyncRequestStatus.request.startTime = TimeUtils.zonedDateTimeToString(ZonedDateTime.now());
504         return asyncRequestStatus;
505     }
506
507     public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus) {
508         return asyncRequestStatusResponseAsRestObject(msoStatus, 200);
509     }
510
511     public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus, int httpStatusCode) {
512         RestObject<AsyncRequestStatus> restObject = new RestObject<>();
513         restObject.set(asyncRequestStatusResponse(msoStatus));
514         restObject.setStatusCode(httpStatusCode);
515         return restObject;
516     }
517
518     protected void mockAaiClientAnyNameFree() {
519         when(aaiClient.isNodeTypeExistsByName(any(), any())).thenReturn(false);
520     }
521
522     protected ExceptionWithRequestInfo aaiNodeQueryBadResponseException() {
523         return new ExceptionWithRequestInfo(HttpMethod.GET, "url", "raw data", 500, null);
524     }
525
526     protected ServiceInstantiation generateALaCarteWithVnfsServiceInstantiationPayload() {
527         Map<String, Vnf> vnfs = createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, Collections.singletonList(vnfInstanceParamsMapWithParamsToRemove) , true, true);
528         ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, vnfs, emptyMap(), emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
529         return serviceInstantiation;
530     }
531
532     protected ServiceInstantiation generateALaCarteWithNetworksPayload(List<NetworkDetails> networkDetails) {
533         Map<String, Network> networks = createNetworkList(emptyList(), networkDetails, true);
534         ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, emptyMap(), networks, emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
535         return serviceInstantiation;
536     }
537
538     protected ServiceInstantiation generateALaCarteUpdateWith1ExistingGroup2NewGroupsPayload() {
539         final InstanceGroup instanceGroup1 = createInstanceGroup(true, Action.None);
540         final InstanceGroup instanceGroup2 = createInstanceGroup(false, Action.Create);
541         final InstanceGroup instanceGroup3 = createInstanceGroup(true, Action.Create);
542         Map<String, InstanceGroup> groups = ImmutableMap.of(
543                 "foo:001", instanceGroup1,
544                 "foo:002", instanceGroup2,
545                 "foo:003", instanceGroup3
546         );
547         return generateMockServiceInstantiationPayload(false, emptyMap(), emptyMap(), emptyMap(), groups,
548                 1, true, PROJECT_NAME, false, true, "VNF_API",
549                 Action.None, "1234567890");
550     }
551
552     protected ServiceInstantiation generateALaCarteServiceInstantiationPayload() {
553         return generateMockALaCarteServiceInstantiationPayload(false, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, 1, true, PROJECT_NAME, false, "VNF_API");
554     }
555 }