2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
20 package org.openecomp.sdc.be.components.impl;
22 import static org.assertj.core.api.Assertions.assertThat;
23 import fj.data.Either;
27 import mockit.Deencapsulation;
28 import org.apache.commons.lang3.tuple.ImmutablePair;
29 import org.assertj.core.util.Lists;
30 import org.junit.Assert;
31 import org.junit.Before;
32 import org.junit.Ignore;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.InjectMocks;
36 import org.mockito.Mock;
37 import org.mockito.Mockito;
38 import org.mockito.junit.MockitoJUnitRunner;
39 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
40 import org.openecomp.sdc.be.components.validation.UserValidations;
41 import org.openecomp.sdc.be.dao.api.ActionStatus;
42 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
43 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
44 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
45 import org.openecomp.sdc.be.datatypes.elements.*;
46 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
47 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
48 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
49 import org.openecomp.sdc.be.impl.ComponentsUtils;
50 import org.openecomp.sdc.be.impl.ServletUtils;
51 import org.openecomp.sdc.be.info.CreateAndAssotiateInfo;
52 import org.openecomp.sdc.be.model.*;
53 import org.openecomp.sdc.be.model.LifecycleStateEnum;
54 import org.openecomp.sdc.be.model.jsontitan.operations.ForwardingPathOperation;
55 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
56 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
57 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
58 import org.openecomp.sdc.be.user.UserBusinessLogic;
59 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
60 import org.openecomp.sdc.exception.ResponseFormat;
62 import java.util.function.BiPredicate;
64 import static org.junit.Assert.assertTrue;
65 import static org.junit.Assert.assertFalse;
66 import static org.junit.Assert.assertSame;
67 import static org.junit.Assert.assertEquals;
68 import static org.mockito.ArgumentMatchers.any;
69 import static org.mockito.ArgumentMatchers.anySet;
70 import static org.mockito.ArgumentMatchers.eq;
71 import static org.mockito.Mockito.when;
73 import static org.mockito.ArgumentMatchers.*;
76 * The test suite designed for test functionality of ComponentInstanceBusinessLogic class
79 @RunWith(MockitoJUnitRunner.class)
80 public class ComponentInstanceBusinessLogicTest {
82 private final static String USER_ID = "jh0003";
83 private final static String COMPONENT_ID = "componentId";
84 private final static String TO_INSTANCE_ID = "toInstanceId";
85 private final static String FROM_INSTANCE_ID = "fromInstanceId";
86 private final static String RELATION_ID = "relationId";
87 private final static String CAPABILITY_OWNER_ID = "capabilityOwnerId";
88 private final static String CAPABILITY_UID = "capabilityUid";
89 private final static String CAPABILITY_NAME = "capabilityName";
90 private final static String REQUIREMENT_OWNER_ID = "requirementOwnerId";
91 private final static String REQUIREMENT_UID = "requirementUid";
92 private final static String REQUIREMENT_NAME = "requirementName";
93 private final static String RELATIONSHIP_TYPE = "relationshipType";
94 private final static String ARTIFACT_1 = "cloudtech_k8s_charts.zip";
95 private final static String ARTIFACT_2 = "cloudtech_azure_day0.zip";
96 private final static String ARTIFACT_3 = "cloudtech_aws_configtemplate.zip";
97 private final static String ARTIFACT_4 = "k8s_charts.zip";
98 private final static String ARTIFACT_5 = "cloudtech_openstack_configtemplate.zip";
101 private static ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
103 private ComponentsUtils componentsUtils;
105 private ServletUtils servletUtils;
107 private ResponseFormat responseFormat;
109 private ToscaOperationFacade toscaOperationFacade;
111 private UserBusinessLogic userAdmin;
113 private ForwardingPathOperation forwardingPathOperation;
117 private UserValidations userValidations;
119 private TitanDao titanDao;
121 private ArtifactsBusinessLogic artifactBusinessLogic;
123 private GraphLockOperation graphLockOperation;
125 private Component service;
126 private Component resource;
127 private ComponentInstance toInstance;
128 private ComponentInstance fromInstance;
129 private CapabilityDataDefinition capability;
130 private RequirementDataDefinition requirement;
131 private RequirementCapabilityRelDef relation;
141 public void testGetRelationByIdSuccess(){
142 getServiceRelationByIdSuccess(service);
143 getServiceRelationByIdSuccess(resource);
147 public void testGetRelationByIdUserValidationFailure(){
148 getServiceRelationByIdUserValidationFailure(service);
149 getServiceRelationByIdUserValidationFailure(resource);
153 public void testGetRelationByIdComponentNotFoundFailure(){
154 getRelationByIdComponentNotFoundFailure(service);
155 getRelationByIdComponentNotFoundFailure(resource);
159 public void testForwardingPathOnVersionChange(){
160 getforwardingPathOnVersionChange();
164 public void testIsCloudSpecificArtifact() {
165 assertTrue(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_1));
166 assertTrue(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_2));
167 assertTrue(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_3));
168 assertFalse(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_4));
169 assertFalse(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_5));
172 private void getforwardingPathOnVersionChange(){
173 String containerComponentParam="services";
174 String containerComponentID="121-cont";
175 String componentInstanceID="121-cont-1-comp";
176 Service component=new Service();
177 Map<String, ForwardingPathDataDefinition> forwardingPaths = generateForwardingPath(componentInstanceID);
179 //Add existing componentInstance to component
180 List<ComponentInstance> componentInstanceList=new ArrayList<>();
181 ComponentInstance oldComponentInstance=new ComponentInstance();
182 oldComponentInstance.setName("OLD_COMP_INSTANCE");
183 oldComponentInstance.setUniqueId(componentInstanceID);
184 oldComponentInstance.setName(componentInstanceID);
185 oldComponentInstance.setToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_UID,"1-comp");
186 componentInstanceList.add(oldComponentInstance);
187 component.setComponentInstances(componentInstanceList);
188 component.setForwardingPaths(forwardingPaths);
190 List<ComponentInstance> componentInstanceListNew=new ArrayList<>();
191 ComponentInstance newComponentInstance=new ComponentInstance();
192 String new_Comp_UID="2-comp";
193 newComponentInstance.setToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_UID,new_Comp_UID);
194 newComponentInstance.setUniqueId(new_Comp_UID);
195 componentInstanceListNew.add(newComponentInstance);
196 Component component2=new Service();
197 component2.setComponentInstances(componentInstanceListNew);
199 //Mock for getting component
200 when(toscaOperationFacade.getToscaElement(eq(containerComponentID),any(ComponentParametersView.class))).thenReturn(Either.left(component));
201 when(toscaOperationFacade.validateComponentExists(any(String.class))).thenReturn(Either.left(Boolean.TRUE));
202 when(toscaOperationFacade.getToscaFullElement(eq(new_Comp_UID))).thenReturn(Either.left(component2));
204 Either<Set<String>, ResponseFormat> resultOp = componentInstanceBusinessLogic.forwardingPathOnVersionChange
205 (containerComponentParam,containerComponentID,componentInstanceID,newComponentInstance);
206 assertEquals(1,resultOp.left().value().size());
207 assertEquals("FP-ID-1",resultOp.left().value().iterator().next());
213 public void testDeleteForwardingPathsWhenComponentinstanceDeleted(){
215 ComponentTypeEnum containerComponentType = ComponentTypeEnum.findByParamName("services");
216 String containerComponentID = "Service-comp";
217 String componentInstanceID = "NodeA1";
218 Service component = new Service();
219 component.setComponentInstances(Arrays.asList(createComponentIstance("NodeA2"),createComponentIstance("NodeB2"),
220 createComponentIstance(componentInstanceID)));
222 component.addForwardingPath(createPath("path1", componentInstanceID, "NodeB1", "1"));
223 component.addForwardingPath(createPath("Path2", "NodeA2","NodeB2", "2"));
224 when(toscaOperationFacade.getToscaElement(eq(containerComponentID),any(ComponentParametersView.class))).thenReturn(Either.left(component));
225 when(toscaOperationFacade.getToscaElement(eq(containerComponentID))).thenReturn(Either.left(component));
226 when(forwardingPathOperation.deleteForwardingPath(any(Service.class), anySet())).thenReturn(Either.left(new HashSet<>()));
227 final ComponentInstance ci = new ComponentInstance();
228 ci.setName(componentInstanceID);
229 Either<ComponentInstance, ResponseFormat> responseFormatEither = componentInstanceBusinessLogic.deleteForwardingPathsRelatedTobeDeletedComponentInstance(
230 containerComponentID, containerComponentType, Either.left(ci));
231 assertThat(responseFormatEither.isLeft()).isEqualTo(true);
235 private ComponentInstance createComponentIstance(String path1) {
236 ComponentInstance componentInstance = new ComponentInstance();
237 componentInstance.setName(path1);
238 return componentInstance;
241 private ForwardingPathDataDefinition createPath(String pathName, String fromNode, String toNode , String uniqueId){
242 ForwardingPathDataDefinition forwardingPath = new ForwardingPathDataDefinition(pathName);
243 forwardingPath.setProtocol("protocol");
244 forwardingPath.setDestinationPortNumber("port");
245 forwardingPath.setUniqueId(uniqueId);
246 ListDataDefinition<ForwardingPathElementDataDefinition> forwardingPathElementListDataDefinition = new ListDataDefinition<>();
247 forwardingPathElementListDataDefinition.add(new ForwardingPathElementDataDefinition(fromNode, toNode,
248 "nodeAcpType", "nodeBcpType", "nodeDcpName", "nodeBcpName"));
249 forwardingPath.setPathElements(forwardingPathElementListDataDefinition);
251 return forwardingPath;
256 private Map<String, ForwardingPathDataDefinition> generateForwardingPath(String componentInstanceID) {
257 ForwardingPathDataDefinition forwardingPath = new ForwardingPathDataDefinition("fpName");
258 String protocol = "protocol";
259 forwardingPath.setProtocol(protocol);
260 forwardingPath.setDestinationPortNumber("DestinationPortNumber");
261 forwardingPath.setUniqueId("FP-ID-1");
262 ListDataDefinition<ForwardingPathElementDataDefinition> forwardingPathElementListDataDefinition =
263 new ListDataDefinition<>();
264 forwardingPathElementListDataDefinition.add(
265 new ForwardingPathElementDataDefinition(componentInstanceID, "nodeB", "nodeA_FORWARDER_CAPABILITY",
266 "nodeBcpType" , "nodeDcpName",
268 forwardingPath.setPathElements(forwardingPathElementListDataDefinition);
269 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
270 forwardingPaths.put("1122", forwardingPath);
271 return forwardingPaths;
274 @SuppressWarnings("unchecked")
275 private void getServiceRelationByIdSuccess(Component component){
276 Either<Component, StorageOperationStatus> getComponentRes = Either.left(component);
277 when(toscaOperationFacade.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(getComponentRes);
278 Either<RequirementCapabilityRelDef, ResponseFormat> response = componentInstanceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
279 assertTrue(response.isLeft());
282 private void getServiceRelationByIdUserValidationFailure(Component component){
283 when(userValidations.validateUserExists(eq(USER_ID), eq("get relation by Id"), eq(false))).thenThrow(new ComponentException(ActionStatus.USER_NOT_FOUND));
285 componentInstanceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
286 } catch(ComponentException e){
287 assertSame(e.getActionStatus(), ActionStatus.USER_NOT_FOUND);
291 private void getRelationByIdComponentNotFoundFailure(Component component){
292 Either<User, ActionStatus> eitherCreator = Either.left(user);
293 Either<Component, StorageOperationStatus> getComponentRes = Either.right(StorageOperationStatus.NOT_FOUND);
294 when(toscaOperationFacade.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(getComponentRes);
296 Either<RequirementCapabilityRelDef, ResponseFormat> response = componentInstanceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
297 assertTrue(response.isRight());
300 private void stubMethods() {
301 when(userValidations.validateUserExists(eq(USER_ID), eq("get relation by Id"), eq(false))).thenReturn(user);
304 private void createComponents() {
311 private void createResource() {
312 resource = new Resource();
313 resource.setUniqueId(COMPONENT_ID);
314 resource.setComponentInstancesRelations(Lists.newArrayList(relation));
315 resource.setComponentInstances(Lists.newArrayList(toInstance,fromInstance));
316 resource.setCapabilities(toInstance.getCapabilities());
317 resource.setRequirements(fromInstance.getRequirements());
318 resource.setComponentType(ComponentTypeEnum.RESOURCE);
319 resource.setState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
323 private void createService() {
324 service = new Service();
325 service.setUniqueId(COMPONENT_ID);
326 service.setComponentInstancesRelations(Lists.newArrayList(relation));
327 service.setComponentInstances(Lists.newArrayList(toInstance,fromInstance));
328 service.setCapabilities(toInstance.getCapabilities());
329 service.setRequirements(fromInstance.getRequirements());
330 service.setComponentType(ComponentTypeEnum.SERVICE);
331 service.setState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
335 private void createInstances() {
336 toInstance = new ComponentInstance();
337 toInstance.setUniqueId(TO_INSTANCE_ID);
339 fromInstance = new ComponentInstance();
340 fromInstance.setUniqueId(FROM_INSTANCE_ID);
342 capability = new CapabilityDataDefinition();
343 capability.setOwnerId(CAPABILITY_OWNER_ID);
344 capability.setUniqueId(CAPABILITY_UID);
345 capability.setName(CAPABILITY_NAME);
347 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
348 capabilities.put(capability.getName(), Lists.newArrayList(new CapabilityDefinition(capability)));
350 requirement = new RequirementDataDefinition();
351 requirement.setOwnerId(REQUIREMENT_OWNER_ID);
352 requirement.setUniqueId(REQUIREMENT_UID);
353 requirement.setName(REQUIREMENT_NAME);
354 requirement.setRelationship(RELATIONSHIP_TYPE);
357 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
358 requirements.put(requirement.getCapability(), Lists.newArrayList(new RequirementDefinition(requirement)));
360 toInstance.setCapabilities(capabilities);
361 fromInstance.setRequirements(requirements);
365 private void createRelation() {
367 relation = new RequirementCapabilityRelDef();
368 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
369 RelationshipInfo relationInfo = new RelationshipInfo();
370 relationInfo.setId(RELATION_ID);
371 relationship.setRelation(relationInfo);
373 relation.setRelationships(Lists.newArrayList(relationship));
374 relation.setToNode(TO_INSTANCE_ID);
375 relation.setFromNode(FROM_INSTANCE_ID);
377 relationInfo.setCapabilityOwnerId(CAPABILITY_OWNER_ID);
378 relationInfo.setCapabilityUid(CAPABILITY_UID);
379 relationInfo.setCapability(CAPABILITY_NAME);
380 relationInfo.setRequirementOwnerId(REQUIREMENT_OWNER_ID);
381 relationInfo.setRequirementUid(REQUIREMENT_UID);
382 relationInfo.setRequirement(REQUIREMENT_NAME);
383 RelationshipImpl relationshipImpl = new RelationshipImpl();
384 relationshipImpl.setType(RELATIONSHIP_TYPE);
385 relationInfo.setRelationships(relationshipImpl);
388 private ComponentInstanceBusinessLogic createTestSubject() {
389 return componentInstanceBusinessLogic;
397 public void testChangeServiceProxyVersion(){
398 ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
400 Either<ComponentInstance, ResponseFormat> result;
403 componentInstanceBusinessLogic = createTestSubject();
404 result = componentInstanceBusinessLogic.changeServiceProxyVersion();
414 public void testCreateServiceProxy() {
415 ComponentInstanceBusinessLogic testSubject;
416 Either<ComponentInstance, ResponseFormat> result;
419 testSubject = createTestSubject();
420 result = testSubject.createServiceProxy();
428 public void testDeleteForwardingPathsRelatedTobeDeletedComponentInstance() {
429 ComponentInstanceBusinessLogic testSubject;
430 String containerComponentId = "";
431 String componentInstanceId = "";
432 ComponentTypeEnum containerComponentType = ComponentTypeEnum.RESOURCE;
433 Either<ComponentInstance, ResponseFormat> resultOp = null;
434 Either<ComponentInstance, ResponseFormat> result;
437 testSubject = createTestSubject();
438 result = testSubject.deleteForwardingPathsRelatedTobeDeletedComponentInstance(containerComponentId,
439 containerComponentType, resultOp);
444 public void testDeleteServiceProxy() {
445 ComponentInstanceBusinessLogic testSubject;
447 Either<ComponentInstance, ResponseFormat> result;
450 testSubject = createTestSubject();
451 result = testSubject.deleteServiceProxy();
460 public void testGetComponentInstanceInputsByInputId() {
461 ComponentInstanceBusinessLogic testSubject;
462 Component component = new Service();
464 List<ComponentInstanceInput> result;
467 testSubject = createTestSubject();
468 result = testSubject.getComponentInstanceInputsByInputId(component, inputId);
474 public void testGetComponentInstancePropertiesByInputId() {
475 ComponentInstanceBusinessLogic testSubject;
476 Component component = new Service();
478 List<ComponentInstanceProperty> result;
481 testSubject = createTestSubject();
482 result = testSubject.getComponentInstancePropertiesByInputId(component, inputId);
487 public void testGetRelationById() {
488 ComponentInstanceBusinessLogic testSubject;
489 String componentId = "";
490 String relationId = "";
491 String userId = user.getUserId();
492 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE_INSTANCE;
493 Either<RequirementCapabilityRelDef, ResponseFormat> result;
496 testSubject = createTestSubject();
497 result = testSubject.getRelationById(componentId, relationId, userId, componentTypeEnum);
505 public void testCreateComponentInstance_1() {
506 ComponentInstanceBusinessLogic testSubject;String containerComponentParam = "";
507 String containerComponentId = "";
508 String userId = user.getUserId();
509 ComponentInstance resourceInstance = null;
510 boolean inTransaction = false;
511 boolean needLock = false;
512 Either<ComponentInstance,ResponseFormat> result;
515 testSubject=createTestSubject();result=testSubject.createComponentInstance(containerComponentParam, containerComponentId, userId, resourceInstance, inTransaction, needLock);
523 public void testCreateAndAssociateRIToRI() {
524 ComponentInstanceBusinessLogic testSubject;
526 String containerComponentParam = "";
527 String containerComponentId = "";
528 String userId = user.getUserId();
529 CreateAndAssotiateInfo createAndAssotiateInfo = new CreateAndAssotiateInfo(null, null);
530 Either<CreateAndAssotiateInfo,ResponseFormat> result;
533 testSubject=createTestSubject();
534 result=testSubject.createAndAssociateRIToRI(containerComponentParam, containerComponentId, userId, createAndAssotiateInfo);
538 public void testGetOriginComponentFromComponentInstance_1() {
539 ComponentInstanceBusinessLogic testSubject;
541 String componentInstanceName = "";
542 String origComponetId = resource.getUniqueId();
543 Either<Component, StorageOperationStatus> oldResourceRes = Either.left(resource);
544 when(toscaOperationFacade.getToscaFullElement(resource.getUniqueId())).thenReturn(oldResourceRes);
545 Either<Component,ResponseFormat> result;
548 testSubject=createTestSubject();
549 result=Deencapsulation.invoke(testSubject, "getOriginComponentFromComponentInstance", new Object[]{componentInstanceName, origComponetId});
554 public void testCreateComponentInstanceOnGraph() {
555 ComponentInstanceBusinessLogic testSubject;
558 Either<ComponentInstance,ResponseFormat> result;
560 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND);
561 when(toscaOperationFacade.addComponentInstanceToTopologyTemplate(resource, resource,toInstance, false, user)).thenReturn(result2);
564 testSubject=createTestSubject();
565 result=Deencapsulation.invoke(testSubject, "createComponentInstanceOnGraph", new Object[]{resource, resource, toInstance, user});
568 @Ignore("test failing skipping for now")
570 public void testCreateComponentInstanceOnGraph2() {
571 ComponentInstanceBusinessLogic testSubject;
573 resource.setName("name");
575 Either<ComponentInstance,ResponseFormat> result;
576 ImmutablePair<Component, String> pair = new ImmutablePair<>(resource,"");
581 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.left(pair);
582 when(toscaOperationFacade.addComponentInstanceToTopologyTemplate(resource, resource,toInstance, false, user)).thenReturn(result2);
585 testSubject=createTestSubject();
586 result=Deencapsulation.invoke(testSubject, "createComponentInstanceOnGraph", new Object[]{resource, resource, toInstance, user});
590 public void testUpdateComponentInstanceMetadata() {
591 ComponentInstanceBusinessLogic testSubject;
592 String containerComponentParam = "";
593 String containerComponentId = "";
594 String componentInstanceId = "";
595 String userId = user.getUserId();
597 Either<ComponentInstance,ResponseFormat> result;
600 testSubject=createTestSubject();
601 result=testSubject.updateComponentInstanceMetadata(containerComponentParam, containerComponentId, componentInstanceId, userId, toInstance);
606 public void testUpdateComponentInstanceMetadata_1() {
607 ComponentInstanceBusinessLogic testSubject;
608 String containerComponentParam = "";
609 String containerComponentId = "";
610 String componentInstanceId = "";
611 String userId = user.getUserId();
613 boolean inTransaction = false;
614 boolean needLock = false;
615 boolean createNewTransaction = false;
616 Either<ComponentInstance,ResponseFormat> result;
619 testSubject=createTestSubject();
620 result=testSubject.updateComponentInstanceMetadata(containerComponentParam, containerComponentId, componentInstanceId, userId, toInstance, inTransaction, needLock, createNewTransaction);
628 public void testValidateParent() {
629 ComponentInstanceBusinessLogic testSubject;
631 String nodeTemplateId = "";
635 testSubject=createTestSubject();
636 result=Deencapsulation.invoke(testSubject, "validateParent", new Object[]{resource, nodeTemplateId});
641 public void testGetComponentType() {
642 ComponentInstanceBusinessLogic testSubject;
643 ComponentTypeEnum result;
646 testSubject=createTestSubject();
647 result=Deencapsulation.invoke(testSubject, "getComponentType", new Object[]{ComponentTypeEnum.class});
653 public void testGetNewGroupName() {
654 ComponentInstanceBusinessLogic testSubject;String oldPrefix = "";
655 String newNormailzedPrefix = "";
656 String qualifiedGroupInstanceName = "";
660 testSubject=createTestSubject();
661 result=Deencapsulation.invoke(testSubject, "getNewGroupName", new Object[]{oldPrefix, newNormailzedPrefix, qualifiedGroupInstanceName});
666 public void testUpdateComponentInstanceMetadata_3() {
667 ComponentInstanceBusinessLogic testSubject;
669 ComponentInstance newComponentInstance = null;
670 ComponentInstance result;
673 testSubject=createTestSubject();
674 result=Deencapsulation.invoke(testSubject, "updateComponentInstanceMetadata", new Object[]{toInstance, toInstance});
679 public void testDeleteComponentInstance() {
680 ComponentInstanceBusinessLogic testSubject;String containerComponentParam = "";
681 String containerComponentId = "";
682 String componentInstanceId = "";
683 String userId = user.getUserId();
684 Either<ComponentInstance,ResponseFormat> result;
687 testSubject=createTestSubject();
688 result=testSubject.deleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceId, userId);
693 public void testDeleteForwardingPaths() {
694 ComponentInstanceBusinessLogic testSubject;
696 String serviceId = service.getUniqueId();
697 List<String> pathIdsToDelete = new ArrayList<>();
698 Either<Set<String>,ResponseFormat> result;
700 // Either<Service, StorageOperationStatus> storageStatus = toscaOperationFacade.getToscaElement(serviceId);
701 when(toscaOperationFacade.getToscaElement(serviceId)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
704 testSubject=createTestSubject();
705 result=Deencapsulation.invoke(testSubject, "deleteForwardingPaths", new Object[]{serviceId, pathIdsToDelete});
710 public void testAssociateRIToRIOnGraph() throws Exception {
711 ComponentInstanceBusinessLogic testSubject;
713 RequirementCapabilityRelDef requirementDef = new RequirementCapabilityRelDef();
714 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
715 boolean inTransaction = false;
716 Either<RequirementCapabilityRelDef,ResponseFormat> result;
720 Either<RequirementCapabilityRelDef, StorageOperationStatus> getResourceResult = Either.left(requirementDef);
721 when(toscaOperationFacade.associateResourceInstances(resource.getUniqueId(), requirementDef)).thenReturn(getResourceResult);
724 testSubject=createTestSubject();
725 result=testSubject.associateRIToRIOnGraph(resource, requirementDef, componentTypeEnum, inTransaction);
731 public void testFindRelation() throws Exception {
732 ComponentInstanceBusinessLogic testSubject;
733 String relationId = "";
734 List<RequirementCapabilityRelDef> requirementCapabilityRelations = new ArrayList<>();
735 RequirementCapabilityRelDef result;
738 testSubject=createTestSubject();
739 result=Deencapsulation.invoke(testSubject, "findRelation", new Object[]{relationId, requirementCapabilityRelations});
744 public void testIsNetworkRoleServiceProperty() throws Exception {
745 ComponentInstanceBusinessLogic testSubject;
746 ComponentInstanceProperty property = new ComponentInstanceProperty();
747 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
751 testSubject=createTestSubject();
752 result=Deencapsulation.invoke(testSubject, "isNetworkRoleServiceProperty", new Object[]{property, componentTypeEnum});
757 public void testConcatServiceNameToVLINetworkRolePropertiesValues() throws Exception {
758 ComponentInstanceBusinessLogic testSubject;
759 ToscaOperationFacade toscaOperationFacade = new ToscaOperationFacade();
760 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
761 String componentId = "";
762 String resourceInstanceId = "";
763 List<ComponentInstanceProperty> properties = new ArrayList<>();
764 StorageOperationStatus result;
767 testSubject=createTestSubject();
768 result=Deencapsulation.invoke(testSubject, "concatServiceNameToVLINetworkRolePropertiesValues", new Object[]{toscaOperationFacade, componentTypeEnum, componentId, resourceInstanceId, properties});
773 public void testCreateOrUpdatePropertiesValues() throws Exception {
774 ComponentInstanceBusinessLogic testSubject;
775 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
777 String componentId = resource.getUniqueId();
778 String resourceInstanceId = "";
779 List<ComponentInstanceProperty> properties = new ArrayList<>();
780 String userId = user.getUserId();
781 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
784 when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.left(resource));
787 testSubject=createTestSubject();
788 result=testSubject.createOrUpdatePropertiesValues(componentTypeEnum, componentId, resourceInstanceId, properties, userId);
790 componentTypeEnum =null;
791 result=testSubject.createOrUpdatePropertiesValues(componentTypeEnum, componentId, resourceInstanceId, properties, userId);
793 // when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
794 result=testSubject.createOrUpdatePropertiesValues(componentTypeEnum, componentId, resourceInstanceId, properties, userId);
800 public void testUpdateCapabilityPropertyOnContainerComponent() throws Exception {
801 ComponentInstanceBusinessLogic testSubject;
802 ComponentInstanceProperty property = new ComponentInstanceProperty();
803 String newValue = "";
806 String capabilityType = "";
807 String capabilityName = "";
808 ResponseFormat result;
811 testSubject=createTestSubject();
812 result=Deencapsulation.invoke(testSubject, "updateCapabilityPropertyOnContainerComponent", new Object[]{property, newValue, resource, toInstance, capabilityType, capabilityName});
818 public void testCreateOrUpdateInstanceInputValues() throws Exception {
819 ComponentInstanceBusinessLogic testSubject;
820 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
822 String componentId = resource.getUniqueId();
823 String resourceInstanceId = "";
824 List<ComponentInstanceInput> inputs = new ArrayList<>();
825 String userId = user.getUserId();
826 Either<List<ComponentInstanceInput>,ResponseFormat> result;
828 when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.left(resource));
831 testSubject=createTestSubject();
832 result=testSubject.createOrUpdateInstanceInputValues(componentTypeEnum, componentId, resourceInstanceId, inputs, userId);
833 componentTypeEnum =null;
834 result=testSubject.createOrUpdateInstanceInputValues(componentTypeEnum, componentId, resourceInstanceId, inputs, userId);
837 // when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
838 result=testSubject.createOrUpdateInstanceInputValues(componentTypeEnum, componentId, resourceInstanceId, inputs, userId);
844 public void testCreateOrUpdateGroupInstancePropertyValue() throws Exception {
845 ComponentInstanceBusinessLogic testSubject;
846 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
848 String componentId = resource.getUniqueId();
849 String resourceInstanceId = "";
850 String groupInstanceId = "";
851 ComponentInstanceProperty property = new ComponentInstanceProperty();
852 String userId = user.getUserId();
853 Either<ComponentInstanceProperty,ResponseFormat> result;
856 when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.left(resource));
859 testSubject=createTestSubject();
860 result=testSubject.createOrUpdateGroupInstancePropertyValue(componentTypeEnum, componentId, resourceInstanceId, groupInstanceId, property, userId);
861 componentTypeEnum = null;
862 result=testSubject.createOrUpdateGroupInstancePropertyValue(componentTypeEnum, componentId, resourceInstanceId, groupInstanceId, property, userId);
864 // when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
865 result=testSubject.createOrUpdateGroupInstancePropertyValue(componentTypeEnum, componentId, resourceInstanceId, groupInstanceId, property, userId);
870 public void testCreateOrUpdateInputValue() throws Exception {
871 ComponentInstanceBusinessLogic testSubject;
873 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
874 String componentId = resource.getUniqueId();
875 String resourceInstanceId = resource.getUniqueId();
876 ComponentInstanceInput inputProperty = new ComponentInstanceInput();
877 String userId = user.getUserId();
878 Either<ComponentInstanceInput,ResponseFormat> result;
881 Either<Component, StorageOperationStatus> getResourceResult = Either.left(resource);
882 when(toscaOperationFacade.getToscaElement(resource.getUniqueId(), JsonParseFlagEnum.ParseMetadata)).thenReturn(getResourceResult);
885 testSubject=createTestSubject();
886 result=testSubject.createOrUpdateInputValue(componentTypeEnum, componentId, resourceInstanceId, inputProperty, userId);
888 componentTypeEnum = null;
889 result=testSubject.createOrUpdateInputValue(componentTypeEnum, componentId, resourceInstanceId, inputProperty, userId);
891 // when(toscaOperationFacade.getToscaElement(resource.getUniqueId(), JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
892 result=testSubject.createOrUpdateInputValue(componentTypeEnum, componentId, resourceInstanceId, inputProperty, userId);
897 public void testDeletePropertyValue() throws Exception {
898 ComponentInstanceBusinessLogic testSubject;
899 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
901 String serviceId = service.getUniqueId();
902 String resourceInstanceId = "";
903 String propertyValueId = "";
904 String userId = user.getUserId();
905 Either<ComponentInstanceProperty,ResponseFormat> result;
907 when(toscaOperationFacade.getToscaElement(serviceId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.left(service));
910 testSubject=createTestSubject();
911 result=testSubject.deletePropertyValue(componentTypeEnum, serviceId, resourceInstanceId, propertyValueId, userId);
912 componentTypeEnum= null;
913 result=testSubject.deletePropertyValue(componentTypeEnum, serviceId, resourceInstanceId, propertyValueId, userId);
915 // when(toscaOperationFacade.getToscaElement(serviceId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
916 result=testSubject.deletePropertyValue(componentTypeEnum, serviceId, resourceInstanceId, propertyValueId, userId);
921 public void testGetAndValidateOriginComponentOfComponentInstance() throws Exception {
922 ComponentInstanceBusinessLogic testSubject;
923 ComponentTypeEnum containerComponentType = ComponentTypeEnum.RESOURCE;
926 Either<Component,ResponseFormat> result;
928 when(toscaOperationFacade.getToscaFullElement(toInstance.getComponentUid())).thenReturn(Either.left(resource));
931 testSubject=createTestSubject();
932 result=Deencapsulation.invoke(testSubject, "getAndValidateOriginComponentOfComponentInstance", new Object[]{containerComponentType, toInstance});
940 public void testGetComponentParametersViewForForwardingPath() throws Exception {
941 ComponentInstanceBusinessLogic testSubject;
942 ComponentParametersView result;
945 testSubject=createTestSubject();
946 result=Deencapsulation.invoke(testSubject, "getComponentParametersViewForForwardingPath");
951 public void testChangeComponentInstanceVersion() throws Exception {
952 ComponentInstanceBusinessLogic testSubject;
953 String containerComponentParam = "";
954 String containerComponentId = "";
955 String componentInstanceId = "";
956 String userId = user.getUserId();
958 ComponentInstance newComponentInstance =toInstance;
959 Either<ComponentInstance,ResponseFormat> result;
962 testSubject=createTestSubject();
963 result=testSubject.changeComponentInstanceVersion(containerComponentParam, containerComponentId, componentInstanceId, userId, newComponentInstance);
964 newComponentInstance = null;
965 testSubject=createTestSubject();
966 result=testSubject.changeComponentInstanceVersion(containerComponentParam, containerComponentId, componentInstanceId, userId, newComponentInstance);
970 @Ignore("test failing skipping for now")
972 public void testValidateInstanceNameUniquenessUponUpdate() throws Exception {
973 ComponentInstanceBusinessLogic testSubject;
976 String newInstanceName = toInstance.getName();
980 testSubject=createTestSubject();
981 result=Deencapsulation.invoke(testSubject, "validateInstanceNameUniquenessUponUpdate", new Object[]{resource, toInstance, newInstanceName});
986 public void testGetResourceInstanceById() throws Exception {
987 ComponentInstanceBusinessLogic testSubject;
989 String instanceId = "";
990 Either<ComponentInstance,StorageOperationStatus> result;
993 testSubject=createTestSubject();
994 result=Deencapsulation.invoke(testSubject, "getResourceInstanceById", new Object[]{resource, instanceId});
997 @Ignore("test failing skipping for now")
999 public void testBuildComponentInstance() throws Exception {
1000 ComponentInstanceBusinessLogic testSubject;
1002 ComponentInstance origInstanceForUpdate = null;
1003 ComponentInstance result;
1006 testSubject=createTestSubject();
1007 result=Deencapsulation.invoke(testSubject, "buildComponentInstance", new Object[]{toInstance, toInstance});
1015 public void testFindCapabilityOfInstance() throws Exception {
1016 ComponentInstanceBusinessLogic testSubject;String componentId = "";
1017 String instanceId = "";
1018 String capabilityType = "";
1019 String capabilityName = "";
1020 String ownerId = "";
1021 Map<String,List<CapabilityDefinition>> instanceCapabilities = new HashMap<>();
1022 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1025 testSubject=createTestSubject();
1026 result=Deencapsulation.invoke(testSubject, "findCapabilityOfInstance", new Object[]{componentId, instanceId, capabilityType, capabilityName, ownerId, instanceCapabilities});
1031 public void testFetchComponentInstanceCapabilityProperties() throws Exception {
1032 ComponentInstanceBusinessLogic testSubject;String componentId = "";
1033 String instanceId = "";
1034 String capabilityType = "";
1035 String capabilityName = "";
1036 String ownerId = "";
1037 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1040 testSubject=createTestSubject();
1041 result=Deencapsulation.invoke(testSubject, "fetchComponentInstanceCapabilityProperties", new Object[]{componentId, instanceId, capabilityType, capabilityName, ownerId});
1046 public void testUpdateCapabilityPropertyOnContainerComponent_1() throws Exception {
1047 ComponentInstanceBusinessLogic testSubject;
1048 ComponentInstanceProperty property = new ComponentInstanceProperty();
1049 String newValue = "";
1052 String capabilityType = "";
1053 String capabilityName = "";
1054 String ownerId = "";
1055 ResponseFormat result;
1058 testSubject=createTestSubject();
1059 result=Deencapsulation.invoke(testSubject, "updateCapabilityPropertyOnContainerComponent", new Object[]{property, newValue, resource, toInstance, capabilityType, capabilityName, ownerId});
1064 public void testUpdateInstanceCapabilityProperties() throws Exception {
1065 ComponentInstanceBusinessLogic testSubject;
1066 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
1068 String containerComponentId = resource.getUniqueId();
1069 String componentInstanceUniqueId = "";
1070 String capabilityType = "";
1071 String capabilityName = "";
1072 String ownerId = "";
1073 List<ComponentInstanceProperty> properties = new ArrayList<>();
1074 String userId = user.getUserId();
1075 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1078 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.left(resource));
1083 testSubject=createTestSubject();
1084 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, ownerId, properties, userId);
1085 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND));
1086 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, ownerId, properties, userId);
1087 componentTypeEnum = null;
1088 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, ownerId, properties, userId);
1095 public void testUpdateInstanceCapabilityProperties_1() throws Exception {
1096 ComponentInstanceBusinessLogic testSubject;
1097 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
1099 String containerComponentId = resource.getUniqueId();
1100 String componentInstanceUniqueId = "";
1101 String capabilityType = "";
1102 String capabilityName = "";
1103 List<ComponentInstanceProperty> properties = new ArrayList<>();
1104 String userId = user.getUserId();
1105 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1108 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1110 testSubject=createTestSubject();
1111 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, properties, userId);
1112 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.left(resource));
1113 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, properties, userId);
1117 public void testCopyComponentInstanceWrongUserId() {
1119 Either<Map<String, ComponentInstance>, ResponseFormat> result;
1120 ComponentInstance inputComponentInstance = createComponetInstanceFromComponent(resource);
1121 String containerComponentId = service.getUniqueId();
1122 String componentInstanceId = resource.getUniqueId();
1123 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1124 service.setLastUpdaterUserId("wrong user id");
1126 Either<Component, StorageOperationStatus> leftServiceOp = Either.left(service);
1127 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(leftServiceOp);
1128 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1129 .thenReturn(leftServiceOp);
1130 when(titanDao.rollback()).thenReturn(TitanOperationStatus.OK);
1131 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1132 .thenReturn(StorageOperationStatus.OK);
1133 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1134 .thenReturn(StorageOperationStatus.OK);
1136 result = componentInstanceBusinessLogic
1137 .copyComponentInstance(inputComponentInstance, containerComponentId, componentInstanceId, USER_ID);
1139 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1141 assertThat(result.isRight());
1145 public void testCopyComponentInstanceComponentWrongState() {
1146 Either<Map<String, ComponentInstance>, ResponseFormat> result;
1147 ComponentInstance inputComponentInstance = createComponetInstanceFromComponent(resource);
1148 String containerComponentId = service.getUniqueId();
1149 String componentInstanceId = resource.getUniqueId();
1150 String oldServiceLastUpdatedUserId = service.getLastUpdaterUserId();
1151 service.setLastUpdaterUserId(USER_ID);
1153 Either<Component, StorageOperationStatus> leftServiceOp = Either.left(service);
1154 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(leftServiceOp);
1155 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1156 .thenReturn(leftServiceOp);
1157 when(titanDao.rollback()).thenReturn(TitanOperationStatus.OK);
1158 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1159 .thenReturn(StorageOperationStatus.OK);
1160 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1161 .thenReturn(StorageOperationStatus.OK);
1162 Either<Component, StorageOperationStatus> getComponentRes = Either.left(resource);
1163 when(toscaOperationFacade.getToscaFullElement(inputComponentInstance.getComponentUid()))
1164 .thenReturn(getComponentRes);
1166 result = componentInstanceBusinessLogic
1167 .copyComponentInstance(inputComponentInstance, containerComponentId, componentInstanceId, USER_ID);
1169 service.setLastUpdaterUserId(oldServiceLastUpdatedUserId);
1171 assertThat(result.isRight());
1175 public void testCopyComponentInstance() {
1176 Either<Map<String, ComponentInstance>, ResponseFormat> result;
1177 ComponentInstance inputComponentInstance = createComponetInstanceFromComponent(resource);
1178 String containerComponentId = service.getUniqueId();
1179 String componentInstanceId = resource.getUniqueId();
1180 String oldServiceLastUpdatedUserId = service.getLastUpdaterUserId();
1181 service.setLastUpdaterUserId(USER_ID);
1182 LifecycleStateEnum oldResourceLifeCycle = resource.getLifecycleState();
1183 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
1185 Either<Component, StorageOperationStatus> leftServiceOp = Either.left(service);
1186 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(leftServiceOp);
1187 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1188 .thenReturn(leftServiceOp);
1189 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1190 .thenReturn(StorageOperationStatus.OK);
1191 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1192 .thenReturn(StorageOperationStatus.OK);
1193 Either<Component, StorageOperationStatus> getComponentRes = Either.left(resource);
1194 when(toscaOperationFacade.getToscaFullElement(inputComponentInstance.getComponentUid()))
1195 .thenReturn(getComponentRes);
1196 ImmutablePair<Component, String> pair = new ImmutablePair<>(resource, TO_INSTANCE_ID);
1197 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.left(pair);
1198 when(toscaOperationFacade
1199 .addComponentInstanceToTopologyTemplate(eq(service), eq(resource), eq(inputComponentInstance), eq(false),
1200 isNull(User.class))).thenReturn(result2);
1201 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getResourceDeploymentArtifacts = Either
1202 .left(new HashMap<String, ArtifactDefinition>());
1203 when(artifactBusinessLogic.getArtifacts(eq(inputComponentInstance.getComponentUid()), eq(NodeTypeEnum.Resource),
1204 eq(ArtifactGroupTypeEnum.DEPLOYMENT), isNull(String.class))).thenReturn(getResourceDeploymentArtifacts);
1205 StorageOperationStatus artStatus = StorageOperationStatus.OK;
1206 when(toscaOperationFacade
1207 .addInformationalArtifactsToInstance(eq(resource.getUniqueId()), eq(inputComponentInstance),
1208 isNull(Map.class))).thenReturn(artStatus);
1210 result = componentInstanceBusinessLogic
1211 .copyComponentInstance(inputComponentInstance, containerComponentId, componentInstanceId, USER_ID);
1213 service.setLastUpdaterUserId(oldServiceLastUpdatedUserId);
1214 resource.setLifecycleState(oldResourceLifeCycle);
1216 assertThat(result.isLeft());
1220 public void testCreateOrUpdateAttributeValueForCopyPaste() {
1221 ComponentInstance serviceComponentInstance = createComponetInstanceFromComponent(service);
1222 ComponentInstanceProperty attribute = new ComponentInstanceProperty();
1223 attribute.setType("string");
1224 attribute.setUniqueId("testCreateOrUpdateAttributeValueForCopyPaste");
1225 SchemaDefinition def = Mockito.mock(SchemaDefinition.class);
1226 attribute.setSchema(def);
1227 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1228 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1229 service.setLastUpdaterUserId(USER_ID);
1230 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1232 Map<String, List<ComponentInstanceProperty>> instAttrsMap = new HashMap<String, List<ComponentInstanceProperty>>();
1233 List<ComponentInstanceProperty> instAttrsList = new ArrayList<ComponentInstanceProperty>();
1234 ComponentInstanceProperty prop = new ComponentInstanceProperty();
1235 prop.setUniqueId(attribute.getUniqueId());
1236 instAttrsList.add(prop);
1237 instAttrsMap.put(toInstance.getUniqueId(), instAttrsList);
1238 service.setComponentInstancesAttributes(instAttrsMap);
1240 Either<Component, StorageOperationStatus> serviceEitherLeft = Either.left(service);
1241 when(toscaOperationFacade.getToscaElement(serviceComponentInstance.getUniqueId(), JsonParseFlagEnum.ParseAll)).thenReturn(serviceEitherLeft);
1242 when(toscaOperationFacade.updateComponentInstanceAttribute(service, toInstance.getUniqueId(), attribute)).thenReturn(StorageOperationStatus.OK);
1243 when(toscaOperationFacade.updateComponentInstanceMetadataOfTopologyTemplate(service)).thenReturn(serviceEitherLeft);
1245 Either<ComponentInstanceProperty, ResponseFormat> result = Deencapsulation.invoke(componentInstanceBusinessLogic, "createOrUpdateAttributeValueForCopyPaste", ComponentTypeEnum.SERVICE,
1246 serviceComponentInstance.getUniqueId(),
1247 toInstance.getUniqueId(),
1251 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1252 service.setLifecycleState(oldLifeCycleState);
1254 assertTrue(result.isLeft());
1255 ComponentInstanceProperty resultProp = result.left().value();
1256 assertEquals(resultProp.getPath().size(), 1);
1257 assertEquals(resultProp.getPath().get(0), toInstance.getUniqueId());
1261 public void testUpdateComponentInstanceProperty() {
1263 String containerComponentId = service.getUniqueId();
1264 String componentInstanceId = "dummy_id";
1265 ComponentInstanceProperty property = Mockito.mock(ComponentInstanceProperty.class);
1267 Either<Component, StorageOperationStatus> getComponent = Either.left(service);
1268 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(getComponent);
1269 StorageOperationStatus status = StorageOperationStatus.OK;
1270 when(toscaOperationFacade.updateComponentInstanceProperty(service, componentInstanceId, property))
1271 .thenReturn(status);
1272 Either<Component, StorageOperationStatus> updateContainerRes = Either.left(service);
1273 when(toscaOperationFacade.updateComponentInstanceMetadataOfTopologyTemplate(service))
1274 .thenReturn(updateContainerRes);
1276 Either<String, ResponseFormat> result = Deencapsulation
1277 .invoke(componentInstanceBusinessLogic, "updateComponentInstanceProperty", containerComponentId,
1278 componentInstanceId, property);
1280 assertTrue(result.isLeft());
1284 public void testGetInputListDefaultValue() {
1285 Component component = service;
1286 String inputId = "dummy_id";
1287 String defaultValue = "dummy_default_value";
1288 List<InputDefinition> newInputs = new ArrayList<InputDefinition>();
1289 InputDefinition in = new InputDefinition();
1290 in.setUniqueId(inputId);
1291 in.setDefaultValue(defaultValue);
1293 List<InputDefinition> oldInputs = service.getInputs();
1294 service.setInputs(newInputs);
1296 Either<String, ResponseFormat> result = Deencapsulation
1297 .invoke(componentInstanceBusinessLogic, "getInputListDefaultValue", component, inputId);
1299 service.setInputs(oldInputs);
1301 assertEquals(result.left().value(), defaultValue);
1305 public void testBatchDeleteComponentInstanceFailureWrongType() {
1306 Map<String, List<String>> result;
1307 List<String> componentInstanceIdList = new ArrayList<>();
1308 String containerComponentParam = "WRONG_TYPE";
1309 String containerComponentId = "containerComponentId";
1310 String componentInstanceId = "componentInstanceId";
1311 componentInstanceIdList.add(componentInstanceId);
1312 String userId = USER_ID;
1313 Map<String, List<String>> deleteErrorMap = new HashMap<>();
1314 List<String> deleteErrorIds = new ArrayList<>();
1315 deleteErrorIds.add(componentInstanceId);
1316 deleteErrorMap.put("deleteFailedIds", deleteErrorIds);
1318 result = componentInstanceBusinessLogic
1319 .batchDeleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceIdList,
1322 assertEquals(deleteErrorMap, result);
1326 public void testBatchDeleteComponentInstanceFailureCompIds() {
1327 Map<String, List<String>> result;
1328 String containerComponentParam = ComponentTypeEnum.SERVICE_PARAM_NAME;
1329 String containerComponentId = "containerComponentId";
1330 String componentInstanceId = "componentInstanceId";
1331 List<String> componentInstanceIdList = new ArrayList<>();
1332 componentInstanceIdList.add(componentInstanceId);
1333 String userId = USER_ID;
1334 Map<String, List<String>> deleteErrorMap = new HashMap<>();
1335 List<String> deleteErrorIds = new ArrayList<>();
1336 deleteErrorIds.add(componentInstanceId);
1337 deleteErrorMap.put("deleteFailedIds", deleteErrorIds);
1339 Either<Component, StorageOperationStatus> err = Either.right(StorageOperationStatus.GENERAL_ERROR);
1340 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1343 result = componentInstanceBusinessLogic
1344 .batchDeleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceIdList,
1347 assertEquals(deleteErrorMap, result);
1351 public void testBatchDeleteComponentInstanceSuccess() {
1352 Map<String, List<String>> result;
1353 String containerComponentParam = ComponentTypeEnum.SERVICE_PARAM_NAME;
1354 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1355 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1356 service.setLastUpdaterUserId(USER_ID);
1357 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1358 String containerComponentId = service.getUniqueId();
1359 String componentInstanceId = TO_INSTANCE_ID;
1360 String userId = USER_ID;
1361 List<String> componentInstanceIdList = new ArrayList<>();
1362 componentInstanceIdList.add(componentInstanceId);
1363 Map<String, List<String>> deleteErrorMap = new HashMap<>();
1364 List<String> deleteErrorIds = new ArrayList<>();
1365 deleteErrorMap.put("deleteFailedIds", deleteErrorIds);
1367 Either<Component, StorageOperationStatus> cont = Either.left(service);
1368 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1369 .thenReturn(StorageOperationStatus.OK);
1370 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1371 .thenReturn(StorageOperationStatus.OK);
1372 ImmutablePair<Component, String> pair = new ImmutablePair<>(resource, TO_INSTANCE_ID);
1373 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.left(pair);
1374 when(toscaOperationFacade.deleteComponentInstanceFromTopologyTemplate(service, componentInstanceId))
1375 .thenReturn(result2);
1376 when(toscaOperationFacade.getToscaElement(eq(service.getUniqueId()), any(ComponentParametersView.class)))
1378 when(titanDao.commit()).thenReturn(TitanOperationStatus.OK);
1380 result = componentInstanceBusinessLogic
1381 .batchDeleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceIdList, userId);
1383 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1384 service.setLifecycleState(oldLifeCycleState);
1385 assertEquals(deleteErrorMap,result);
1389 public void testDissociateRIFromRIFailDissociate() {
1391 List<RequirementCapabilityRelDef> result;
1392 RequirementCapabilityRelDef ref = new RequirementCapabilityRelDef();
1393 ref.setFromNode(FROM_INSTANCE_ID);
1394 ref.setToNode(TO_INSTANCE_ID);
1395 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1396 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1397 RelationshipInfo ri = new RelationshipInfo();
1398 ri.setRequirement(REQUIREMENT_NAME);
1399 relationship.setRelation(ri);
1400 relationships.add(relationship);
1401 ref.setRelationships(relationships);
1402 List<RequirementCapabilityRelDef> requirementDefList = new ArrayList<>();
1403 requirementDefList.add(ref);
1404 ComponentTypeEnum componentTypeEnum = service.getComponentType();
1405 String componentId = service.getUniqueId();
1406 String userId = USER_ID;
1407 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1408 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1409 service.setLastUpdaterUserId(USER_ID);
1410 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1412 Either<Component, StorageOperationStatus> cont = Either.left(service);
1413 when(toscaOperationFacade.getToscaElement(eq(service.getUniqueId()), any(ComponentParametersView.class)))
1415 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1416 .thenReturn(StorageOperationStatus.OK);
1417 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1418 .thenReturn(StorageOperationStatus.OK);
1419 Either<RequirementCapabilityRelDef, StorageOperationStatus> resultEither;
1420 resultEither = Either.right(StorageOperationStatus.OK);
1421 when(toscaOperationFacade.dissociateResourceInstances(componentId, ref)).thenReturn(resultEither);
1423 result = componentInstanceBusinessLogic
1424 .batchDissociateRIFromRI(componentId, userId, requirementDefList, componentTypeEnum);
1426 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1427 service.setLifecycleState(oldLifeCycleState);
1429 assertEquals(new ArrayList<>(), result);
1433 public void testDissociateRIFromRISuccess() {
1435 List<RequirementCapabilityRelDef> result;
1436 RequirementCapabilityRelDef ref = new RequirementCapabilityRelDef();
1437 List<RequirementCapabilityRelDef> requirementDefList = new ArrayList<>();
1438 requirementDefList.add(ref);
1439 ComponentTypeEnum componentTypeEnum = service.getComponentType();
1440 String componentId = service.getUniqueId();
1441 String userId = USER_ID;
1442 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1443 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1444 service.setLastUpdaterUserId(USER_ID);
1445 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1447 Either<Component, StorageOperationStatus> cont = Either.left(service);
1448 when(toscaOperationFacade.getToscaElement(eq(service.getUniqueId()), any(ComponentParametersView.class)))
1450 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1451 .thenReturn(StorageOperationStatus.OK);
1452 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1453 .thenReturn(StorageOperationStatus.OK);
1454 Either<RequirementCapabilityRelDef, StorageOperationStatus> resultEither;
1455 resultEither = Either.left(ref);
1456 when(toscaOperationFacade.dissociateResourceInstances(componentId, ref)).thenReturn(resultEither);
1458 result = componentInstanceBusinessLogic
1459 .batchDissociateRIFromRI(componentId, userId, requirementDefList, componentTypeEnum);
1461 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1462 service.setLifecycleState(oldLifeCycleState);
1464 assertEquals(requirementDefList, result);
1467 private ComponentInstance createComponetInstanceFromComponent(Component component) {
1468 ComponentInstance componentInst = new ComponentInstance();
1469 componentInst.setUniqueId(component.getUniqueId());
1470 componentInst.setComponentUid(component.getUniqueId() + "_test");
1471 componentInst.setPosX("10");
1472 componentInst.setPosY("10");
1473 componentInst.setCapabilities(component.getCapabilities());
1474 componentInst.setRequirements(component.getRequirements());
1475 componentInst.setArtifacts(component.getArtifacts());
1476 componentInst.setDeploymentArtifacts(component.getDeploymentArtifacts());
1477 return componentInst;