1 package org.openecomp.sdc.be.components.impl;
4 import org.apache.commons.lang3.tuple.ImmutablePair;
5 import org.junit.Before;
7 import org.junit.runner.RunWith;
8 import org.mockito.Mock;
9 import org.mockito.Mockito;
10 import org.mockito.junit.MockitoJUnitRunner;
11 import org.openecomp.sdc.be.components.impl.CommonImportManager.ElementTypeEnum;
12 import org.openecomp.sdc.be.dao.api.ActionStatus;
13 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
14 import org.openecomp.sdc.be.impl.ComponentsUtils;
15 import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
16 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
17 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation;
18 import org.openecomp.sdc.exception.ResponseFormat;
19 import org.openecomp.sdc.exception.ServiceException;
21 import java.util.Arrays;
22 import java.util.List;
23 import java.util.function.BiFunction;
24 import java.util.function.Function;
26 import static org.junit.Assert.assertEquals;
27 import static org.mockito.Mockito.*;
29 @RunWith(MockitoJUnitRunner.class)
30 public class CommonImportManagerTest {
31 private CommonImportManager commonImportManager;
33 private ComponentsUtils componentsUtils;
35 PropertyOperation propertyOperation;
37 private JanusGraphGenericDao janusGraphGenericDao;
40 private Function<Object, Either<ActionStatus, ResponseFormat>> validator;
42 private Function<Object, ImmutablePair<ElementTypeEnum, String>> elementInfoGetter;
44 private Function<String, Either<Object, StorageOperationStatus>> elementFetcher;
46 private Function<Object, Either<Object, StorageOperationStatus>> elementAdder;
48 private BiFunction<Object, Object, Either<Object, StorageOperationStatus>> elementUpgrader;
51 public void startUp() {
52 commonImportManager = new CommonImportManager(componentsUtils, propertyOperation);
54 when(propertyOperation.getJanusGraphGenericDao()).thenReturn(janusGraphGenericDao);
58 public void testCreateElementTypesByDao_validationFailed() {
59 Object type1 = new Object();
60 List<Object> elementTypesToCreate = Arrays.asList(type1);
62 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
63 when(elementInfoGetter.apply(type1)).thenReturn(elementInfo);
65 ResponseFormat responseFormat = new ResponseFormat();
66 responseFormat.setServiceException(new ServiceException());
67 when(validator.apply(type1)).thenReturn(Either.right(responseFormat));
70 commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
72 verify(elementAdder, never()).apply(Mockito.any());
73 verify(elementUpgrader, never()).apply(Mockito.any(), Mockito.any());
74 verify(janusGraphGenericDao).rollback();
78 public void testCreateElementTypesByDao_RuntTimeExceptionInValidation() {
79 Object type1 = new Object();
80 List<Object> elementTypesToCreate = Arrays.asList(type1);
82 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
83 when(elementInfoGetter.apply(type1)).thenReturn(elementInfo);
84 when(validator.apply(type1)).thenThrow(new RuntimeException("Test Exception"));
87 commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
89 catch(Exception skip) {
92 verify(elementAdder, never()).apply(Mockito.any());
93 verify(elementUpgrader, never()).apply(Mockito.any(), Mockito.any());
94 verify(janusGraphGenericDao).rollback();
98 public void testCreateElementTypesByDao_capabilityTypeFetcherFailed() {
99 CapabilityTypeDefinition type1 = new CapabilityTypeDefinition();
100 List<Object> elementTypesToCreate = Arrays.asList(type1);
102 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
103 when(elementInfoGetter.apply(type1)).thenReturn(elementInfo);
105 when(validator.apply(type1)).thenReturn(Either.left(ActionStatus.OK));
106 when(elementFetcher.apply("TestCapability")).thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
107 ResponseFormat responseFormat = new ResponseFormat();
108 responseFormat.setServiceException(new ServiceException());
109 when(componentsUtils.convertFromStorageResponseForCapabilityType(Mockito.any())).thenCallRealMethod();
110 when(componentsUtils.getResponseFormatByCapabilityType(ActionStatus.INVALID_CONTENT, type1)).thenReturn(responseFormat);
113 commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
115 verify(elementAdder, never()).apply(Mockito.any());
116 verify(elementUpgrader, never()).apply(Mockito.any(), Mockito.any());
117 verify(janusGraphGenericDao).rollback();
121 public void testCreateElementTypesByDao_capabilityTypeNotFound_AddFailed() {
122 CapabilityTypeDefinition type1 = new CapabilityTypeDefinition();
123 List<Object> elementTypesToCreate = Arrays.asList(type1);
125 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
126 when(elementInfoGetter.apply(type1)).thenReturn(elementInfo);
128 when(validator.apply(type1)).thenReturn(Either.left(ActionStatus.OK));
129 when(elementFetcher.apply("TestCapability")).thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
130 when(elementAdder.apply(type1)).thenReturn(Either.right(StorageOperationStatus.SCHEMA_VIOLATION));
132 ResponseFormat responseFormat = new ResponseFormat();
133 responseFormat.setServiceException(new ServiceException());
134 when(componentsUtils.convertFromStorageResponseForCapabilityType(Mockito.any())).thenCallRealMethod();
135 when(componentsUtils.getResponseFormatByCapabilityType(ActionStatus.CAPABILITY_TYPE_ALREADY_EXIST, type1)).thenReturn(responseFormat);
138 commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
140 verify(elementAdder).apply(type1);
141 verify(elementUpgrader, never()).apply(Mockito.any(), Mockito.any());
142 verify(janusGraphGenericDao).rollback();
147 public void testCreateElementTypesByDao_capabilityTypeNotFound_AddSucceeded() {
148 CapabilityTypeDefinition type1 = new CapabilityTypeDefinition();
149 List<Object> elementTypesToCreate = Arrays.asList(type1);
151 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
152 when(elementInfoGetter.apply(type1)).thenReturn(elementInfo);
154 when(validator.apply(type1)).thenReturn(Either.left(ActionStatus.OK));
155 when(elementFetcher.apply("TestCapability")).thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
156 when(elementAdder.apply(type1)).thenReturn(Either.left(type1));
159 Either<List<ImmutablePair<Object, Boolean>>, ResponseFormat> result = commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
161 verify(elementAdder).apply(type1);
162 verify(elementUpgrader, never()).apply(Mockito.any(), Mockito.any());
163 verify(janusGraphGenericDao).commit();
165 assertEquals(type1, result.left().value().get(0).getLeft());
166 assertEquals(true, result.left().value().get(0).getRight());
170 public void testCreateElementTypesByDao_capabilityTypeFound_UpgradeFailed() {
171 CapabilityTypeDefinition type1 = new CapabilityTypeDefinition();
172 CapabilityTypeDefinition type1_1 = new CapabilityTypeDefinition();
173 List<Object> elementTypesToCreate = Arrays.asList(type1_1);
175 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
176 when(elementInfoGetter.apply(type1_1)).thenReturn(elementInfo);
178 when(validator.apply(type1_1)).thenReturn(Either.left(ActionStatus.OK));
179 when(elementFetcher.apply("TestCapability")).thenReturn(Either.left(type1));
180 when(elementUpgrader.apply(type1_1, type1)).thenReturn(Either.right(StorageOperationStatus.SCHEMA_VIOLATION));
182 ResponseFormat responseFormat = new ResponseFormat();
183 responseFormat.setServiceException(new ServiceException());
184 when(componentsUtils.convertFromStorageResponseForCapabilityType(Mockito.any())).thenCallRealMethod();
185 when(componentsUtils.getResponseFormatByCapabilityType(ActionStatus.CAPABILITY_TYPE_ALREADY_EXIST, type1_1)).thenReturn(responseFormat);
188 commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
190 verify(elementAdder, never()).apply(Mockito.any());
191 verify(elementUpgrader).apply(type1_1, type1);
192 verify(janusGraphGenericDao).rollback();
196 public void testCreateElementTypesByDao_capabilityTypeFound_UpgradeSucceeded() {
197 CapabilityTypeDefinition type1 = new CapabilityTypeDefinition();
198 CapabilityTypeDefinition type1_1 = new CapabilityTypeDefinition();
199 List<Object> elementTypesToCreate = Arrays.asList(type1_1);
201 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
202 when(elementInfoGetter.apply(type1_1)).thenReturn(elementInfo);
204 when(validator.apply(type1_1)).thenReturn(Either.left(ActionStatus.OK));
205 when(elementFetcher.apply("TestCapability")).thenReturn(Either.left(type1));
206 when(elementUpgrader.apply(type1_1, type1)).thenReturn(Either.left(type1_1));
208 Either<List<ImmutablePair<Object, Boolean>>, ResponseFormat> result = commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
210 verify(elementAdder, never()).apply(Mockito.any());
211 verify(elementUpgrader).apply(type1_1, type1);
212 verify(janusGraphGenericDao).commit();
214 assertEquals(type1_1, result.left().value().get(0).getLeft());
215 assertEquals(true, result.left().value().get(0).getRight());
219 public void testCreateElementTypesByDao_capabilityTypeFound_UpgradeAlreadyExists() {
220 CapabilityTypeDefinition type1 = new CapabilityTypeDefinition();
221 CapabilityTypeDefinition type1_1 = new CapabilityTypeDefinition();
222 List<Object> elementTypesToCreate = Arrays.asList(type1_1);
224 ImmutablePair<ElementTypeEnum, String> elementInfo = new ImmutablePair<>(ElementTypeEnum.CAPABILITY_TYPE, "TestCapability");
225 when(elementInfoGetter.apply(type1_1)).thenReturn(elementInfo);
227 when(validator.apply(type1_1)).thenReturn(Either.left(ActionStatus.OK));
228 when(elementFetcher.apply("TestCapability")).thenReturn(Either.left(type1));
229 when(elementUpgrader.apply(type1_1, type1)).thenReturn(Either.right(StorageOperationStatus.OK));
231 Either<List<ImmutablePair<Object, Boolean>>, ResponseFormat> result = commonImportManager.createElementTypesByDao(elementTypesToCreate , validator , elementInfoGetter, elementFetcher, elementAdder, elementUpgrader);
233 verify(elementAdder, never()).apply(Mockito.any());
234 verify(elementUpgrader).apply(type1_1, type1);
235 verify(janusGraphGenericDao).commit();
237 assertEquals(type1_1, result.left().value().get(0).getLeft());
238 assertEquals(false, result.left().value().get(0).getRight());