3 * Copyright (c) 2018 AT&T Intellectual Property.
7 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
19 * Unless required by applicable law or agreed to in writing, software
21 * distributed under the License is distributed on an "AS IS" BASIS,
23 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25 * See the License for the specific language governing permissions and
27 * limitations under the License.
30 package org.openecomp.sdc.be.components.impl;
32 import fj.data.Either;
33 import org.junit.Assert;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.junit.runner.RunWith;
37 import org.mockito.ArgumentMatchers;
38 import org.mockito.InjectMocks;
39 import org.mockito.Mock;
40 import org.mockito.junit.MockitoJUnitRunner;
41 import org.openecomp.sdc.be.components.validation.UserValidations;
42 import org.openecomp.sdc.be.config.Configuration;
43 import org.openecomp.sdc.be.config.ConfigurationManager;
44 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
45 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
46 import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo;
47 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
48 import org.openecomp.sdc.be.impl.ComponentsUtils;
49 import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
50 import org.openecomp.sdc.be.model.Resource;
51 import org.openecomp.sdc.be.model.User;
52 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
53 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
54 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
55 import org.openecomp.sdc.be.model.operations.impl.AdditionalInformationOperation;
56 import org.openecomp.sdc.common.api.ConfigurationSource;
57 import org.openecomp.sdc.common.impl.ExternalConfiguration;
58 import org.openecomp.sdc.common.impl.FSConfigurationSource;
59 import org.openecomp.sdc.exception.ResponseFormat;
61 import java.util.ArrayList;
62 import java.util.List;
64 import static org.mockito.ArgumentMatchers.anyString;
65 import static org.mockito.Mockito.when;
67 @RunWith(MockitoJUnitRunner.class)
68 public class AdditionalInformationBusinessLogicTest {
70 private AdditionalInformationBusinessLogic additionalInformationBusinessLogic;
72 private IGraphLockOperation graphLockOperation;
74 private UserValidations userValidations;
76 private ToscaOperationFacade toscaOperationFacade;
78 private ComponentsUtils componentsUtils;
80 private JanusGraphDao janusGraphDao;
82 private AdditionalInformationOperation additionalInformationOperation;
84 private Resource resource;
86 NodeTypeEnum nodeType = NodeTypeEnum.Resource;
87 static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
90 public void setUp() throws Exception {
91 additionalInformationBusinessLogic.setUserValidations(userValidations);
92 additionalInformationBusinessLogic.setJanusGraphDao(janusGraphDao);
93 additionalInformationBusinessLogic.setComponentsUtils(componentsUtils);
94 additionalInformationBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
95 additionalInformationBusinessLogic.setGraphLockOperation(graphLockOperation);
99 public void testCreateAdditionalInformation() {
100 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
101 String resourceId = "resourceId";
102 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
103 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
104 User user = new User();
105 String userId = "userId";
106 user.setUserId(userId);
107 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
108 configurationManager.setConfiguration(new Configuration());
109 configurationManager.getConfiguration().setAdditionalInformationMaxNumberOfKeys(0);
110 when(additionalInformationBusinessLogic.validateUserExists(anyString())).thenReturn(user);
111 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(resource));
112 when(graphLockOperation.lockComponent(resourceId, nodeType)).thenReturn(StorageOperationStatus.OK);
113 when(additionalInformationOperation.getNumberOfAdditionalInformationParameters(nodeType,resourceId,true)).thenReturn(Either.left(0));
114 when(additionalInformationOperation.createAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getKey(),additionalInfoParameterInfo.getValue(), true)).thenReturn(Either.left(additionalInformationDefinition));
116 result = additionalInformationBusinessLogic.createAdditionalInformation(nodeType,resourceId,additionalInfoParameterInfo,userId);
117 Assert.assertTrue(result.isLeft());
121 public void testUpdateAdditionalInformation() {
122 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
123 String resourceId = "resourceId";
124 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
125 additionalInfoParameterInfo.setUniqueId(resourceId);
126 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
127 User user = new User();
128 String userId = "userId";
129 user.setUserId(userId);
130 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(resource));
131 when(graphLockOperation.lockComponent(resourceId, nodeType)).thenReturn(StorageOperationStatus.OK);
132 when(additionalInformationOperation.updateAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), additionalInfoParameterInfo.getKey(), additionalInfoParameterInfo.getValue(), true)).thenReturn(Either.left(additionalInformationDefinition));
134 result = additionalInformationBusinessLogic.updateAdditionalInformation(nodeType, resourceId, additionalInfoParameterInfo, userId);
135 Assert.assertTrue(result.isLeft());
139 public void testDeleteAdditionalInformation() {
140 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
141 String resourceId = "resourceId";
142 String userId = "userId";
143 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
144 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
145 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(resource));
146 when(graphLockOperation.lockComponent(resourceId, nodeType)).thenReturn(StorageOperationStatus.OK);
147 when(additionalInformationOperation.getAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), true)).thenReturn(Either.left(additionalInfoParameterInfo));
148 when(additionalInformationOperation.deleteAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), true)).thenReturn(Either.left(additionalInformationDefinition));
150 result = additionalInformationBusinessLogic.deleteAdditionalInformation(nodeType, resourceId, additionalInfoParameterInfo, userId);
151 Assert.assertTrue(result.isLeft());
155 public void testGetAdditionalInformation() {
156 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
157 String resourceId = "resourceId";
158 String userId = "userId";
159 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
160 when(additionalInformationOperation.getAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), true)).thenReturn(Either.left(additionalInfoParameterInfo));
162 result = additionalInformationBusinessLogic.getAdditionalInformation(nodeType, resourceId, additionalInfoParameterInfo, userId);
163 Assert.assertTrue(result.isLeft());
167 public void testGetAllAdditionalInformation() {
168 Either<AdditionalInformationDefinition, ResponseFormat> result;
169 String resourceId = "resourceId";
170 String userId = "userId";
171 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
172 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
173 when(additionalInformationOperation.getAllAdditionalInformationParameters(nodeType, resourceId, false)).thenReturn(Either.left(additionalInformationDefinition));
174 result = additionalInformationBusinessLogic.getAllAdditionalInformation(nodeType, resourceId, userId);
175 Assert.assertTrue(result.isLeft());
178 private AdditionalInfoParameterInfo getAdditionalInfoParamInfo() {
179 AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
180 additionalInfoParameterInfo.setKey("key");
181 additionalInfoParameterInfo.setValue("value");
182 return additionalInfoParameterInfo;
185 private AdditionalInformationDefinition getAdditionalInfoDef(AdditionalInfoParameterInfo additionalInfoParameterInfo) {
186 AdditionalInformationDefinition additionalInformationDefinition = new AdditionalInformationDefinition();
187 List<AdditionalInfoParameterInfo> parameters = new ArrayList<>();
188 parameters.add(additionalInfoParameterInfo);
189 additionalInformationDefinition.setParameters(parameters);
190 return additionalInformationDefinition;