ecec834599c49418739c22d31904a1e41cfcf966
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / ServiceImportBussinessLogicBaseTestSetup.java
1 /*
2  * Copyright (C) 2020 CMCC, Inc. and others. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.openecomp.sdc.be.components.impl;
17
18 import static org.junit.jupiter.api.Assertions.assertEquals;
19 import static org.mockito.ArgumentMatchers.any;
20 import static org.mockito.ArgumentMatchers.anyBoolean;
21 import static org.mockito.ArgumentMatchers.anyString;
22 import static org.mockito.ArgumentMatchers.eq;
23 import static org.mockito.Mockito.mock;
24 import static org.mockito.Mockito.when;
25
26 import fj.data.Either;
27 import java.io.IOException;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.Collection;
34 import java.util.Collections;
35 import java.util.HashMap;
36 import java.util.Iterator;
37 import java.util.List;
38 import java.util.Map;
39 import javax.servlet.ServletContext;
40 import org.junit.jupiter.api.BeforeEach;
41 import org.mockito.Mock;
42 import org.mockito.Mockito;
43 import org.openecomp.sdc.ElementOperationMock;
44 import org.openecomp.sdc.be.components.csar.CsarArtifactsAndGroupsBusinessLogic;
45 import org.openecomp.sdc.be.components.csar.CsarBusinessLogic;
46 import org.openecomp.sdc.be.components.csar.CsarInfo;
47 import org.openecomp.sdc.be.components.csar.OnboardedCsarInfo;
48 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
49 import org.openecomp.sdc.be.components.impl.utils.CreateServiceFromYamlParameter;
50 import org.openecomp.sdc.be.components.validation.UserValidations;
51 import org.openecomp.sdc.be.components.validation.component.ComponentContactIdValidator;
52 import org.openecomp.sdc.be.components.validation.component.ComponentDescriptionValidator;
53 import org.openecomp.sdc.be.components.validation.component.ComponentFieldValidator;
54 import org.openecomp.sdc.be.components.validation.component.ComponentIconValidator;
55 import org.openecomp.sdc.be.components.validation.component.ComponentNameValidator;
56 import org.openecomp.sdc.be.components.validation.component.ComponentProjectCodeValidator;
57 import org.openecomp.sdc.be.components.validation.component.ComponentTagsValidator;
58 import org.openecomp.sdc.be.components.validation.component.ComponentValidator;
59 import org.openecomp.sdc.be.components.validation.service.ServiceCategoryValidator;
60 import org.openecomp.sdc.be.components.validation.service.ServiceEnvironmentContextValidator;
61 import org.openecomp.sdc.be.components.validation.service.ServiceFieldValidator;
62 import org.openecomp.sdc.be.components.validation.service.ServiceFunctionValidator;
63 import org.openecomp.sdc.be.components.validation.service.ServiceInstantiationTypeValidator;
64 import org.openecomp.sdc.be.components.validation.service.ServiceNamingPolicyValidator;
65 import org.openecomp.sdc.be.components.validation.service.ServiceRoleValidator;
66 import org.openecomp.sdc.be.components.validation.service.ServiceTypeValidator;
67 import org.openecomp.sdc.be.components.validation.service.ServiceValidator;
68 import org.openecomp.sdc.be.dao.api.ActionStatus;
69 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
70 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
71 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
72 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
73 import org.openecomp.sdc.be.externalapi.servlet.representation.AbstractResourceInfo;
74 import org.openecomp.sdc.be.externalapi.servlet.representation.AbstractTemplateInfo;
75 import org.openecomp.sdc.be.externalapi.servlet.representation.ArtifactMetadata;
76 import org.openecomp.sdc.be.externalapi.servlet.representation.CopyServiceInfo;
77 import org.openecomp.sdc.be.externalapi.servlet.representation.ReplaceVNFInfo;
78 import org.openecomp.sdc.be.externalapi.servlet.representation.ResourceInstanceMetadata;
79 import org.openecomp.sdc.be.facade.operations.CatalogOperation;
80 import org.openecomp.sdc.be.impl.ComponentsUtils;
81 import org.openecomp.sdc.be.impl.ServletUtils;
82 import org.openecomp.sdc.be.impl.WebAppContextWrapper;
83 import org.openecomp.sdc.be.model.ArtifactDefinition;
84 import org.openecomp.sdc.be.model.CapabilityDefinition;
85 import org.openecomp.sdc.be.model.Component;
86 import org.openecomp.sdc.be.model.ComponentInstance;
87 import org.openecomp.sdc.be.model.GroupDefinition;
88 import org.openecomp.sdc.be.model.InputDefinition;
89 import org.openecomp.sdc.be.model.LifecycleStateEnum;
90 import org.openecomp.sdc.be.model.NodeTypeInfo;
91 import org.openecomp.sdc.be.model.ParsedToscaYamlInfo;
92 import org.openecomp.sdc.be.model.PropertyDefinition;
93 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
94 import org.openecomp.sdc.be.model.RequirementDefinition;
95 import org.openecomp.sdc.be.model.Resource;
96 import org.openecomp.sdc.be.model.Service;
97 import org.openecomp.sdc.be.model.UploadCapInfo;
98 import org.openecomp.sdc.be.model.UploadComponentInstanceInfo;
99 import org.openecomp.sdc.be.model.UploadNodeFilterInfo;
100 import org.openecomp.sdc.be.model.UploadReqInfo;
101 import org.openecomp.sdc.be.model.UploadServiceInfo;
102 import org.openecomp.sdc.be.model.User;
103 import org.openecomp.sdc.be.model.category.CategoryDefinition;
104 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
105 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
106 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
107 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
108 import org.openecomp.sdc.be.ui.model.OperationUi;
109 import org.openecomp.sdc.be.user.Role;
110 import org.openecomp.sdc.be.user.UserBusinessLogic;
111 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
112 import org.openecomp.sdc.common.api.Constants;
113 import org.openecomp.sdc.common.api.UploadArtifactInfo;
114 import org.openecomp.sdc.exception.ResponseFormat;
115 import org.springframework.web.context.WebApplicationContext;
116
117 public class ServiceImportBussinessLogicBaseTestSetup extends BaseBusinessLogicMock {
118
119     protected static final String SERVICE_CATEGORY = "Mobility";
120     protected static final String INSTANTIATION_TYPE = "A-la-carte";
121     protected static final String CERTIFIED_VERSION = "1.0";
122     protected static final String UNCERTIFIED_VERSION = "0.2";
123     protected static final String COMPONENT_ID = "myUniqueId";
124     protected static final String GENERIC_SERVICE_NAME = "org.openecomp.resource.abstract.nodes.service";
125     protected static final String SERVICE_ROLE = JsonPresentationFields.SERVICE_ROLE.getPresentation();
126     protected static final String SERVICE_TYPE = JsonPresentationFields.SERVICE_TYPE.getPresentation();
127     protected static final String SERVICE_FUNCTION = JsonPresentationFields.SERVICE_FUNCTION.getPresentation();
128     private static final String RESOURCE_NAME = "My-Resource_Name with   space";
129     private static final String RESOURCE_TOSCA_NAME = "My-Resource_Tosca_Name";
130     private static final String RESOURCE_CATEGORY1 = "Network Layer 2-3";
131     private static final String RESOURCE_SUBCATEGORY = "Router";
132
133     private final ArtifactDefinition artifactDefinition = mock(ArtifactDefinition.class);
134     private final ServletUtils servletUtils = mock(ServletUtils.class);
135
136     protected final ServletContext servletContext = mock(ServletContext.class);
137     protected final ComponentValidator componentValidator = mock(ComponentValidator.class);
138     final ComponentInstanceBusinessLogic componentInstanceBusinessLogic = mock(ComponentInstanceBusinessLogic.class);
139     final CsarBusinessLogic csarBusinessLogic = mock(CsarBusinessLogic.class);
140     final CompositionBusinessLogic compositionBusinessLogic = mock(CompositionBusinessLogic.class);
141     protected UserBusinessLogic userBusinessLogic = mock(UserBusinessLogic.class);
142     protected WebAppContextWrapper webAppContextWrapper = mock(WebAppContextWrapper.class);
143     protected WebApplicationContext webAppContext = mock(WebApplicationContext.class);
144     protected ResponseFormatManager responseManager = null;
145     protected ComponentsUtils componentsUtils = mock(ComponentsUtils.class);
146     protected ArtifactsBusinessLogic artifactsBusinessLogic = mock(ArtifactsBusinessLogic.class);
147     protected GraphLockOperation graphLockOperation = mock(GraphLockOperation.class);
148     protected JanusGraphDao mockJanusGraphDao = mock(JanusGraphDao.class);
149     protected ToscaOperationFacade toscaOperationFacade = mock(ToscaOperationFacade.class);
150     protected CsarArtifactsAndGroupsBusinessLogic csarArtifactsAndGroupsBusinessLogic = mock(CsarArtifactsAndGroupsBusinessLogic.class);
151     protected UserValidations userValidations = mock(UserValidations.class);
152     protected CatalogOperation catalogOperation = mock(CatalogOperation.class);
153     protected ServiceImportParseLogic serviceImportParseLogic = mock(ServiceImportParseLogic.class);
154     protected ServiceTypeValidator serviceTypeValidator = new ServiceTypeValidator(componentsUtils);
155     protected ServiceRoleValidator serviceRoleValidator = new ServiceRoleValidator(componentsUtils);
156     protected ServiceFunctionValidator serviceFunctionValidator = new ServiceFunctionValidator(componentsUtils);
157     protected ServiceInstantiationTypeValidator serviceInstantiationTypeValidator = new ServiceInstantiationTypeValidator(componentsUtils);
158     protected ComponentDescriptionValidator componentDescriptionValidator = new ComponentDescriptionValidator(componentsUtils);
159     protected ComponentProjectCodeValidator componentProjectCodeValidator = new ComponentProjectCodeValidator(componentsUtils);
160     protected ComponentIconValidator componentIconValidator = new ComponentIconValidator(componentsUtils);
161     protected ComponentContactIdValidator componentContactIdValidator = new ComponentContactIdValidator(componentsUtils);
162     protected ComponentTagsValidator componentTagsValidator = new ComponentTagsValidator(componentsUtils);
163     protected ComponentNameValidator componentNameValidator = new ComponentNameValidator(componentsUtils, toscaOperationFacade);
164     protected User user = null;
165     protected Resource genericService = null;
166     @Mock
167     protected ServiceBusinessLogic serviceBusinessLogic;
168     IElementOperation mockElementDao = new ElementOperationMock();
169     protected ServiceCategoryValidator serviceCategoryValidator = new ServiceCategoryValidator(componentsUtils, mockElementDao);
170     protected ServiceValidator serviceValidator = createServiceValidator();
171
172     public ServiceImportBussinessLogicBaseTestSetup() {
173
174     }
175
176     protected ServiceValidator createServiceValidator() {
177         List<ComponentFieldValidator> componentFieldValidators = Arrays.asList(componentContactIdValidator,
178             componentDescriptionValidator,
179             componentIconValidator, componentNameValidator,
180             new ComponentProjectCodeValidator(componentsUtils),
181             componentTagsValidator);
182
183         List<ServiceFieldValidator> serviceFieldValidators = Arrays.asList(serviceCategoryValidator, new ServiceEnvironmentContextValidator(),
184             serviceInstantiationTypeValidator, new ServiceNamingPolicyValidator(componentsUtils),
185             serviceRoleValidator, serviceTypeValidator);
186         return new ServiceValidator(componentsUtils, componentFieldValidators, serviceFieldValidators);
187     }
188
189     @BeforeEach
190     public void setup() throws IOException {
191
192         // Elements
193         IElementOperation mockElementDao = new ElementOperationMock();
194
195         // User data and management
196         user = new User();
197         user.setUserId("jh0003");
198         user.setFirstName("Jimmi");
199         user.setLastName("Hendrix");
200         user.setRole(Role.ADMIN.name());
201
202         when(userBusinessLogic.getUser("jh0003", false)).thenReturn(user);
203         when(userValidations.validateUserExists("jh0003")).thenReturn(user);
204         when(userValidations.validateUserNotEmpty(eq(user), anyString())).thenReturn(user);
205         // Servlet Context attributes
206         when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
207         when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
208         when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webAppContext);
209         when(webAppContext.getBean(IElementOperation.class)).thenReturn(mockElementDao);
210         when(graphLockOperation.lockComponent(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Service))).thenReturn(StorageOperationStatus.OK);
211         when(graphLockOperation.lockComponentByName(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Service))).thenReturn(StorageOperationStatus.OK);
212         when(catalogOperation.updateCatalog(Mockito.any(), Mockito.any())).thenReturn(ActionStatus.OK);
213         // artifact bussinesslogic
214         ArtifactDefinition artifactDef = new ArtifactDefinition();
215         when(artifactsBusinessLogic.createArtifactPlaceHolderInfo(Mockito.any(), Mockito.anyString(), Mockito.anyMap(), Mockito.any(User.class),
216             Mockito.any(ArtifactGroupTypeEnum.class))).thenReturn(artifactDef);
217
218         // createService
219         Service serviceResponse = createServiceObject(true);
220         Either<Component, StorageOperationStatus> eitherCreate = Either.left(serviceResponse);
221         when(toscaOperationFacade.createToscaComponent(Mockito.any(Component.class))).thenReturn(eitherCreate);
222         when(toscaOperationFacade.getToscaElement(Mockito.anyString())).thenReturn(eitherCreate);
223         Either<Boolean, StorageOperationStatus> eitherCount = Either.left(false);
224         when(toscaOperationFacade.validateComponentNameExists("Service", null, ComponentTypeEnum.SERVICE)).thenReturn(eitherCount);
225         Either<Boolean, StorageOperationStatus> eitherCountExist = Either.left(true);
226         when(toscaOperationFacade.validateComponentNameExists("alreadyExist", null, ComponentTypeEnum.SERVICE)).thenReturn(eitherCountExist);
227         when(userValidations.validateUserExists(user)).thenReturn(user);
228
229         // createResource
230         Resource resourceRsponse = createParseResourceObject(true);
231         Either<Component, StorageOperationStatus> eitherResourceCreate = Either.left(resourceRsponse);
232         when(toscaOperationFacade.createToscaComponent(Mockito.any(Component.class))).thenReturn(eitherResourceCreate);
233         Either<Component, StorageOperationStatus> eitherResourceRes = Either.left(resourceRsponse);
234         when(toscaOperationFacade.getToscaFullElement(Mockito.anyString())).thenReturn(eitherResourceRes);
235
236         Either<Boolean, StorageOperationStatus> eitherResourceCount = Either.left(false);
237         when(toscaOperationFacade.validateComponentNameExists("Resource", null, ComponentTypeEnum.RESOURCE)).thenReturn(eitherResourceCount);
238         Either<Boolean, StorageOperationStatus> eitherResourceCountExist = Either.left(true);
239         when(toscaOperationFacade.validateComponentNameExists("alreadyExist", null, ComponentTypeEnum.RESOURCE)).thenReturn(eitherResourceCountExist);
240
241         genericService = setupGenericServiceMock();
242         Either<Resource, StorageOperationStatus> findLatestGeneric = Either.left(genericService);
243         when(toscaOperationFacade.getLatestCertifiedNodeTypeByToscaResourceName(GENERIC_SERVICE_NAME)).thenReturn(findLatestGeneric);
244
245         when(serviceImportParseLogic.isArtifactDeletionRequired(anyString(), any(), anyBoolean())).thenReturn(true);
246
247         mockAbstract();
248
249         responseManager = ResponseFormatManager.getInstance();
250     }
251
252     protected Service createServiceObject(boolean afterCreate) {
253         Service service = new Service();
254         service.setUniqueId("sid");
255         service.setName("Service");
256         service.setSystemName("SystemName");
257         CategoryDefinition category = new CategoryDefinition();
258         category.setName(SERVICE_CATEGORY);
259         category.setIcons(Collections.singletonList("defaulticon"));
260         List<CategoryDefinition> categories = new ArrayList<>();
261         categories.add(category);
262         service.setCategories(categories);
263         service.setInstantiationType(INSTANTIATION_TYPE);
264
265         service.setDescription("description");
266         List<String> tgs = new ArrayList<>();
267         tgs.add(service.getName());
268         service.setTags(tgs);
269         service.setIcon("defaulticon");
270         service.setContactId("aa1234");
271         service.setProjectCode("12345");
272         service.setEcompGeneratedNaming(true);
273
274         List<InputDefinition> inputs = new ArrayList<>();
275         InputDefinition input_1 = new InputDefinition();
276         input_1.setName("propertiesName");
277         input_1.setUniqueId("uniqueId");
278         input_1.setType("inputDefinitionType");
279         inputs.add(input_1);
280         InputDefinition input_2 = new InputDefinition();
281         input_2.setName("zxjTestImportServiceAb_propertiesName");
282         input_2.setUniqueId("uniqueId");
283         input_2.setType("inputDefinitionType");
284         inputs.add(input_2);
285         service.setInputs(inputs);
286
287         if (afterCreate) {
288             service.setVersion("0.1");
289             service.setUniqueId(service.getName() + ":" + service.getVersion());
290             service.setCreatorUserId(user.getUserId());
291             service.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
292         }
293         return service;
294     }
295
296     protected Resource createResourceObject(boolean afterCreate) {
297         Resource resource = new Resource();
298         resource.setUniqueId("sid");
299         resource.setName("Service");
300         CategoryDefinition category = new CategoryDefinition();
301         category.setName(SERVICE_CATEGORY);
302         category.setIcons(Collections.singletonList("defaulticon"));
303         List<CategoryDefinition> categories = new ArrayList<>();
304         categories.add(category);
305         resource.setCategories(categories);
306
307         resource.setDescription("description");
308         List<String> tgs = new ArrayList<>();
309         tgs.add(resource.getName());
310         resource.setTags(tgs);
311         resource.setIcon("defaulticon");
312         resource.setContactId("aa1234");
313         resource.setProjectCode("12345");
314
315         if (afterCreate) {
316             resource.setVersion("0.1");
317             resource.setUniqueId(resource.getName() + ":" + resource.getVersion());
318             resource.setCreatorUserId(user.getUserId());
319             resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
320         }
321         return resource;
322     }
323
324     protected Resource createParseResourceObject(boolean afterCreate) {
325         Resource resource = new Resource();
326         resource.setUniqueId(COMPONENT_ID);
327         resource.setName(RESOURCE_NAME);
328         resource.setToscaResourceName(RESOURCE_TOSCA_NAME);
329         resource.addCategory(RESOURCE_CATEGORY1, RESOURCE_SUBCATEGORY);
330         resource.setDescription("My short description");
331         List<String> tgs = new ArrayList<>();
332         tgs.add("test");
333         tgs.add(resource.getName());
334         resource.setTags(tgs);
335         List<String> template = new ArrayList<>();
336         template.add("tosca.nodes.Root");
337         resource.setDerivedFrom(template);
338         resource.setVendorName("Motorola");
339         resource.setVendorRelease("1.0.0");
340         resource.setContactId("ya5467");
341         resource.setIcon("defaulticon");
342         Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
343         List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
344         requirements.put("test", requirementDefinitionList);
345         resource.setRequirements(requirements);
346
347         if (afterCreate) {
348             resource.setName(resource.getName());
349             resource.setVersion("0.1");
350             resource.setUniqueId(resource.getName()
351                 .toLowerCase() + ":" + resource.getVersion());
352             resource.setCreatorUserId(user.getUserId());
353             resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
354             resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
355         }
356         return resource;
357     }
358
359     protected Resource setupGenericServiceMock() {
360         Resource genericService = new Resource();
361         genericService.setVersion("1.0");
362         genericService.setToscaResourceName(GENERIC_SERVICE_NAME);
363         return genericService;
364     }
365
366
367     protected Map<String, GroupDefinition> getGroups() {
368         Map<String, GroupDefinition> groups = new HashMap<>();
369         GroupDefinition groupDefinition = new GroupDefinition();
370         groupDefinition.setName("groupDefinitionName");
371         groups.put("groupsMap", groupDefinition);
372         return groups;
373     }
374
375     protected UploadComponentInstanceInfo getUploadComponentInstanceInfo() {
376         UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
377         uploadComponentInstanceInfo.setType("My-Resource_Tosca_Name");
378         Collection<String> directives = new Collection<String>() {
379             @Override
380             public int size() {
381                 return 0;
382             }
383
384             @Override
385             public boolean isEmpty() {
386                 return false;
387             }
388
389             @Override
390             public boolean contains(Object o) {
391                 return false;
392             }
393
394             @Override
395             public Iterator<String> iterator() {
396                 return null;
397             }
398
399             @Override
400             public Object[] toArray() {
401                 return new Object[0];
402             }
403
404             @Override
405             public <T> T[] toArray(T[] ts) {
406                 return null;
407             }
408
409             @Override
410             public boolean add(String s) {
411                 return false;
412             }
413
414             @Override
415             public boolean remove(Object o) {
416                 return false;
417             }
418
419             @Override
420             public boolean containsAll(Collection<?> collection) {
421                 return false;
422             }
423
424             @Override
425             public boolean addAll(Collection<? extends String> collection) {
426                 return false;
427             }
428
429             @Override
430             public boolean removeAll(Collection<?> collection) {
431                 return false;
432             }
433
434             @Override
435             public boolean retainAll(Collection<?> collection) {
436                 return false;
437             }
438
439             @Override
440             public void clear() {
441
442             }
443         };
444         uploadComponentInstanceInfo.setDirectives(directives);
445         UploadNodeFilterInfo uploadNodeFilterInfo = new UploadNodeFilterInfo();
446         Map<String, List<UploadReqInfo>> requirements = new HashMap<>();
447         List<UploadReqInfo> uploadReqInfoList = new ArrayList<>();
448         UploadReqInfo uploadReqInfo = new UploadReqInfo();
449         uploadReqInfo.setName("uploadReqInfo");
450         uploadReqInfo.setNode("zxjTestImportServiceAb");
451         uploadReqInfo.setCapabilityName("tosca.capabilities.Node");
452         uploadReqInfo.setRelationshipTemplate("ExtCP 0.dependency.1");
453         uploadReqInfoList.add(uploadReqInfo);
454         requirements.put("requirements", uploadReqInfoList);
455         uploadNodeFilterInfo.setName("mme_ipu_vdu.virtualbinding");
456         uploadComponentInstanceInfo.setCapabilities(getCapabilities());
457         uploadComponentInstanceInfo.setRequirements(requirements);
458         uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
459         uploadComponentInstanceInfo.setOperations(getOperations());
460         return uploadComponentInstanceInfo;
461     }
462
463     protected Map<String, List<OperationUi>> getOperations() {
464         String relationshipTemplate = "ExtCP 0.dependency.1";
465         OperationUi operationUi = new OperationUi();
466         operationUi.setOperationType("change_external_connectivity_start");
467         operationUi.setInterfaceType("tosca.interfaces.nfv.Vnflcm");
468         operationUi.setImplementation("impl");
469         return Map.of(relationshipTemplate, List.of(operationUi));
470     }
471
472     protected Map<String, List<UploadCapInfo>> getCapabilities() {
473         List<UploadCapInfo> uploadCapInfoList = new ArrayList<>();
474         UploadCapInfo uploadCapInfo = new UploadCapInfo();
475         uploadCapInfo.setNode("tosca.nodes.Root");
476         uploadCapInfo.setName("mme_ipu_vdu.dependency");
477         uploadCapInfoList.add(uploadCapInfo);
478         Map<String, List<UploadCapInfo>> uploadCapInfoMap = new HashMap<>();
479         uploadCapInfoMap.put("tosca.capabilities.Node", uploadCapInfoList);
480         return uploadCapInfoMap;
481     }
482
483     protected List<ComponentInstance> creatComponentInstances() {
484         List<ComponentInstance> componentInstances = new ArrayList<>();
485         ComponentInstance componentInstance = new ComponentInstance();
486         Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
487         List<CapabilityDefinition> capabilityDefinitionList = new ArrayList<>();
488         CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
489         capabilityDefinition.setName("mme_ipu_vdu.feature");
490         capabilityDefinitionList.add(capabilityDefinition);
491         capabilities.put("tosca.capabilities.Node", capabilityDefinitionList);
492
493         Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
494         List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
495         RequirementDefinition requirementDefinition = new RequirementDefinition();
496         requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
497         requirementDefinitionList.add(requirementDefinition);
498         requirements.put("tosca.capabilities.Node", requirementDefinitionList);
499         componentInstance.setRequirements(requirements);
500         componentInstance.setCapabilities(capabilities);
501         componentInstance.setUniqueId("uniqueId");
502         componentInstance.setComponentUid("componentUid");
503         componentInstance.setName("zxjTestImportServiceAb");
504         componentInstance.setProperties(Collections.singletonList(new PropertyDefinition()));
505         componentInstances.add(componentInstance);
506         return componentInstances;
507     }
508
509     protected UploadComponentInstanceInfo createUploadComponentInstanceInfo() {
510         UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
511         uploadComponentInstanceInfo.setName("UploadComponentInstanceInfo");
512         return uploadComponentInstanceInfo;
513     }
514
515     private void mockAbstract() throws IOException {
516         checkCreateAbstract();
517         checkCreateOther();
518         checkCreateFile();
519     }
520
521     private void checkCreateAbstract() {
522         AbstractResourceInfo abstractResourceInfo = new AbstractResourceInfo();
523         List<RequirementCapabilityRelDef> componentInstancesRelations = new ArrayList<>();
524         abstractResourceInfo.setComponentInstancesRelations(componentInstancesRelations);
525         abstractResourceInfo.setAbstractResourceUniqueId("abstractResourceUniqueId");
526         abstractResourceInfo.setAbstractResourceName("abstractResourceName");
527         abstractResourceInfo.setAbstractResourceUUid("abstractResourceUUid");
528
529         AbstractResourceInfo getAbstractResourceInfo = new AbstractResourceInfo();
530         getAbstractResourceInfo.getAbstractResourceName();
531         getAbstractResourceInfo.getAbstractResourceUniqueId();
532         getAbstractResourceInfo.getAbstractResourceUUid();
533         getAbstractResourceInfo.getComponentInstancesRelations();
534
535         AbstractTemplateInfo createAbstractTemplateInfo = new AbstractTemplateInfo();
536         List<AbstractResourceInfo> abstractResourceInfoList = new ArrayList<>();
537         abstractResourceInfoList.add(abstractResourceInfo);
538         createAbstractTemplateInfo.setAbstractResourceInfoList(abstractResourceInfoList);
539         createAbstractTemplateInfo.setServiceUniqueId("serviceUniqueId");
540         createAbstractTemplateInfo.setIsAbstractTemplate(true);
541         createAbstractTemplateInfo.setServiceUUid("serviceUUid");
542
543         AbstractTemplateInfo getAbstractTemplateInfo = new AbstractTemplateInfo();
544         getAbstractTemplateInfo.getAbstractResourceInfoList();
545         getAbstractTemplateInfo.getIsAbstractTemplate();
546         getAbstractTemplateInfo.getServiceUniqueId();
547         getAbstractTemplateInfo.getServiceUUid();
548
549         CopyServiceInfo copyServiceInfo = new CopyServiceInfo();
550         copyServiceInfo.setNewServiceName("newServiceName");
551         copyServiceInfo.setNewServiceUUid("serviceUUid");
552         copyServiceInfo.setOldServiceUUid("oldServiceUUid");
553
554         CopyServiceInfo getCopyServiceInfo = new CopyServiceInfo();
555         getCopyServiceInfo.getNewServiceName();
556         getCopyServiceInfo.getNewServiceUUid();
557         getCopyServiceInfo.getOldServiceUUid();
558
559         ReplaceVNFInfo replaceVNFInfo = new ReplaceVNFInfo();
560         ComponentInstance realVNFComponentInstance = new ComponentInstance();
561         replaceVNFInfo.setAbstractResourceUniqueId("abstractResourceUniqueId");
562         replaceVNFInfo.setRealVNFComponentInstance(realVNFComponentInstance);
563         replaceVNFInfo.setServiceUniqueId("serviceUniqueId");
564
565         ReplaceVNFInfo getReplaceVNFInfo = new ReplaceVNFInfo();
566         getReplaceVNFInfo.getServiceUniqueId();
567         getReplaceVNFInfo.getAbstractResourceUniqueId();
568         getReplaceVNFInfo.getRealVNFComponentInstance();
569     }
570
571     private void checkCreateOther() {
572         ResourceInstanceMetadata resourceInstanceMetadata = new ResourceInstanceMetadata();
573         List<ArtifactMetadata> artifacts = new ArrayList<>();
574         resourceInstanceMetadata.setArtifacts(artifacts);
575         resourceInstanceMetadata.setResoucreType("resoucreType");
576         resourceInstanceMetadata.setResourceInstanceName("resourceInstanceName");
577         resourceInstanceMetadata.setResourceInvariantUUID("resourceInvariantUUID");
578         resourceInstanceMetadata.setResourceName("resourceName");
579         resourceInstanceMetadata.setResourceUUID("resourceUUID");
580         resourceInstanceMetadata.setResourceVersion("resourceVersion");
581
582         ResourceInstanceMetadata getResourceInstanceMetadata = new ResourceInstanceMetadata();
583         getResourceInstanceMetadata.getArtifacts();
584         getResourceInstanceMetadata.getResoucreType();
585         getResourceInstanceMetadata.getResourceInstanceName();
586         getResourceInstanceMetadata.getResourceInvariantUUID();
587         getResourceInstanceMetadata.getResourceName();
588         getResourceInstanceMetadata.getResourceUUID();
589         getResourceInstanceMetadata.getResourceVersion();
590
591         UploadServiceInfo uploadServiceInfo = new UploadServiceInfo();
592         List<String> tags = new ArrayList<>();
593         List<CategoryDefinition> categories = new ArrayList<>();
594         List<UploadArtifactInfo> artifactList = new ArrayList<>();
595         uploadServiceInfo.setProjectCode("projectCode");
596         uploadServiceInfo.setCategories(categories);
597         uploadServiceInfo.setServiceType("");
598         uploadServiceInfo.setServiceVendorModelNumber("serviceVendorModelNumber");
599         uploadServiceInfo.setVendorRelease("vendorRelease");
600         uploadServiceInfo.setVendorName("vendorName");
601         uploadServiceInfo.setServiceIconPath("serviceIconPath");
602         uploadServiceInfo.setName("uploadServiceInfo");
603         uploadServiceInfo.setContactId("contactId");
604         uploadServiceInfo.setIcon("icon");
605         uploadServiceInfo.setNamingPolicy("namingPolicy");
606         uploadServiceInfo.setEcompGeneratedNaming("ecompGeneratedNaming");
607         uploadServiceInfo.setServiceEcompNaming("serviceEcompNaming");
608         uploadServiceInfo.setServiceRole("serviceRole");
609         uploadServiceInfo.setSubcategory("subcategory");
610         uploadServiceInfo.setCategory("category");
611         uploadServiceInfo.setType("type");
612         uploadServiceInfo.setUUID("UUID");
613         uploadServiceInfo.setInvariantUUID("invariantUUID");
614         uploadServiceInfo.setResourceVendorRelease("resourceVendorRelease");
615         uploadServiceInfo.setResourceVendor("resourceVendor");
616         uploadServiceInfo.setDescription("description");
617         uploadServiceInfo.setTags(tags);
618         uploadServiceInfo.setArtifactList(artifactList);
619         uploadServiceInfo.setPayloadName("payloadName");
620         uploadServiceInfo.setPayloadData("payloadData");
621     }
622
623     protected void checkGetUploadServiceInfo() {
624         UploadServiceInfo uploadServiceInfo = new UploadServiceInfo();
625         List<String> tags = new ArrayList<>();
626         List<CategoryDefinition> categories = new ArrayList<>();
627         List<UploadArtifactInfo> artifactList = new ArrayList<>();
628         uploadServiceInfo.getProjectCode();
629         uploadServiceInfo.getCategories();
630         uploadServiceInfo.getServiceType();
631         uploadServiceInfo.getServiceVendorModelNumber();
632         uploadServiceInfo.getVendorRelease();
633         uploadServiceInfo.getVendorName();
634         uploadServiceInfo.getServiceIconPath();
635         uploadServiceInfo.getName();
636         uploadServiceInfo.getContactId();
637         uploadServiceInfo.getIcon();
638         uploadServiceInfo.getNamingPolicy();
639         uploadServiceInfo.getEcompGeneratedNaming();
640         uploadServiceInfo.getServiceEcompNaming();
641         uploadServiceInfo.getServiceRole();
642         uploadServiceInfo.getSubcategory();
643         uploadServiceInfo.getCategory();
644         uploadServiceInfo.getType();
645         uploadServiceInfo.getUUID();
646         uploadServiceInfo.getInvariantUUID();
647         uploadServiceInfo.getResourceVendorRelease();
648         uploadServiceInfo.getResourceVendor();
649         uploadServiceInfo.getDescription();
650         uploadServiceInfo.getTags();
651         uploadServiceInfo.getArtifactList();
652         uploadServiceInfo.getPayloadName();
653         uploadServiceInfo.getPayloadData();
654     }
655
656     private void checkCreateFile() throws IOException {
657         CreateServiceFromYamlParameter csfp = new CreateServiceFromYamlParameter();
658         Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
659         ParsedToscaYamlInfo parsedToscaYamlInfo = new ParsedToscaYamlInfo();
660         List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
661         CsarInfo csarInfo = getCsarInfo();
662         csfp.setYamlName("yamlName");
663         csfp.setNodeTypesInfo(nodeTypesInfo);
664         csfp.setParsedToscaYamlInfo(parsedToscaYamlInfo);
665         csfp.setCsarInfo(csarInfo);
666         csfp.setCreatedArtifacts(createdArtifacts);
667         csfp.setYamlName("yamlName");
668         csfp.setShouldLock(true);
669         csfp.setInTransaction(true);
670         csfp.setNodeName("nodeName");
671
672         CreateServiceFromYamlParameter getCsfy = new CreateServiceFromYamlParameter();
673         getCsfy.getYamlName();
674         getCsfy.getNodeTypesInfo();
675         getCsfy.getParsedToscaYamlInfo();
676         getCsfy.getCsarInfo();
677         getCsfy.getCreatedArtifacts();
678         getCsfy.getYamlName();
679         getCsfy.isShouldLock();
680         getCsfy.isInTransaction();
681         getCsfy.getNodeName();
682     }
683
684     protected CsarInfo getCsarInfo() throws IOException {
685         String csarUuid = "0010";
686         User user = new User();
687         Map<String, byte[]> csar = crateCsarFromPayload();
688         String vfReousrceName = "resouceName";
689         String mainTemplateName = "mainTemplateName";
690         String mainTemplateContent = getMainTemplateContent();
691         final Service service = createServiceObject(false);
692         CsarInfo csarInfo = new OnboardedCsarInfo(user, csarUuid, csar, vfReousrceName, mainTemplateName, mainTemplateContent, false);
693         return csarInfo;
694     }
695
696     protected Map<String, byte[]> crateCsarFromPayload() {
697         String payloadName = "valid_vf.csar";
698         byte[] data = new byte[1024];
699         Map<String, byte[]> returnValue = new HashMap<>();
700         returnValue.put(payloadName, data);
701
702         return returnValue;
703     }
704
705     protected String getGroupsYaml() throws IOException {
706         Path filePath = Paths.get("src/test/resources/types/groups.yml");
707         byte[] fileContent = Files.readAllBytes(filePath);
708         return new String(fileContent);
709     }
710
711     protected String getYamlFileContent() throws IOException {
712         Path filePath = Paths.get("src/test/resources/types/fileContent.yml");
713         byte[] fileContent = Files.readAllBytes(filePath);
714         return new String(fileContent);
715     }
716
717     public String getMainTemplateContent() throws IOException {
718         Path filePath = Paths.get("src/test/resources/types/mainTemplateContent.yml");
719         byte[] fileContent = Files.readAllBytes(filePath);
720         return new String(fileContent);
721     }
722
723     protected String getArtifactsYml() throws IOException {
724         Path filePath = Paths.get("src/test/resources/types/artifacts.yml");
725         byte[] fileContent = Files.readAllBytes(filePath);
726         return new String(fileContent);
727     }
728
729     protected void assertComponentException(ComponentException e, ActionStatus expectedStatus, String... variables) {
730         ResponseFormat actualResponse = e.getResponseFormat() != null ?
731             e.getResponseFormat() : componentsUtils.getResponseFormat(e.getActionStatus(), e.getParams());
732         assertResponse(actualResponse, expectedStatus, variables);
733     }
734
735     protected void assertResponse(ResponseFormat actualResponse, ActionStatus expectedStatus, String... variables) {
736         ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
737         assertEquals(expectedResponse.getStatus(), actualResponse.getStatus());
738         assertEquals("assert error description", expectedResponse.getFormattedMessage(), actualResponse.getFormattedMessage());
739     }
740
741 }