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