2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 Nokia. 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.junit.Assert.assertEquals;
23 //import static org.junit.Assert.assertTrue;
25 //import fj.data.Either;
26 //import java.util.ArrayList;
27 //import java.util.Collections;
28 //import java.util.HashMap;
29 //import java.util.List;
30 //import java.util.Map;
31 //import org.junit.Before;
32 //import org.junit.Test;
33 //import org.junit.runner.RunWith;
34 //import org.mockito.Mock;
35 //import org.mockito.Mockito;
36 //import org.mockito.junit.MockitoJUnitRunner;
37 //import org.openecomp.sdc.be.components.csar.CsarArtifactsAndGroupsBusinessLogic;
38 //import org.openecomp.sdc.be.components.csar.CsarBusinessLogic;
39 //import org.openecomp.sdc.be.components.csar.CsarInfo;
40 //import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentException;
41 //import org.openecomp.sdc.be.components.impl.exceptions.ByResponseFormatComponentException;
42 //import org.openecomp.sdc.be.components.impl.generic.GenericTypeBusinessLogic;
43 //import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
44 //import org.openecomp.sdc.be.components.merge.resource.ResourceDataMergeBusinessLogic;
45 //import org.openecomp.sdc.be.components.merge.utils.MergeInstanceUtils;
46 //import org.openecomp.sdc.be.components.validation.UserValidations;
47 //import org.openecomp.sdc.be.dao.api.ActionStatus;
48 //import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
49 //import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
50 //import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
51 //import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
52 //import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
53 //import org.openecomp.sdc.be.impl.ComponentsUtils;
54 //import org.openecomp.sdc.be.model.NodeTypeInfo;
55 //import org.openecomp.sdc.be.model.ParsedToscaYamlInfo;
56 //import org.openecomp.sdc.be.model.Resource;
57 //import org.openecomp.sdc.be.model.UploadComponentInstanceInfo;
58 //import org.openecomp.sdc.be.model.User;
59 //import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
60 //import org.openecomp.sdc.be.model.category.CategoryDefinition;
61 //import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
62 //import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
63 //import org.openecomp.sdc.be.model.jsonjanusgraph.operations.InterfaceOperation;
64 //import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
65 //import org.openecomp.sdc.be.model.operations.api.ICapabilityTypeOperation;
66 //import org.openecomp.sdc.be.model.operations.api.IElementOperation;
67 //import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
68 //import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation;
69 //import org.openecomp.sdc.be.model.operations.api.IGroupOperation;
70 //import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation;
71 //import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
72 //import org.openecomp.sdc.be.model.operations.impl.GroupInstanceOperation;
73 //import org.openecomp.sdc.be.model.operations.impl.GroupOperation;
74 //import org.openecomp.sdc.be.model.operations.impl.GroupTypeOperation;
75 //import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
76 //import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
77 //import org.openecomp.sdc.exception.ResponseFormat;
79 //@RunWith(MockitoJUnitRunner.class)
80 public class ResourceBusinessLogicMockitoTest {
82 // private static final String RESOURCE_NAME = "resourceName";
83 // private static final String USER_ID = "userId";
84 // private static final String VALIDATE_RESOURCE_NAME_EXISTS = "validate Resource Name Exists";
85 // private static final String CSAR_UUID = "CsarUUID";
86 // private static final String PAYLOAD = "PAYLOAD";
87 // private static final String ANY = "ANY";
90 // private IElementOperation elementDao;
92 // private GroupOperation groupOperation;
94 // private GroupInstanceOperation groupInstanceOperation;
96 // private GroupTypeOperation groupTypeOperation;
98 // private GroupBusinessLogic groupBusinessLogic;
100 // private InterfaceOperation interfaceOperation;
102 // private InterfaceLifecycleOperation interfaceLifecycleTypeOperation;
104 // private ArtifactsBusinessLogic artifactsBusinessLogic;
106 // private ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
108 // private ResourceImportManager resourceImportManager;
110 // private InputsBusinessLogic inputsBusinessLogic;
112 // private CompositionBusinessLogic compositionBusinessLogic;
114 // private ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic;
116 // private CsarArtifactsAndGroupsBusinessLogic csarArtifactsAndGroupsBusinessLogic;
118 // private MergeInstanceUtils mergeInstanceUtils;
120 // private UiComponentDataConverter uiComponentDataConverter;
122 // private CsarBusinessLogic csarBusinessLogic;
124 // private ArtifactsOperations artifactToscaOperation;
126 // private LifecycleBusinessLogic lifecycleManager;
128 // private ApplicationDataTypeCache applicationDataTypeCache;
130 // private ComponentsUtils componentUtils;
132 // private ICapabilityTypeOperation capabilityTypeOperation;
134 // private UserValidations userValidations;
136 // private User user;
138 // private ToscaOperationFacade toscaOperationFacade;
140 // private JanusGraphDao janusGraphDao;
142 // private CsarInfo csarInfo;
144 // private Map<String, NodeTypeInfo> nodeTypeInfo;
146 // private ParsedToscaYamlInfo parsedToscaYamlInfo;
148 // private IGraphLockOperation graphLockOperation;
150 // private GenericTypeBusinessLogic genericTypeBusinessLogic;
152 // private ResourceBusinessLogic resourceBusinessLogic;
155 // public void setUp() throws Exception {
156 // resourceBusinessLogic = new ResourceBusinessLogic(elementDao,
158 // groupInstanceOperation,
159 // groupTypeOperation,
160 // groupBusinessLogic,
161 // interfaceOperation,
162 // interfaceLifecycleTypeOperation,
163 // artifactsBusinessLogic,
164 // componentInstanceBusinessLogic,
165 // resourceImportManager,
166 // inputsBusinessLogic,
167 // compositionBusinessLogic,
168 // resourceDataMergeBusinessLogic,
169 // csarArtifactsAndGroupsBusinessLogic,
170 // mergeInstanceUtils,
171 // uiComponentDataConverter,
172 // csarBusinessLogic,
173 // artifactToscaOperation);
175 // resourceBusinessLogic.setLifecycleManager(lifecycleManager);
176 // resourceBusinessLogic.setApplicationDataTypeCache(applicationDataTypeCache);
177 // resourceBusinessLogic.setComponentsUtils(componentUtils);
178 // resourceBusinessLogic.setCapabilityTypeOperation(capabilityTypeOperation);
179 // resourceBusinessLogic.setUserValidations(userValidations);
180 // resourceBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
181 // resourceBusinessLogic.setJanusGraphDao(janusGraphDao);
182 // resourceBusinessLogic.setGraphLockOperation(graphLockOperation);
183 // resourceBusinessLogic.setGenericTypeBusinessLogic(genericTypeBusinessLogic);
187 // public void testGetters() {
188 // assertEquals(resourceBusinessLogic.getComponentInstanceBL(), componentInstanceBusinessLogic);
189 // assertEquals(resourceBusinessLogic.getElementDao(), elementDao);
190 // assertEquals(resourceBusinessLogic.getLifecycleBusinessLogic(), lifecycleManager);
191 // assertEquals(resourceBusinessLogic.getApplicationDataTypeCache(), applicationDataTypeCache);
192 // assertEquals(resourceBusinessLogic.getComponentsUtils(), componentUtils);
193 // assertEquals(resourceBusinessLogic.getCapabilityTypeOperation(), capabilityTypeOperation);
197 // public void shouldValidateResourceNameExistsIfDataModelResponseIsRight() {
198 // Mockito.when(userValidations.validateUserExists(USER_ID, false)).thenReturn(user);
199 // Mockito.when(toscaOperationFacade.validateComponentNameUniqueness(RESOURCE_NAME, ResourceTypeEnum.ABSTRACT, ComponentTypeEnum.RESOURCE)).thenReturn(Either.right(StorageOperationStatus.DECLARED_INPUT_USED_BY_OPERATION));
200 // Mockito.when(componentUtils.convertFromStorageResponse(StorageOperationStatus.DECLARED_INPUT_USED_BY_OPERATION)).thenReturn(ActionStatus.DECLARED_INPUT_USED_BY_OPERATION);
201 // Either<Map<String, Boolean>, ResponseFormat> response = resourceBusinessLogic
202 // .validateResourceNameExists(RESOURCE_NAME, ResourceTypeEnum.ABSTRACT, USER_ID);
203 // assertTrue(response.isRight());
206 // @Test(expected = ByResponseFormatComponentException.class)
207 // public void shouldThrowExceptionOnCreateResourceIfCsarUUIDIsNotEmptyIfAlreadyExist() {
208 // Mockito.when(elementDao
209 // .getAllCategories(NodeTypeEnum.ResourceNewCategory, false)).thenReturn(Either.left(getCategoryDefinitions()));
210 // Mockito.when(toscaOperationFacade.validateToscaResourceNameExists(Mockito.any())).thenReturn(Either.left(true));
211 // Resource resource = getResource();
212 // Map<String, byte[]> csarUIPayload = Collections.emptyMap();
213 // Mockito.when(csarBusinessLogic.getCsarInfo(resource, null, user, csarUIPayload, PAYLOAD)).thenReturn(csarInfo);
214 // Mockito.when(csarInfo.extractNodeTypesInfo()).thenReturn(nodeTypeInfo);
215 // Map<String, UploadComponentInstanceInfo> nonEmptyMap = new HashMap<>();
216 // nonEmptyMap.put(ANY, new UploadComponentInstanceInfo());
217 // resource.setResourceType(ResourceTypeEnum.ABSTRACT);
218 // Mockito.when(graphLockOperation.lockComponentByName(Mockito.any(), Mockito.any())).thenReturn(StorageOperationStatus.OK);
219 // Mockito.when(parsedToscaYamlInfo.getInstances()).thenReturn(nonEmptyMap);
220 // Mockito.when(csarBusinessLogic.getParsedToscaYamlInfo(null, null, nodeTypeInfo, csarInfo, null)).thenReturn(
221 // parsedToscaYamlInfo);
222 // Mockito.when(toscaOperationFacade.validateComponentNameExists(
223 // resource.getName(), resource.getResourceType(), resource.getComponentType())).thenReturn(Either.left(true));
224 // Mockito.when(genericTypeBusinessLogic.fetchDerivedFromGenericType(Mockito.any())).thenReturn(Either.left(resource));
225 // resourceBusinessLogic.createResource(resource, AuditingActionEnum.ADD_USER, user, csarUIPayload, PAYLOAD);
228 // @Test(expected = ByResponseFormatComponentException.class)
229 // public void shouldThrowExceptionOnCreateResourceIfCsarUUIDIsNotEmptyButComponentNameNotExists() {
230 // Mockito.when(elementDao
231 // .getAllCategories(NodeTypeEnum.ResourceNewCategory, false)).thenReturn(Either.left(getCategoryDefinitions()));
232 // Mockito.when(toscaOperationFacade.validateToscaResourceNameExists(Mockito.any())).thenReturn(Either.left(true));
233 // Resource resource = getResource();
234 // Map<String, byte[]> csarUIPayload = Collections.emptyMap();
235 // Mockito.when(csarBusinessLogic.getCsarInfo(resource, null, user, csarUIPayload, PAYLOAD)).thenReturn(csarInfo);
236 // Mockito.when(csarInfo.extractNodeTypesInfo()).thenReturn(nodeTypeInfo);
237 // Map<String, UploadComponentInstanceInfo> nonEmptyMap = new HashMap<>();
238 // nonEmptyMap.put(ANY, new UploadComponentInstanceInfo());
239 // resource.setResourceType(ResourceTypeEnum.ABSTRACT);
240 // Mockito.when(graphLockOperation.lockComponentByName(Mockito.any(), Mockito.any())).thenReturn(StorageOperationStatus.OK);
241 // Mockito.when(parsedToscaYamlInfo.getInstances()).thenReturn(nonEmptyMap);
242 // Mockito.when(csarBusinessLogic.getParsedToscaYamlInfo(null, null, nodeTypeInfo, csarInfo, null)).thenReturn(
243 // parsedToscaYamlInfo);
244 // Mockito.when(toscaOperationFacade.validateComponentNameExists(
245 // resource.getName(), resource.getResourceType(), resource.getComponentType())).thenReturn(Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND));
246 // Mockito.when(genericTypeBusinessLogic.fetchDerivedFromGenericType(Mockito.any())).thenReturn(Either.left(resource));
247 // resourceBusinessLogic.createResource(resource, AuditingActionEnum.ADD_USER, user, csarUIPayload, PAYLOAD);
250 // @Test(expected = ByActionStatusComponentException.class)
251 // public void shouldThrowExceptionOnCreateResourceIfCsarUUIDIsNotEmptyButEmptyDerivedFromGenericType() {
252 // Mockito.when(elementDao
253 // .getAllCategories(NodeTypeEnum.ResourceNewCategory, false)).thenReturn(Either.left(getCategoryDefinitions()));
254 // Mockito.when(toscaOperationFacade.validateToscaResourceNameExists(Mockito.any())).thenReturn(Either.left(true));
255 // Resource resource = getResource();
256 // Map<String, byte[]> csarUIPayload = Collections.emptyMap();
257 // Mockito.when(csarBusinessLogic.getCsarInfo(resource, null, user, csarUIPayload, PAYLOAD)).thenReturn(csarInfo);
258 // Mockito.when(csarInfo.extractNodeTypesInfo()).thenReturn(nodeTypeInfo);
259 // Map<String, UploadComponentInstanceInfo> nonEmptyMap = new HashMap<>();
260 // nonEmptyMap.put(ANY, new UploadComponentInstanceInfo());
261 // resource.setResourceType(ResourceTypeEnum.ABSTRACT);
262 // Mockito.when(graphLockOperation.lockComponentByName(Mockito.any(), Mockito.any())).thenReturn(StorageOperationStatus.OK);
263 // Mockito.when(parsedToscaYamlInfo.getInstances()).thenReturn(nonEmptyMap);
264 // Mockito.when(genericTypeBusinessLogic.fetchDerivedFromGenericType(Mockito.any())).thenReturn(Either.right(new ResponseFormat()));
265 // Mockito.when(csarBusinessLogic.getParsedToscaYamlInfo(null, null, nodeTypeInfo, csarInfo, null)).thenReturn(
266 // parsedToscaYamlInfo);
267 // resourceBusinessLogic.createResource(resource, AuditingActionEnum.ADD_USER, user, csarUIPayload, PAYLOAD);
270 // @Test(expected = ByResponseFormatComponentException.class)
271 // public void shouldThrowExceptionOnCreateResourceIfCsarUUIDIsNotEmptyButInvalidLockResponse() {
272 // Mockito.when(elementDao
273 // .getAllCategories(NodeTypeEnum.ResourceNewCategory, false)).thenReturn(Either.left(getCategoryDefinitions()));
274 // Mockito.when(toscaOperationFacade.validateToscaResourceNameExists(Mockito.any())).thenReturn(Either.left(true));
275 // Resource resource = getResource();
276 // Map<String, byte[]> csarUIPayload = Collections.emptyMap();
277 // Mockito.when(csarBusinessLogic.getCsarInfo(resource, null, user, csarUIPayload, PAYLOAD)).thenReturn(csarInfo);
278 // Mockito.when(csarInfo.extractNodeTypesInfo()).thenReturn(nodeTypeInfo);
279 // Map<String, UploadComponentInstanceInfo> nonEmptyMap = new HashMap<>();
280 // nonEmptyMap.put(ANY, new UploadComponentInstanceInfo());
281 // resource.setResourceType(ResourceTypeEnum.ABSTRACT);
282 // Mockito.when(parsedToscaYamlInfo.getInstances()).thenReturn(nonEmptyMap);
283 // Mockito.when(graphLockOperation.lockComponentByName(Mockito.any(), Mockito.any())).thenReturn(StorageOperationStatus.BAD_REQUEST);
284 // Mockito.when(csarBusinessLogic.getParsedToscaYamlInfo(null, null, nodeTypeInfo, csarInfo, null)).thenReturn(
285 // parsedToscaYamlInfo);
286 // resourceBusinessLogic.createResource(resource, AuditingActionEnum.ADD_USER, user, csarUIPayload, PAYLOAD);
290 // @Test(expected = ByActionStatusComponentException.class)
291 // public void shouldThrowExceptionOnNonPnfResource() {
292 // Mockito.when(elementDao
293 // .getAllCategories(NodeTypeEnum.ResourceNewCategory, false)).thenReturn(Either.left(getCategoryDefinitions()));
294 // Mockito.when(toscaOperationFacade.validateToscaResourceNameExists(Mockito.any())).thenReturn(Either.left(true));
295 // Resource resource = getResource();
296 // Map<String, byte[]> csarUIPayload = Collections.emptyMap();
297 // Mockito.when(csarBusinessLogic.getCsarInfo(resource, null, user, csarUIPayload, PAYLOAD)).thenReturn(csarInfo);
298 // Mockito.when(csarInfo.extractNodeTypesInfo()).thenReturn(nodeTypeInfo);
299 // Mockito.when(csarBusinessLogic.getParsedToscaYamlInfo(null, null, nodeTypeInfo, csarInfo, null)).thenReturn(
300 // parsedToscaYamlInfo);
301 // resourceBusinessLogic.createResource(resource, AuditingActionEnum.ADD_USER, user, csarUIPayload, PAYLOAD);
304 // @Test(expected = ByActionStatusComponentException.class)
305 // public void shouldThrowExceptionOnFailedToRetrieveResourceCategoriesFromJanusGraph() {
306 // Mockito.when(elementDao
307 // .getAllCategories(NodeTypeEnum.ResourceNewCategory, false)).thenReturn(Either.right(ActionStatus.ARTIFACT_NOT_FOUND));
308 // Resource resource = getResource();
309 // resourceBusinessLogic.createResource(resource, AuditingActionEnum.ADD_USER, user, Collections.emptyMap(), PAYLOAD);
312 // @Test(expected = ByActionStatusComponentException.class)
313 // public void shouldThrowExceptionOnRightDataModelResponse() {
314 // Mockito.when(elementDao
315 // .getAllCategories(NodeTypeEnum.ResourceNewCategory, false)).thenReturn(Either.left(getCategoryDefinitions()));
316 // Mockito.when(toscaOperationFacade.validateToscaResourceNameExists(Mockito.any())).thenReturn(Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND));
317 // Resource resource = getResource();
318 // resourceBusinessLogic.createResource(resource, AuditingActionEnum.ADD_USER, user, Collections.emptyMap(), PAYLOAD);
321 // private Resource getResource() {
322 // Resource resource = new Resource();
323 // resource.setCsarUUID(CSAR_UUID);
324 // resource.setName(ANY);
325 // resource.setDescription(ANY);
326 // resource.setCategories(getCategoryDefinitions());
327 // resource.setVendorName(ANY);
328 // resource.setVendorRelease(ANY);
329 // List<String> tags = new ArrayList<>();
331 // resource.setTags(tags);
332 // resource.setContactId(ANY);
333 // resource.setIcon(ANY);
334 // List<String> derivedFrom = new ArrayList<>();
335 // derivedFrom.add(ANY);
336 // resource.setDerivedFrom(derivedFrom);
340 // private List<CategoryDefinition> getCategoryDefinitions() {
341 // List<CategoryDefinition> categories = new ArrayList<>();
342 // CategoryDefinition categoryDefinition = new CategoryDefinition();
343 // categoryDefinition.setName(ANY);
344 // SubCategoryDefinition subcategory = new SubCategoryDefinition();
345 // subcategory.setName(ANY);
346 // categoryDefinition.addSubCategory(subcategory);
347 // categories.add(categoryDefinition);
348 // return categories;