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.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.ArgumentMatchers;
36 import org.mockito.InjectMocks;
37 import org.mockito.Mock;
38 import org.mockito.junit.MockitoJUnitRunner;
39 import org.openecomp.sdc.be.components.validation.UserValidations;
40 import org.openecomp.sdc.be.config.Configuration;
41 import org.openecomp.sdc.be.config.ConfigurationManager;
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.datatypes.elements.AdditionalInfoParameterInfo;
45 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
46 import org.openecomp.sdc.be.impl.ComponentsUtils;
47 import org.openecomp.sdc.be.model.LifecycleStateEnum;
48 import org.openecomp.sdc.be.model.Resource;
49 import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
50 import org.openecomp.sdc.be.model.User;
51 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
52 import org.openecomp.sdc.be.model.operations.api.IAdditionalInformationOperation;
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.common.api.ConfigurationSource;
56 import org.openecomp.sdc.common.impl.ExternalConfiguration;
57 import org.openecomp.sdc.common.impl.FSConfigurationSource;
58 import org.openecomp.sdc.exception.ResponseFormat;
59 import static org.assertj.core.api.Assertions.assertThat;
61 import java.util.ArrayList;
62 import java.util.List;
64 import static org.mockito.ArgumentMatchers.anyString;
65 import static org.mockito.ArgumentMatchers.eq;
66 import static org.mockito.Mockito.when;
68 @RunWith(MockitoJUnitRunner.class)
69 public class AdditionalInformationBusinessLogicTest {
71 private AdditionalInformationBusinessLogic additionalInformationBusinessLogic;
73 private IGraphLockOperation graphLockOperation;
75 private UserValidations userValidations;
77 private ToscaOperationFacade toscaOperationFacade;
79 private ComponentsUtils componentsUtils;
81 private TitanDao titanDao;
83 private IAdditionalInformationOperation additionalInformationOperation;
85 private AdditionalInformationBusinessLogic createTestSubject() {
86 return new AdditionalInformationBusinessLogic();
89 static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
93 public void testCreateAdditionalInformation() {
94 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
95 String resourceId = "resourceId";
96 AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
97 additionalInfoParameterInfo.setKey("key");
98 additionalInfoParameterInfo.setValue("value");
99 AdditionalInformationDefinition additionalInformationDefinition = new AdditionalInformationDefinition();
100 List<AdditionalInfoParameterInfo> parameters = new ArrayList<>();
101 parameters.add(additionalInfoParameterInfo);
102 additionalInformationDefinition.setParameters(parameters);
103 User user = new User();
104 String userId = "userId";
105 user.setUserId(userId);
106 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
107 configurationManager.setConfiguration(new Configuration());
108 configurationManager.getConfiguration().setAdditionalInformationMaxNumberOfKeys(0);
109 Resource component = new Resource();
110 component.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
111 component.setLastUpdaterUserId(userId);
112 when(additionalInformationBusinessLogic.validateUserExists(anyString(), anyString(), eq(false))).thenReturn(user);
113 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(component));
114 when(graphLockOperation.lockComponent(resourceId, NodeTypeEnum.Resource)).thenReturn(StorageOperationStatus.OK);
115 when(additionalInformationOperation.getNumberOfAdditionalInformationParameters(NodeTypeEnum.Resource,resourceId,true)).thenReturn(Either.left(0));
116 when(additionalInformationOperation.createAdditionalInformationParameter(NodeTypeEnum.Resource, resourceId, additionalInfoParameterInfo.getKey(),additionalInfoParameterInfo.getValue(), true)).thenReturn(Either.left(additionalInformationDefinition));
118 result = additionalInformationBusinessLogic.createAdditionalInformation(NodeTypeEnum.Resource,resourceId,additionalInfoParameterInfo,userId);
119 assertThat(result.isLeft());
124 public void testUpdateAdditionalInformation() throws Exception {
125 AdditionalInformationBusinessLogic testSubject;
126 NodeTypeEnum nodeType = null;
127 String resourceId = "";
128 AdditionalInfoParameterInfo additionalInfoParameterInfo = null;
129 String additionalInformationUid = "";
131 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
134 testSubject = createTestSubject();
139 public void testDeleteAdditionalInformation() throws Exception {
140 AdditionalInformationBusinessLogic testSubject;
141 NodeTypeEnum nodeType = null;
142 String resourceId = "";
143 AdditionalInfoParameterInfo additionalInfoParameterInfo = null;
144 String additionalInformationUid = "";
146 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
149 testSubject = createTestSubject();
154 public void testGetAdditionalInformation() throws Exception {
155 AdditionalInformationBusinessLogic testSubject;
156 NodeTypeEnum nodeType = null;
157 String resourceId = "";
158 AdditionalInfoParameterInfo additionalInfoParameterInfo = null;
159 String additionalInformationUid = "";
161 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
164 testSubject = createTestSubject();
169 public void testGetAllAdditionalInformation() throws Exception {
170 AdditionalInformationBusinessLogic testSubject;
171 NodeTypeEnum nodeType = null;
172 String resourceId = "";
173 String additionalInformationUid = "";
175 Either<AdditionalInformationDefinition, ResponseFormat> result;
178 testSubject = createTestSubject();