1 package org.openecomp.sdc.be.components.merge.instance;
4 import org.junit.Before;
7 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
8 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
9 import org.openecomp.sdc.be.dao.api.ActionStatus;
10 import org.openecomp.sdc.be.impl.ComponentsUtils;
11 import org.openecomp.sdc.be.model.*;
12 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
13 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
14 import org.openecomp.sdc.exception.ResponseFormat;
16 import java.util.List;
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertFalse;
20 import static org.mockito.ArgumentMatchers.*;
21 import static org.mockito.Mockito.verifyZeroInteractions;
22 import static org.mockito.Mockito.when;
23 public class ComponentInstancePropsAndInputsMergeTest {
25 private static final String INSTANCE_ID1 = "inst1";
26 private static final User USER = new User();
29 private ComponentInstancePropsAndInputsMerge testInstance;
32 private ToscaOperationFacade toscaOperationFacade;
35 private ComponentsUtils componentsUtils;
38 private ComponentInstancePropertiesMergeBL componentInstancePropertiesMergeBL;
41 private ComponentInstanceInputsMergeBL componentInstanceInputsMergeBL;
44 private ComponentInstanceInputsRedeclareHandler componentInstanceInputsRedeclareHandler;
46 private Resource resourceToUpdate;
48 private DataForMergeHolder oldDataHolder;
51 public void setUp() throws Exception {
52 MockitoAnnotations.initMocks(this);
53 resourceToUpdate = new ResourceBuilder().addInstanceInput(INSTANCE_ID1, "instInput1")
54 .addInstanceInput(INSTANCE_ID1, "instInput2")
55 .addInstanceProperty(INSTANCE_ID1, "instProp1")
56 .addInstanceProperty(INSTANCE_ID1, "instProp2")
59 .setUniqueId("resourceId").build();
61 List<InputDefinition> oldInputs = ObjectGenerator.buildInputs("input1");
62 List<ComponentInstanceProperty> oldInstProps = ObjectGenerator.buildInstanceProperties("instProp1", "instProp3");
63 List<ComponentInstanceInput> oldInstInputs = ObjectGenerator.buildInstanceInputs("instInput1", "instInput3");
65 oldDataHolder = new DataForMergeHolder();
66 oldDataHolder.setOrigComponentInputs(oldInputs);
67 oldDataHolder.setOrigComponentInstanceProperties(oldInstProps);
68 oldDataHolder.setOrigComponentInstanceInputs(oldInstInputs);
72 public void mergeDataAfterCreate() throws Exception {
73 List<InputDefinition> oldInputs = ObjectGenerator.buildInputs("input1");
74 List<ComponentInstanceProperty> oldInstProps = ObjectGenerator.buildInstanceProperties("instProp1", "instProp3");
75 List<ComponentInstanceInput> oldInstInputs = ObjectGenerator.buildInstanceInputs("instInput1", "instInput3");
77 DataForMergeHolder dataForMergeHolder = new DataForMergeHolder();
78 dataForMergeHolder.setOrigComponentInputs(oldInputs);
79 dataForMergeHolder.setOrigComponentInstanceProperties(oldInstProps);
80 dataForMergeHolder.setOrigComponentInstanceInputs(oldInstInputs);
81 Resource currInstanceOriginType = new Resource();
82 dataForMergeHolder.setCurrInstanceNode(currInstanceOriginType);
84 ArgumentCaptor<ComponentParametersView> parametersViewCaptor = ArgumentCaptor.forClass(ComponentParametersView.class);
86 when(toscaOperationFacade.getToscaElement(Mockito.eq("resourceId"), parametersViewCaptor.capture())).thenReturn(Either.left(resourceToUpdate));
87 when(componentInstanceInputsMergeBL.mergeComponentInstanceInputs(oldInstInputs, oldInputs, resourceToUpdate, INSTANCE_ID1)).thenReturn(ActionStatus.OK);
88 when(componentInstancePropertiesMergeBL.mergeComponentInstanceProperties(oldInstProps, oldInputs, resourceToUpdate, INSTANCE_ID1)).thenReturn(ActionStatus.OK);
89 when(componentInstanceInputsRedeclareHandler.redeclareComponentInputsForInstance(resourceToUpdate, INSTANCE_ID1, currInstanceOriginType, oldInputs)).thenReturn(ActionStatus.OK);
90 Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, dataForMergeHolder, resourceToUpdate, INSTANCE_ID1);
91 assertEquals(mergeResult.left().value(), resourceToUpdate);
92 assertComponentFilter(parametersViewCaptor.getValue());
96 public void mergeDataAfterCreate_failedToMergeComponentInstanceInputs() throws Exception {
97 ResponseFormat errorResponse = new ResponseFormat();
98 when(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)).thenReturn(errorResponse);
99 when(componentInstanceInputsMergeBL.mergeComponentInstanceInputs(anyList(), anyList(), any(Component.class), anyString())).thenReturn(ActionStatus.GENERAL_ERROR);
100 Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, new DataForMergeHolder(), new Service(), "inst1");
101 assertEquals(errorResponse, mergeResult.right().value());
102 verifyZeroInteractions(componentInstanceInputsRedeclareHandler, componentInstancePropertiesMergeBL, toscaOperationFacade);
106 public void mergeDataAfterCreate_failedToMergeComponentInstProps() throws Exception {
107 ResponseFormat errorResponse = new ResponseFormat();
108 when(componentInstanceInputsMergeBL.mergeComponentInstanceInputs(anyList(), anyList(), any(Component.class), anyString())).thenReturn(ActionStatus.OK);
109 when(componentInstancePropertiesMergeBL.mergeComponentInstanceProperties(anyList(), anyList(), any(Component.class), anyString())).thenReturn(ActionStatus.GENERAL_ERROR);
110 when(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)).thenReturn(errorResponse);
111 Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, new DataForMergeHolder(), new Service(), "inst1");
112 assertEquals(errorResponse, mergeResult.right().value());
113 verifyZeroInteractions(componentInstanceInputsRedeclareHandler, toscaOperationFacade);
117 public void mergeDataAfterCreate_mergeInputs_FailedToFetchResource() throws Exception {
118 ResponseFormat errorResponse = new ResponseFormat();
119 when(componentInstanceInputsMergeBL.mergeComponentInstanceInputs(anyList(), anyList(), any(Component.class), anyString())).thenReturn(ActionStatus.OK);
120 when(componentInstancePropertiesMergeBL.mergeComponentInstanceProperties(anyList(), anyList(), any(Component.class), anyString())).thenReturn(ActionStatus.OK);
121 when(toscaOperationFacade.getToscaElement(any(), any(ComponentParametersView.class))).thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
122 when(componentsUtils.convertFromStorageResponse(StorageOperationStatus.GENERAL_ERROR)).thenReturn(ActionStatus.GENERAL_ERROR);
123 when(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)).thenReturn(errorResponse);
124 DataForMergeHolder dataHolder = new DataForMergeHolder();
125 dataHolder.setOrigComponentInputs(ObjectGenerator.buildInputs("input1", "input2"));
126 Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, dataHolder, new Service(), "inst1");
127 assertEquals(errorResponse, mergeResult.right().value());
128 verifyZeroInteractions(componentInstanceInputsRedeclareHandler);
131 private void assertComponentFilter(ComponentParametersView value) {
132 assertFalse(value.isIgnoreComponentInstances());
133 assertFalse(value.isIgnoreComponentInstancesProperties());
134 assertFalse(value.isIgnoreComponentInstancesInputs());
135 assertFalse(value.isIgnoreArtifacts());