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.assertSame;
66 import static org.junit.Assert.assertEquals;
67 import static org.mockito.ArgumentMatchers.any;
68 import static org.mockito.ArgumentMatchers.anySet;
69 import static org.mockito.ArgumentMatchers.eq;
70 import static org.mockito.Mockito.when;
72 import static org.mockito.ArgumentMatchers.*;
75 * The test suite designed for test functionality of ComponentInstanceBusinessLogic class
78 @RunWith(MockitoJUnitRunner.class)
79 public class ComponentInstanceBusinessLogicTest {
81 private final static String USER_ID = "jh0003";
82 private final static String COMPONENT_ID = "componentId";
83 private final static String TO_INSTANCE_ID = "toInstanceId";
84 private final static String FROM_INSTANCE_ID = "fromInstanceId";
85 private final static String RELATION_ID = "relationId";
86 private final static String CAPABILITY_OWNER_ID = "capabilityOwnerId";
87 private final static String CAPABILITY_UID = "capabilityUid";
88 private final static String CAPABILITY_NAME = "capabilityName";
89 private final static String REQUIREMENT_OWNER_ID = "requirementOwnerId";
90 private final static String REQUIREMENT_UID = "requirementUid";
91 private final static String REQUIREMENT_NAME = "requirementName";
92 private final static String RELATIONSHIP_TYPE = "relationshipType";
95 private static ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
97 private ComponentsUtils componentsUtils;
99 private ServletUtils servletUtils;
101 private ResponseFormat responseFormat;
103 private ToscaOperationFacade toscaOperationFacade;
105 private UserBusinessLogic userAdmin;
107 private ForwardingPathOperation forwardingPathOperation;
111 private UserValidations userValidations;
113 private TitanDao titanDao;
115 private ArtifactsBusinessLogic artifactBusinessLogic;
117 private GraphLockOperation graphLockOperation;
119 private Component service;
120 private Component resource;
121 private ComponentInstance toInstance;
122 private ComponentInstance fromInstance;
123 private CapabilityDataDefinition capability;
124 private RequirementDataDefinition requirement;
125 private RequirementCapabilityRelDef relation;
135 public void testGetRelationByIdSuccess(){
136 getServiceRelationByIdSuccess(service);
137 getServiceRelationByIdSuccess(resource);
141 public void testGetRelationByIdUserValidationFailure(){
142 getServiceRelationByIdUserValidationFailure(service);
143 getServiceRelationByIdUserValidationFailure(resource);
147 public void testGetRelationByIdComponentNotFoundFailure(){
148 getRelationByIdComponentNotFoundFailure(service);
149 getRelationByIdComponentNotFoundFailure(resource);
153 public void testForwardingPathOnVersionChange(){
154 getforwardingPathOnVersionChange();
157 private void getforwardingPathOnVersionChange(){
158 String containerComponentParam="services";
159 String containerComponentID="121-cont";
160 String componentInstanceID="121-cont-1-comp";
161 Service component=new Service();
162 Map<String, ForwardingPathDataDefinition> forwardingPaths = generateForwardingPath(componentInstanceID);
164 //Add existing componentInstance to component
165 List<ComponentInstance> componentInstanceList=new ArrayList<>();
166 ComponentInstance oldComponentInstance=new ComponentInstance();
167 oldComponentInstance.setName("OLD_COMP_INSTANCE");
168 oldComponentInstance.setUniqueId(componentInstanceID);
169 oldComponentInstance.setName(componentInstanceID);
170 oldComponentInstance.setToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_UID,"1-comp");
171 componentInstanceList.add(oldComponentInstance);
172 component.setComponentInstances(componentInstanceList);
173 component.setForwardingPaths(forwardingPaths);
175 List<ComponentInstance> componentInstanceListNew=new ArrayList<>();
176 ComponentInstance newComponentInstance=new ComponentInstance();
177 String new_Comp_UID="2-comp";
178 newComponentInstance.setToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_UID,new_Comp_UID);
179 newComponentInstance.setUniqueId(new_Comp_UID);
180 componentInstanceListNew.add(newComponentInstance);
181 Component component2=new Service();
182 component2.setComponentInstances(componentInstanceListNew);
184 //Mock for getting component
185 when(toscaOperationFacade.getToscaElement(eq(containerComponentID),any(ComponentParametersView.class))).thenReturn(Either.left(component));
186 when(toscaOperationFacade.validateComponentExists(any(String.class))).thenReturn(Either.left(Boolean.TRUE));
187 when(toscaOperationFacade.getToscaFullElement(eq(new_Comp_UID))).thenReturn(Either.left(component2));
189 Either<Set<String>, ResponseFormat> resultOp = componentInstanceBusinessLogic.forwardingPathOnVersionChange
190 (containerComponentParam,containerComponentID,componentInstanceID,newComponentInstance);
191 assertEquals(1,resultOp.left().value().size());
192 assertEquals("FP-ID-1",resultOp.left().value().iterator().next());
198 public void testDeleteForwardingPathsWhenComponentinstanceDeleted(){
200 ComponentTypeEnum containerComponentType = ComponentTypeEnum.findByParamName("services");
201 String containerComponentID = "Service-comp";
202 String componentInstanceID = "NodeA1";
203 Service component = new Service();
204 component.setComponentInstances(Arrays.asList(createComponentIstance("NodeA2"),createComponentIstance("NodeB2"),
205 createComponentIstance(componentInstanceID)));
207 component.addForwardingPath(createPath("path1", componentInstanceID, "NodeB1", "1"));
208 component.addForwardingPath(createPath("Path2", "NodeA2","NodeB2", "2"));
209 when(toscaOperationFacade.getToscaElement(eq(containerComponentID),any(ComponentParametersView.class))).thenReturn(Either.left(component));
210 when(toscaOperationFacade.getToscaElement(eq(containerComponentID))).thenReturn(Either.left(component));
211 when(forwardingPathOperation.deleteForwardingPath(any(Service.class), anySet())).thenReturn(Either.left(new HashSet<>()));
212 final ComponentInstance ci = new ComponentInstance();
213 ci.setName(componentInstanceID);
214 Either<ComponentInstance, ResponseFormat> responseFormatEither = componentInstanceBusinessLogic.deleteForwardingPathsRelatedTobeDeletedComponentInstance(
215 containerComponentID, containerComponentType, Either.left(ci));
216 assertThat(responseFormatEither.isLeft()).isEqualTo(true);
220 private ComponentInstance createComponentIstance(String path1) {
221 ComponentInstance componentInstance = new ComponentInstance();
222 componentInstance.setName(path1);
223 return componentInstance;
226 private ForwardingPathDataDefinition createPath(String pathName, String fromNode, String toNode , String uniqueId){
227 ForwardingPathDataDefinition forwardingPath = new ForwardingPathDataDefinition(pathName);
228 forwardingPath.setProtocol("protocol");
229 forwardingPath.setDestinationPortNumber("port");
230 forwardingPath.setUniqueId(uniqueId);
231 ListDataDefinition<ForwardingPathElementDataDefinition> forwardingPathElementListDataDefinition = new ListDataDefinition<>();
232 forwardingPathElementListDataDefinition.add(new ForwardingPathElementDataDefinition(fromNode, toNode,
233 "nodeAcpType", "nodeBcpType", "nodeDcpName", "nodeBcpName"));
234 forwardingPath.setPathElements(forwardingPathElementListDataDefinition);
236 return forwardingPath;
241 private Map<String, ForwardingPathDataDefinition> generateForwardingPath(String componentInstanceID) {
242 ForwardingPathDataDefinition forwardingPath = new ForwardingPathDataDefinition("fpName");
243 String protocol = "protocol";
244 forwardingPath.setProtocol(protocol);
245 forwardingPath.setDestinationPortNumber("DestinationPortNumber");
246 forwardingPath.setUniqueId("FP-ID-1");
247 ListDataDefinition<ForwardingPathElementDataDefinition> forwardingPathElementListDataDefinition =
248 new ListDataDefinition<>();
249 forwardingPathElementListDataDefinition.add(
250 new ForwardingPathElementDataDefinition(componentInstanceID, "nodeB", "nodeA_FORWARDER_CAPABILITY",
251 "nodeBcpType" , "nodeDcpName",
253 forwardingPath.setPathElements(forwardingPathElementListDataDefinition);
254 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
255 forwardingPaths.put("1122", forwardingPath);
256 return forwardingPaths;
259 @SuppressWarnings("unchecked")
260 private void getServiceRelationByIdSuccess(Component component){
261 Either<Component, StorageOperationStatus> getComponentRes = Either.left(component);
262 when(toscaOperationFacade.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(getComponentRes);
263 Either<RequirementCapabilityRelDef, ResponseFormat> response = componentInstanceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
264 assertTrue(response.isLeft());
267 private void getServiceRelationByIdUserValidationFailure(Component component){
268 when(userValidations.validateUserExists(eq(USER_ID), eq("get relation by Id"), eq(false))).thenThrow(new ComponentException(ActionStatus.USER_NOT_FOUND));
270 componentInstanceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
271 } catch(ComponentException e){
272 assertSame(e.getActionStatus(), ActionStatus.USER_NOT_FOUND);
276 private void getRelationByIdComponentNotFoundFailure(Component component){
277 Either<User, ActionStatus> eitherCreator = Either.left(user);
278 Either<Component, StorageOperationStatus> getComponentRes = Either.right(StorageOperationStatus.NOT_FOUND);
279 when(toscaOperationFacade.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(getComponentRes);
281 Either<RequirementCapabilityRelDef, ResponseFormat> response = componentInstanceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
282 assertTrue(response.isRight());
285 private void stubMethods() {
286 when(userValidations.validateUserExists(eq(USER_ID), eq("get relation by Id"), eq(false))).thenReturn(user);
289 private void createComponents() {
296 private void createResource() {
297 resource = new Resource();
298 resource.setUniqueId(COMPONENT_ID);
299 resource.setComponentInstancesRelations(Lists.newArrayList(relation));
300 resource.setComponentInstances(Lists.newArrayList(toInstance,fromInstance));
301 resource.setCapabilities(toInstance.getCapabilities());
302 resource.setRequirements(fromInstance.getRequirements());
303 resource.setComponentType(ComponentTypeEnum.RESOURCE);
304 resource.setState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
308 private void createService() {
309 service = new Service();
310 service.setUniqueId(COMPONENT_ID);
311 service.setComponentInstancesRelations(Lists.newArrayList(relation));
312 service.setComponentInstances(Lists.newArrayList(toInstance,fromInstance));
313 service.setCapabilities(toInstance.getCapabilities());
314 service.setRequirements(fromInstance.getRequirements());
315 service.setComponentType(ComponentTypeEnum.SERVICE);
316 service.setState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
320 private void createInstances() {
321 toInstance = new ComponentInstance();
322 toInstance.setUniqueId(TO_INSTANCE_ID);
324 fromInstance = new ComponentInstance();
325 fromInstance.setUniqueId(FROM_INSTANCE_ID);
327 capability = new CapabilityDataDefinition();
328 capability.setOwnerId(CAPABILITY_OWNER_ID);
329 capability.setUniqueId(CAPABILITY_UID);
330 capability.setName(CAPABILITY_NAME);
332 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
333 capabilities.put(capability.getName(), Lists.newArrayList(new CapabilityDefinition(capability)));
335 requirement = new RequirementDataDefinition();
336 requirement.setOwnerId(REQUIREMENT_OWNER_ID);
337 requirement.setUniqueId(REQUIREMENT_UID);
338 requirement.setName(REQUIREMENT_NAME);
339 requirement.setRelationship(RELATIONSHIP_TYPE);
342 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
343 requirements.put(requirement.getCapability(), Lists.newArrayList(new RequirementDefinition(requirement)));
345 toInstance.setCapabilities(capabilities);
346 fromInstance.setRequirements(requirements);
350 private void createRelation() {
352 relation = new RequirementCapabilityRelDef();
353 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
354 RelationshipInfo relationInfo = new RelationshipInfo();
355 relationInfo.setId(RELATION_ID);
356 relationship.setRelation(relationInfo);
358 relation.setRelationships(Lists.newArrayList(relationship));
359 relation.setToNode(TO_INSTANCE_ID);
360 relation.setFromNode(FROM_INSTANCE_ID);
362 relationInfo.setCapabilityOwnerId(CAPABILITY_OWNER_ID);
363 relationInfo.setCapabilityUid(CAPABILITY_UID);
364 relationInfo.setCapability(CAPABILITY_NAME);
365 relationInfo.setRequirementOwnerId(REQUIREMENT_OWNER_ID);
366 relationInfo.setRequirementUid(REQUIREMENT_UID);
367 relationInfo.setRequirement(REQUIREMENT_NAME);
368 RelationshipImpl relationshipImpl = new RelationshipImpl();
369 relationshipImpl.setType(RELATIONSHIP_TYPE);
370 relationInfo.setRelationships(relationshipImpl);
373 private ComponentInstanceBusinessLogic createTestSubject() {
374 return componentInstanceBusinessLogic;
382 public void testChangeServiceProxyVersion(){
383 ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
385 Either<ComponentInstance, ResponseFormat> result;
388 componentInstanceBusinessLogic = createTestSubject();
389 result = componentInstanceBusinessLogic.changeServiceProxyVersion();
399 public void testCreateServiceProxy() {
400 ComponentInstanceBusinessLogic testSubject;
401 Either<ComponentInstance, ResponseFormat> result;
404 testSubject = createTestSubject();
405 result = testSubject.createServiceProxy();
413 public void testDeleteForwardingPathsRelatedTobeDeletedComponentInstance() {
414 ComponentInstanceBusinessLogic testSubject;
415 String containerComponentId = "";
416 String componentInstanceId = "";
417 ComponentTypeEnum containerComponentType = ComponentTypeEnum.RESOURCE;
418 Either<ComponentInstance, ResponseFormat> resultOp = null;
419 Either<ComponentInstance, ResponseFormat> result;
422 testSubject = createTestSubject();
423 result = testSubject.deleteForwardingPathsRelatedTobeDeletedComponentInstance(containerComponentId,
424 containerComponentType, resultOp);
429 public void testDeleteServiceProxy() {
430 ComponentInstanceBusinessLogic testSubject;
432 Either<ComponentInstance, ResponseFormat> result;
435 testSubject = createTestSubject();
436 result = testSubject.deleteServiceProxy();
445 public void testGetComponentInstanceInputsByInputId() {
446 ComponentInstanceBusinessLogic testSubject;
447 Component component = new Service();
449 List<ComponentInstanceInput> result;
452 testSubject = createTestSubject();
453 result = testSubject.getComponentInstanceInputsByInputId(component, inputId);
459 public void testGetComponentInstancePropertiesByInputId() {
460 ComponentInstanceBusinessLogic testSubject;
461 Component component = new Service();
463 List<ComponentInstanceProperty> result;
466 testSubject = createTestSubject();
467 result = testSubject.getComponentInstancePropertiesByInputId(component, inputId);
472 public void testGetRelationById() {
473 ComponentInstanceBusinessLogic testSubject;
474 String componentId = "";
475 String relationId = "";
476 String userId = user.getUserId();
477 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE_INSTANCE;
478 Either<RequirementCapabilityRelDef, ResponseFormat> result;
481 testSubject = createTestSubject();
482 result = testSubject.getRelationById(componentId, relationId, userId, componentTypeEnum);
490 public void testCreateComponentInstance_1() {
491 ComponentInstanceBusinessLogic testSubject;String containerComponentParam = "";
492 String containerComponentId = "";
493 String userId = user.getUserId();
494 ComponentInstance resourceInstance = null;
495 boolean inTransaction = false;
496 boolean needLock = false;
497 Either<ComponentInstance,ResponseFormat> result;
500 testSubject=createTestSubject();result=testSubject.createComponentInstance(containerComponentParam, containerComponentId, userId, resourceInstance, inTransaction, needLock);
508 public void testCreateAndAssociateRIToRI() {
509 ComponentInstanceBusinessLogic testSubject;
511 String containerComponentParam = "";
512 String containerComponentId = "";
513 String userId = user.getUserId();
514 CreateAndAssotiateInfo createAndAssotiateInfo = new CreateAndAssotiateInfo(null, null);
515 Either<CreateAndAssotiateInfo,ResponseFormat> result;
518 testSubject=createTestSubject();
519 result=testSubject.createAndAssociateRIToRI(containerComponentParam, containerComponentId, userId, createAndAssotiateInfo);
523 public void testGetOriginComponentFromComponentInstance_1() {
524 ComponentInstanceBusinessLogic testSubject;
526 String componentInstanceName = "";
527 String origComponetId = resource.getUniqueId();
528 Either<Component, StorageOperationStatus> oldResourceRes = Either.left(resource);
529 when(toscaOperationFacade.getToscaFullElement(resource.getUniqueId())).thenReturn(oldResourceRes);
530 Either<Component,ResponseFormat> result;
533 testSubject=createTestSubject();
534 result=Deencapsulation.invoke(testSubject, "getOriginComponentFromComponentInstance", new Object[]{componentInstanceName, origComponetId});
539 public void testCreateComponentInstanceOnGraph() {
540 ComponentInstanceBusinessLogic testSubject;
543 Either<ComponentInstance,ResponseFormat> result;
545 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND);
546 when(toscaOperationFacade.addComponentInstanceToTopologyTemplate(resource, resource,toInstance, false, user)).thenReturn(result2);
549 testSubject=createTestSubject();
550 result=Deencapsulation.invoke(testSubject, "createComponentInstanceOnGraph", new Object[]{resource, resource, toInstance, user});
553 @Ignore("test failing skipping for now")
555 public void testCreateComponentInstanceOnGraph2() {
556 ComponentInstanceBusinessLogic testSubject;
558 resource.setName("name");
560 Either<ComponentInstance,ResponseFormat> result;
561 ImmutablePair<Component, String> pair = new ImmutablePair<>(resource,"");
566 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.left(pair);
567 when(toscaOperationFacade.addComponentInstanceToTopologyTemplate(resource, resource,toInstance, false, user)).thenReturn(result2);
570 testSubject=createTestSubject();
571 result=Deencapsulation.invoke(testSubject, "createComponentInstanceOnGraph", new Object[]{resource, resource, toInstance, user});
575 public void testUpdateComponentInstanceMetadata() {
576 ComponentInstanceBusinessLogic testSubject;
577 String containerComponentParam = "";
578 String containerComponentId = "";
579 String componentInstanceId = "";
580 String userId = user.getUserId();
582 Either<ComponentInstance,ResponseFormat> result;
585 testSubject=createTestSubject();
586 result=testSubject.updateComponentInstanceMetadata(containerComponentParam, containerComponentId, componentInstanceId, userId, toInstance);
591 public void testUpdateComponentInstanceMetadata_1() {
592 ComponentInstanceBusinessLogic testSubject;
593 String containerComponentParam = "";
594 String containerComponentId = "";
595 String componentInstanceId = "";
596 String userId = user.getUserId();
598 boolean inTransaction = false;
599 boolean needLock = false;
600 boolean createNewTransaction = false;
601 Either<ComponentInstance,ResponseFormat> result;
604 testSubject=createTestSubject();
605 result=testSubject.updateComponentInstanceMetadata(containerComponentParam, containerComponentId, componentInstanceId, userId, toInstance, inTransaction, needLock, createNewTransaction);
613 public void testValidateParent() {
614 ComponentInstanceBusinessLogic testSubject;
616 String nodeTemplateId = "";
620 testSubject=createTestSubject();
621 result=Deencapsulation.invoke(testSubject, "validateParent", new Object[]{resource, nodeTemplateId});
626 public void testGetComponentType() {
627 ComponentInstanceBusinessLogic testSubject;
628 ComponentTypeEnum result;
631 testSubject=createTestSubject();
632 result=Deencapsulation.invoke(testSubject, "getComponentType", new Object[]{ComponentTypeEnum.class});
638 public void testGetNewGroupName() {
639 ComponentInstanceBusinessLogic testSubject;String oldPrefix = "";
640 String newNormailzedPrefix = "";
641 String qualifiedGroupInstanceName = "";
645 testSubject=createTestSubject();
646 result=Deencapsulation.invoke(testSubject, "getNewGroupName", new Object[]{oldPrefix, newNormailzedPrefix, qualifiedGroupInstanceName});
651 public void testUpdateComponentInstanceMetadata_3() {
652 ComponentInstanceBusinessLogic testSubject;
654 ComponentInstance newComponentInstance = null;
655 ComponentInstance result;
658 testSubject=createTestSubject();
659 result=Deencapsulation.invoke(testSubject, "updateComponentInstanceMetadata", new Object[]{toInstance, toInstance});
664 public void testDeleteComponentInstance() {
665 ComponentInstanceBusinessLogic testSubject;String containerComponentParam = "";
666 String containerComponentId = "";
667 String componentInstanceId = "";
668 String userId = user.getUserId();
669 Either<ComponentInstance,ResponseFormat> result;
672 testSubject=createTestSubject();
673 result=testSubject.deleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceId, userId);
678 public void testDeleteForwardingPaths() {
679 ComponentInstanceBusinessLogic testSubject;
681 String serviceId = service.getUniqueId();
682 List<String> pathIdsToDelete = new ArrayList<>();
683 Either<Set<String>,ResponseFormat> result;
685 // Either<Service, StorageOperationStatus> storageStatus = toscaOperationFacade.getToscaElement(serviceId);
686 when(toscaOperationFacade.getToscaElement(serviceId)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
689 testSubject=createTestSubject();
690 result=Deencapsulation.invoke(testSubject, "deleteForwardingPaths", new Object[]{serviceId, pathIdsToDelete});
695 public void testAssociateRIToRIOnGraph() throws Exception {
696 ComponentInstanceBusinessLogic testSubject;
698 RequirementCapabilityRelDef requirementDef = new RequirementCapabilityRelDef();
699 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
700 boolean inTransaction = false;
701 Either<RequirementCapabilityRelDef,ResponseFormat> result;
705 Either<RequirementCapabilityRelDef, StorageOperationStatus> getResourceResult = Either.left(requirementDef);
706 when(toscaOperationFacade.associateResourceInstances(resource.getUniqueId(), requirementDef)).thenReturn(getResourceResult);
709 testSubject=createTestSubject();
710 result=testSubject.associateRIToRIOnGraph(resource, requirementDef, componentTypeEnum, inTransaction);
716 public void testFindRelation() throws Exception {
717 ComponentInstanceBusinessLogic testSubject;
718 String relationId = "";
719 List<RequirementCapabilityRelDef> requirementCapabilityRelations = new ArrayList<>();
720 RequirementCapabilityRelDef result;
723 testSubject=createTestSubject();
724 result=Deencapsulation.invoke(testSubject, "findRelation", new Object[]{relationId, requirementCapabilityRelations});
729 public void testIsNetworkRoleServiceProperty() throws Exception {
730 ComponentInstanceBusinessLogic testSubject;
731 ComponentInstanceProperty property = new ComponentInstanceProperty();
732 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
736 testSubject=createTestSubject();
737 result=Deencapsulation.invoke(testSubject, "isNetworkRoleServiceProperty", new Object[]{property, componentTypeEnum});
742 public void testConcatServiceNameToVLINetworkRolePropertiesValues() throws Exception {
743 ComponentInstanceBusinessLogic testSubject;
744 ToscaOperationFacade toscaOperationFacade = new ToscaOperationFacade();
745 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
746 String componentId = "";
747 String resourceInstanceId = "";
748 List<ComponentInstanceProperty> properties = new ArrayList<>();
749 StorageOperationStatus result;
752 testSubject=createTestSubject();
753 result=Deencapsulation.invoke(testSubject, "concatServiceNameToVLINetworkRolePropertiesValues", new Object[]{toscaOperationFacade, componentTypeEnum, componentId, resourceInstanceId, properties});
758 public void testCreateOrUpdatePropertiesValues() throws Exception {
759 ComponentInstanceBusinessLogic testSubject;
760 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
762 String componentId = resource.getUniqueId();
763 String resourceInstanceId = "";
764 List<ComponentInstanceProperty> properties = new ArrayList<>();
765 String userId = user.getUserId();
766 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
769 when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.left(resource));
772 testSubject=createTestSubject();
773 result=testSubject.createOrUpdatePropertiesValues(componentTypeEnum, componentId, resourceInstanceId, properties, userId);
775 componentTypeEnum =null;
776 result=testSubject.createOrUpdatePropertiesValues(componentTypeEnum, componentId, resourceInstanceId, properties, userId);
778 // when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
779 result=testSubject.createOrUpdatePropertiesValues(componentTypeEnum, componentId, resourceInstanceId, properties, userId);
785 public void testUpdateCapabilityPropertyOnContainerComponent() throws Exception {
786 ComponentInstanceBusinessLogic testSubject;
787 ComponentInstanceProperty property = new ComponentInstanceProperty();
788 String newValue = "";
791 String capabilityType = "";
792 String capabilityName = "";
793 ResponseFormat result;
796 testSubject=createTestSubject();
797 result=Deencapsulation.invoke(testSubject, "updateCapabilityPropertyOnContainerComponent", new Object[]{property, newValue, resource, toInstance, capabilityType, capabilityName});
803 public void testCreateOrUpdateInstanceInputValues() throws Exception {
804 ComponentInstanceBusinessLogic testSubject;
805 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
807 String componentId = resource.getUniqueId();
808 String resourceInstanceId = "";
809 List<ComponentInstanceInput> inputs = new ArrayList<>();
810 String userId = user.getUserId();
811 Either<List<ComponentInstanceInput>,ResponseFormat> result;
813 when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.left(resource));
816 testSubject=createTestSubject();
817 result=testSubject.createOrUpdateInstanceInputValues(componentTypeEnum, componentId, resourceInstanceId, inputs, userId);
818 componentTypeEnum =null;
819 result=testSubject.createOrUpdateInstanceInputValues(componentTypeEnum, componentId, resourceInstanceId, inputs, userId);
822 // when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
823 result=testSubject.createOrUpdateInstanceInputValues(componentTypeEnum, componentId, resourceInstanceId, inputs, userId);
829 public void testCreateOrUpdateGroupInstancePropertyValue() throws Exception {
830 ComponentInstanceBusinessLogic testSubject;
831 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
833 String componentId = resource.getUniqueId();
834 String resourceInstanceId = "";
835 String groupInstanceId = "";
836 ComponentInstanceProperty property = new ComponentInstanceProperty();
837 String userId = user.getUserId();
838 Either<ComponentInstanceProperty,ResponseFormat> result;
841 when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.left(resource));
844 testSubject=createTestSubject();
845 result=testSubject.createOrUpdateGroupInstancePropertyValue(componentTypeEnum, componentId, resourceInstanceId, groupInstanceId, property, userId);
846 componentTypeEnum = null;
847 result=testSubject.createOrUpdateGroupInstancePropertyValue(componentTypeEnum, componentId, resourceInstanceId, groupInstanceId, property, userId);
849 // when(toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
850 result=testSubject.createOrUpdateGroupInstancePropertyValue(componentTypeEnum, componentId, resourceInstanceId, groupInstanceId, property, userId);
855 public void testCreateOrUpdateInputValue() throws Exception {
856 ComponentInstanceBusinessLogic testSubject;
858 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
859 String componentId = resource.getUniqueId();
860 String resourceInstanceId = resource.getUniqueId();
861 ComponentInstanceInput inputProperty = new ComponentInstanceInput();
862 String userId = user.getUserId();
863 Either<ComponentInstanceInput,ResponseFormat> result;
866 Either<Component, StorageOperationStatus> getResourceResult = Either.left(resource);
867 when(toscaOperationFacade.getToscaElement(resource.getUniqueId(), JsonParseFlagEnum.ParseMetadata)).thenReturn(getResourceResult);
870 testSubject=createTestSubject();
871 result=testSubject.createOrUpdateInputValue(componentTypeEnum, componentId, resourceInstanceId, inputProperty, userId);
873 componentTypeEnum = null;
874 result=testSubject.createOrUpdateInputValue(componentTypeEnum, componentId, resourceInstanceId, inputProperty, userId);
876 // when(toscaOperationFacade.getToscaElement(resource.getUniqueId(), JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
877 result=testSubject.createOrUpdateInputValue(componentTypeEnum, componentId, resourceInstanceId, inputProperty, userId);
882 public void testDeletePropertyValue() throws Exception {
883 ComponentInstanceBusinessLogic testSubject;
884 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
886 String serviceId = service.getUniqueId();
887 String resourceInstanceId = "";
888 String propertyValueId = "";
889 String userId = user.getUserId();
890 Either<ComponentInstanceProperty,ResponseFormat> result;
892 when(toscaOperationFacade.getToscaElement(serviceId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.left(service));
895 testSubject=createTestSubject();
896 result=testSubject.deletePropertyValue(componentTypeEnum, serviceId, resourceInstanceId, propertyValueId, userId);
897 componentTypeEnum= null;
898 result=testSubject.deletePropertyValue(componentTypeEnum, serviceId, resourceInstanceId, propertyValueId, userId);
900 // when(toscaOperationFacade.getToscaElement(serviceId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
901 result=testSubject.deletePropertyValue(componentTypeEnum, serviceId, resourceInstanceId, propertyValueId, userId);
906 public void testGetAndValidateOriginComponentOfComponentInstance() throws Exception {
907 ComponentInstanceBusinessLogic testSubject;
908 ComponentTypeEnum containerComponentType = ComponentTypeEnum.RESOURCE;
911 Either<Component,ResponseFormat> result;
913 when(toscaOperationFacade.getToscaFullElement(toInstance.getComponentUid())).thenReturn(Either.left(resource));
916 testSubject=createTestSubject();
917 result=Deencapsulation.invoke(testSubject, "getAndValidateOriginComponentOfComponentInstance", new Object[]{containerComponentType, toInstance});
925 public void testGetComponentParametersViewForForwardingPath() throws Exception {
926 ComponentInstanceBusinessLogic testSubject;
927 ComponentParametersView result;
930 testSubject=createTestSubject();
931 result=Deencapsulation.invoke(testSubject, "getComponentParametersViewForForwardingPath");
936 public void testChangeComponentInstanceVersion() throws Exception {
937 ComponentInstanceBusinessLogic testSubject;
938 String containerComponentParam = "";
939 String containerComponentId = "";
940 String componentInstanceId = "";
941 String userId = user.getUserId();
943 ComponentInstance newComponentInstance =toInstance;
944 Either<ComponentInstance,ResponseFormat> result;
947 testSubject=createTestSubject();
948 result=testSubject.changeComponentInstanceVersion(containerComponentParam, containerComponentId, componentInstanceId, userId, newComponentInstance);
949 newComponentInstance = null;
950 testSubject=createTestSubject();
951 result=testSubject.changeComponentInstanceVersion(containerComponentParam, containerComponentId, componentInstanceId, userId, newComponentInstance);
955 @Ignore("test failing skipping for now")
957 public void testValidateInstanceNameUniquenessUponUpdate() throws Exception {
958 ComponentInstanceBusinessLogic testSubject;
961 String newInstanceName = toInstance.getName();
965 testSubject=createTestSubject();
966 result=Deencapsulation.invoke(testSubject, "validateInstanceNameUniquenessUponUpdate", new Object[]{resource, toInstance, newInstanceName});
971 public void testGetResourceInstanceById() throws Exception {
972 ComponentInstanceBusinessLogic testSubject;
974 String instanceId = "";
975 Either<ComponentInstance,StorageOperationStatus> result;
978 testSubject=createTestSubject();
979 result=Deencapsulation.invoke(testSubject, "getResourceInstanceById", new Object[]{resource, instanceId});
982 @Ignore("test failing skipping for now")
984 public void testBuildComponentInstance() throws Exception {
985 ComponentInstanceBusinessLogic testSubject;
987 ComponentInstance origInstanceForUpdate = null;
988 ComponentInstance result;
991 testSubject=createTestSubject();
992 result=Deencapsulation.invoke(testSubject, "buildComponentInstance", new Object[]{toInstance, toInstance});
1000 public void testFindCapabilityOfInstance() throws Exception {
1001 ComponentInstanceBusinessLogic testSubject;String componentId = "";
1002 String instanceId = "";
1003 String capabilityType = "";
1004 String capabilityName = "";
1005 String ownerId = "";
1006 Map<String,List<CapabilityDefinition>> instanceCapabilities = new HashMap<>();
1007 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1010 testSubject=createTestSubject();
1011 result=Deencapsulation.invoke(testSubject, "findCapabilityOfInstance", new Object[]{componentId, instanceId, capabilityType, capabilityName, ownerId, instanceCapabilities});
1016 public void testFetchComponentInstanceCapabilityProperties() throws Exception {
1017 ComponentInstanceBusinessLogic testSubject;String componentId = "";
1018 String instanceId = "";
1019 String capabilityType = "";
1020 String capabilityName = "";
1021 String ownerId = "";
1022 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1025 testSubject=createTestSubject();
1026 result=Deencapsulation.invoke(testSubject, "fetchComponentInstanceCapabilityProperties", new Object[]{componentId, instanceId, capabilityType, capabilityName, ownerId});
1031 public void testUpdateCapabilityPropertyOnContainerComponent_1() throws Exception {
1032 ComponentInstanceBusinessLogic testSubject;
1033 ComponentInstanceProperty property = new ComponentInstanceProperty();
1034 String newValue = "";
1037 String capabilityType = "";
1038 String capabilityName = "";
1039 String ownerId = "";
1040 ResponseFormat result;
1043 testSubject=createTestSubject();
1044 result=Deencapsulation.invoke(testSubject, "updateCapabilityPropertyOnContainerComponent", new Object[]{property, newValue, resource, toInstance, capabilityType, capabilityName, ownerId});
1049 public void testUpdateInstanceCapabilityProperties() throws Exception {
1050 ComponentInstanceBusinessLogic testSubject;
1051 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
1053 String containerComponentId = resource.getUniqueId();
1054 String componentInstanceUniqueId = "";
1055 String capabilityType = "";
1056 String capabilityName = "";
1057 String ownerId = "";
1058 List<ComponentInstanceProperty> properties = new ArrayList<>();
1059 String userId = user.getUserId();
1060 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1063 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.left(resource));
1068 testSubject=createTestSubject();
1069 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, ownerId, properties, userId);
1070 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND));
1071 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, ownerId, properties, userId);
1072 componentTypeEnum = null;
1073 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, ownerId, properties, userId);
1080 public void testUpdateInstanceCapabilityProperties_1() throws Exception {
1081 ComponentInstanceBusinessLogic testSubject;
1082 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
1084 String containerComponentId = resource.getUniqueId();
1085 String componentInstanceUniqueId = "";
1086 String capabilityType = "";
1087 String capabilityName = "";
1088 List<ComponentInstanceProperty> properties = new ArrayList<>();
1089 String userId = user.getUserId();
1090 Either<List<ComponentInstanceProperty>,ResponseFormat> result;
1093 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1095 testSubject=createTestSubject();
1096 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, properties, userId);
1097 when(toscaOperationFacade.getToscaFullElement(containerComponentId)).thenReturn(Either.left(resource));
1098 result=testSubject.updateInstanceCapabilityProperties(componentTypeEnum, containerComponentId, componentInstanceUniqueId, capabilityType, capabilityName, properties, userId);
1102 public void testCopyComponentInstanceWrongUserId() {
1104 Either<Map<String, ComponentInstance>, ResponseFormat> result;
1105 ComponentInstance inputComponentInstance = createComponetInstanceFromComponent(resource);
1106 String containerComponentId = service.getUniqueId();
1107 String componentInstanceId = resource.getUniqueId();
1108 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1109 service.setLastUpdaterUserId("wrong user id");
1111 Either<Component, StorageOperationStatus> leftServiceOp = Either.left(service);
1112 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(leftServiceOp);
1113 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1114 .thenReturn(leftServiceOp);
1115 when(titanDao.rollback()).thenReturn(TitanOperationStatus.OK);
1116 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1117 .thenReturn(StorageOperationStatus.OK);
1118 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1119 .thenReturn(StorageOperationStatus.OK);
1121 result = componentInstanceBusinessLogic
1122 .copyComponentInstance(inputComponentInstance, containerComponentId, componentInstanceId, USER_ID);
1124 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1126 assertThat(result.isRight());
1130 public void testCopyComponentInstanceComponentWrongState() {
1131 Either<Map<String, ComponentInstance>, ResponseFormat> result;
1132 ComponentInstance inputComponentInstance = createComponetInstanceFromComponent(resource);
1133 String containerComponentId = service.getUniqueId();
1134 String componentInstanceId = resource.getUniqueId();
1135 String oldServiceLastUpdatedUserId = service.getLastUpdaterUserId();
1136 service.setLastUpdaterUserId(USER_ID);
1138 Either<Component, StorageOperationStatus> leftServiceOp = Either.left(service);
1139 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(leftServiceOp);
1140 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1141 .thenReturn(leftServiceOp);
1142 when(titanDao.rollback()).thenReturn(TitanOperationStatus.OK);
1143 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1144 .thenReturn(StorageOperationStatus.OK);
1145 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1146 .thenReturn(StorageOperationStatus.OK);
1147 Either<Component, StorageOperationStatus> getComponentRes = Either.left(resource);
1148 when(toscaOperationFacade.getToscaFullElement(inputComponentInstance.getComponentUid()))
1149 .thenReturn(getComponentRes);
1151 result = componentInstanceBusinessLogic
1152 .copyComponentInstance(inputComponentInstance, containerComponentId, componentInstanceId, USER_ID);
1154 service.setLastUpdaterUserId(oldServiceLastUpdatedUserId);
1156 assertThat(result.isRight());
1160 public void testCopyComponentInstance() {
1161 Either<Map<String, ComponentInstance>, ResponseFormat> result;
1162 ComponentInstance inputComponentInstance = createComponetInstanceFromComponent(resource);
1163 String containerComponentId = service.getUniqueId();
1164 String componentInstanceId = resource.getUniqueId();
1165 String oldServiceLastUpdatedUserId = service.getLastUpdaterUserId();
1166 service.setLastUpdaterUserId(USER_ID);
1167 LifecycleStateEnum oldResourceLifeCycle = resource.getLifecycleState();
1168 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
1170 Either<Component, StorageOperationStatus> leftServiceOp = Either.left(service);
1171 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(leftServiceOp);
1172 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1173 .thenReturn(leftServiceOp);
1174 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1175 .thenReturn(StorageOperationStatus.OK);
1176 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1177 .thenReturn(StorageOperationStatus.OK);
1178 Either<Component, StorageOperationStatus> getComponentRes = Either.left(resource);
1179 when(toscaOperationFacade.getToscaFullElement(inputComponentInstance.getComponentUid()))
1180 .thenReturn(getComponentRes);
1181 ImmutablePair<Component, String> pair = new ImmutablePair<>(resource, TO_INSTANCE_ID);
1182 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.left(pair);
1183 when(toscaOperationFacade
1184 .addComponentInstanceToTopologyTemplate(eq(service), eq(resource), eq(inputComponentInstance), eq(false),
1185 isNull(User.class))).thenReturn(result2);
1186 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getResourceDeploymentArtifacts = Either
1187 .left(new HashMap<String, ArtifactDefinition>());
1188 when(artifactBusinessLogic.getArtifacts(eq(inputComponentInstance.getComponentUid()), eq(NodeTypeEnum.Resource),
1189 eq(ArtifactGroupTypeEnum.DEPLOYMENT), isNull(String.class))).thenReturn(getResourceDeploymentArtifacts);
1190 StorageOperationStatus artStatus = StorageOperationStatus.OK;
1191 when(toscaOperationFacade
1192 .addInformationalArtifactsToInstance(eq(resource.getUniqueId()), eq(inputComponentInstance),
1193 isNull(Map.class))).thenReturn(artStatus);
1195 result = componentInstanceBusinessLogic
1196 .copyComponentInstance(inputComponentInstance, containerComponentId, componentInstanceId, USER_ID);
1198 service.setLastUpdaterUserId(oldServiceLastUpdatedUserId);
1199 resource.setLifecycleState(oldResourceLifeCycle);
1201 assertThat(result.isLeft());
1205 public void testCreateOrUpdateAttributeValueForCopyPaste() {
1206 ComponentInstance serviceComponentInstance = createComponetInstanceFromComponent(service);
1207 ComponentInstanceProperty attribute = new ComponentInstanceProperty();
1208 attribute.setType("string");
1209 attribute.setUniqueId("testCreateOrUpdateAttributeValueForCopyPaste");
1210 SchemaDefinition def = Mockito.mock(SchemaDefinition.class);
1211 attribute.setSchema(def);
1212 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1213 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1214 service.setLastUpdaterUserId(USER_ID);
1215 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1217 Map<String, List<ComponentInstanceProperty>> instAttrsMap = new HashMap<String, List<ComponentInstanceProperty>>();
1218 List<ComponentInstanceProperty> instAttrsList = new ArrayList<ComponentInstanceProperty>();
1219 ComponentInstanceProperty prop = new ComponentInstanceProperty();
1220 prop.setUniqueId(attribute.getUniqueId());
1221 instAttrsList.add(prop);
1222 instAttrsMap.put(toInstance.getUniqueId(), instAttrsList);
1223 service.setComponentInstancesAttributes(instAttrsMap);
1225 Either<Component, StorageOperationStatus> serviceEitherLeft = Either.left(service);
1226 when(toscaOperationFacade.getToscaElement(serviceComponentInstance.getUniqueId(), JsonParseFlagEnum.ParseAll)).thenReturn(serviceEitherLeft);
1227 when(toscaOperationFacade.updateComponentInstanceAttribute(service, toInstance.getUniqueId(), attribute)).thenReturn(StorageOperationStatus.OK);
1228 when(toscaOperationFacade.updateComponentInstanceMetadataOfTopologyTemplate(service)).thenReturn(serviceEitherLeft);
1230 Either<ComponentInstanceProperty, ResponseFormat> result = Deencapsulation.invoke(componentInstanceBusinessLogic, "createOrUpdateAttributeValueForCopyPaste", ComponentTypeEnum.SERVICE,
1231 serviceComponentInstance.getUniqueId(),
1232 toInstance.getUniqueId(),
1236 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1237 service.setLifecycleState(oldLifeCycleState);
1239 assertTrue(result.isLeft());
1240 ComponentInstanceProperty resultProp = result.left().value();
1241 assertEquals(resultProp.getPath().size(), 1);
1242 assertEquals(resultProp.getPath().get(0), toInstance.getUniqueId());
1246 public void testUpdateComponentInstanceProperty() {
1248 String containerComponentId = service.getUniqueId();
1249 String componentInstanceId = "dummy_id";
1250 ComponentInstanceProperty property = Mockito.mock(ComponentInstanceProperty.class);
1252 Either<Component, StorageOperationStatus> getComponent = Either.left(service);
1253 when(toscaOperationFacade.getToscaElement(containerComponentId)).thenReturn(getComponent);
1254 StorageOperationStatus status = StorageOperationStatus.OK;
1255 when(toscaOperationFacade.updateComponentInstanceProperty(service, componentInstanceId, property))
1256 .thenReturn(status);
1257 Either<Component, StorageOperationStatus> updateContainerRes = Either.left(service);
1258 when(toscaOperationFacade.updateComponentInstanceMetadataOfTopologyTemplate(service))
1259 .thenReturn(updateContainerRes);
1261 Either<String, ResponseFormat> result = Deencapsulation
1262 .invoke(componentInstanceBusinessLogic, "updateComponentInstanceProperty", containerComponentId,
1263 componentInstanceId, property);
1265 assertTrue(result.isLeft());
1269 public void testGetInputListDefaultValue() {
1270 Component component = service;
1271 String inputId = "dummy_id";
1272 String defaultValue = "dummy_default_value";
1273 List<InputDefinition> newInputs = new ArrayList<InputDefinition>();
1274 InputDefinition in = new InputDefinition();
1275 in.setUniqueId(inputId);
1276 in.setDefaultValue(defaultValue);
1278 List<InputDefinition> oldInputs = service.getInputs();
1279 service.setInputs(newInputs);
1281 Either<String, ResponseFormat> result = Deencapsulation
1282 .invoke(componentInstanceBusinessLogic, "getInputListDefaultValue", component, inputId);
1284 service.setInputs(oldInputs);
1286 assertEquals(result.left().value(), defaultValue);
1290 public void testBatchDeleteComponentInstanceFailureWrongType() {
1291 Map<String, List<String>> result;
1292 List<String> componentInstanceIdList = new ArrayList<>();
1293 String containerComponentParam = "WRONG_TYPE";
1294 String containerComponentId = "containerComponentId";
1295 String componentInstanceId = "componentInstanceId";
1296 componentInstanceIdList.add(componentInstanceId);
1297 String userId = USER_ID;
1298 Map<String, List<String>> deleteErrorMap = new HashMap<>();
1299 List<String> deleteErrorIds = new ArrayList<>();
1300 deleteErrorIds.add(componentInstanceId);
1301 deleteErrorMap.put("deleteFailedIds", deleteErrorIds);
1303 result = componentInstanceBusinessLogic
1304 .batchDeleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceIdList,
1307 assertEquals(deleteErrorMap, result);
1311 public void testBatchDeleteComponentInstanceFailureCompIds() {
1312 Map<String, List<String>> result;
1313 String containerComponentParam = ComponentTypeEnum.SERVICE_PARAM_NAME;
1314 String containerComponentId = "containerComponentId";
1315 String componentInstanceId = "componentInstanceId";
1316 List<String> componentInstanceIdList = new ArrayList<>();
1317 componentInstanceIdList.add(componentInstanceId);
1318 String userId = USER_ID;
1319 Map<String, List<String>> deleteErrorMap = new HashMap<>();
1320 List<String> deleteErrorIds = new ArrayList<>();
1321 deleteErrorIds.add(componentInstanceId);
1322 deleteErrorMap.put("deleteFailedIds", deleteErrorIds);
1324 Either<Component, StorageOperationStatus> err = Either.right(StorageOperationStatus.GENERAL_ERROR);
1325 when(toscaOperationFacade.getToscaElement(eq(containerComponentId), any(ComponentParametersView.class)))
1328 result = componentInstanceBusinessLogic
1329 .batchDeleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceIdList,
1332 assertEquals(deleteErrorMap, result);
1336 public void testBatchDeleteComponentInstanceSuccess() {
1337 Map<String, List<String>> result;
1338 String containerComponentParam = ComponentTypeEnum.SERVICE_PARAM_NAME;
1339 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1340 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1341 service.setLastUpdaterUserId(USER_ID);
1342 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1343 String containerComponentId = service.getUniqueId();
1344 String componentInstanceId = TO_INSTANCE_ID;
1345 String userId = USER_ID;
1346 List<String> componentInstanceIdList = new ArrayList<>();
1347 componentInstanceIdList.add(componentInstanceId);
1348 Map<String, List<String>> deleteErrorMap = new HashMap<>();
1349 List<String> deleteErrorIds = new ArrayList<>();
1350 deleteErrorMap.put("deleteFailedIds", deleteErrorIds);
1352 Either<Component, StorageOperationStatus> cont = Either.left(service);
1353 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1354 .thenReturn(StorageOperationStatus.OK);
1355 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1356 .thenReturn(StorageOperationStatus.OK);
1357 ImmutablePair<Component, String> pair = new ImmutablePair<>(resource, TO_INSTANCE_ID);
1358 Either<ImmutablePair<Component, String>, StorageOperationStatus> result2 = Either.left(pair);
1359 when(toscaOperationFacade.deleteComponentInstanceFromTopologyTemplate(service, componentInstanceId))
1360 .thenReturn(result2);
1361 when(toscaOperationFacade.getToscaElement(eq(service.getUniqueId()), any(ComponentParametersView.class)))
1363 when(titanDao.commit()).thenReturn(TitanOperationStatus.OK);
1365 result = componentInstanceBusinessLogic
1366 .batchDeleteComponentInstance(containerComponentParam, containerComponentId, componentInstanceIdList, userId);
1368 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1369 service.setLifecycleState(oldLifeCycleState);
1370 assertEquals(deleteErrorMap,result);
1374 public void testDissociateRIFromRIFailDissociate() {
1376 List<RequirementCapabilityRelDef> result;
1377 RequirementCapabilityRelDef ref = new RequirementCapabilityRelDef();
1378 ref.setFromNode(FROM_INSTANCE_ID);
1379 ref.setToNode(TO_INSTANCE_ID);
1380 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1381 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1382 RelationshipInfo ri = new RelationshipInfo();
1383 ri.setRequirement(REQUIREMENT_NAME);
1384 relationship.setRelation(ri);
1385 relationships.add(relationship);
1386 ref.setRelationships(relationships);
1387 List<RequirementCapabilityRelDef> requirementDefList = new ArrayList<>();
1388 requirementDefList.add(ref);
1389 ComponentTypeEnum componentTypeEnum = service.getComponentType();
1390 String componentId = service.getUniqueId();
1391 String userId = USER_ID;
1392 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1393 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1394 service.setLastUpdaterUserId(USER_ID);
1395 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1397 Either<Component, StorageOperationStatus> cont = Either.left(service);
1398 when(toscaOperationFacade.getToscaElement(eq(service.getUniqueId()), any(ComponentParametersView.class)))
1400 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1401 .thenReturn(StorageOperationStatus.OK);
1402 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1403 .thenReturn(StorageOperationStatus.OK);
1404 Either<RequirementCapabilityRelDef, StorageOperationStatus> resultEither;
1405 resultEither = Either.right(StorageOperationStatus.OK);
1406 when(toscaOperationFacade.dissociateResourceInstances(componentId, ref)).thenReturn(resultEither);
1408 result = componentInstanceBusinessLogic
1409 .batchDissociateRIFromRI(componentId, userId, requirementDefList, componentTypeEnum);
1411 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1412 service.setLifecycleState(oldLifeCycleState);
1414 assertEquals(new ArrayList<>(), result);
1418 public void testDissociateRIFromRISuccess() {
1420 List<RequirementCapabilityRelDef> result;
1421 RequirementCapabilityRelDef ref = new RequirementCapabilityRelDef();
1422 List<RequirementCapabilityRelDef> requirementDefList = new ArrayList<>();
1423 requirementDefList.add(ref);
1424 ComponentTypeEnum componentTypeEnum = service.getComponentType();
1425 String componentId = service.getUniqueId();
1426 String userId = USER_ID;
1427 LifecycleStateEnum oldLifeCycleState = service.getLifecycleState();
1428 String oldLastUpdatedUserId = service.getLastUpdaterUserId();
1429 service.setLastUpdaterUserId(USER_ID);
1430 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
1432 Either<Component, StorageOperationStatus> cont = Either.left(service);
1433 when(toscaOperationFacade.getToscaElement(eq(service.getUniqueId()), any(ComponentParametersView.class)))
1435 when(graphLockOperation.unlockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1436 .thenReturn(StorageOperationStatus.OK);
1437 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Service)))
1438 .thenReturn(StorageOperationStatus.OK);
1439 Either<RequirementCapabilityRelDef, StorageOperationStatus> resultEither;
1440 resultEither = Either.left(ref);
1441 when(toscaOperationFacade.dissociateResourceInstances(componentId, ref)).thenReturn(resultEither);
1443 result = componentInstanceBusinessLogic
1444 .batchDissociateRIFromRI(componentId, userId, requirementDefList, componentTypeEnum);
1446 service.setLastUpdaterUserId(oldLastUpdatedUserId);
1447 service.setLifecycleState(oldLifeCycleState);
1449 assertEquals(requirementDefList, result);
1452 private ComponentInstance createComponetInstanceFromComponent(Component component) {
1453 ComponentInstance componentInst = new ComponentInstance();
1454 componentInst.setUniqueId(component.getUniqueId());
1455 componentInst.setComponentUid(component.getUniqueId() + "_test");
1456 componentInst.setPosX("10");
1457 componentInst.setPosY("10");
1458 componentInst.setCapabilities(component.getCapabilities());
1459 componentInst.setRequirements(component.getRequirements());
1460 componentInst.setArtifacts(component.getArtifacts());
1461 componentInst.setDeploymentArtifacts(component.getDeploymentArtifacts());
1462 return componentInst;