Autowired annotation for catalog-be
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / AdditionalInformationBusinessLogicTest.java
1 /*
2
3  * Copyright (c) 2018 AT&T Intellectual Property.
4
5  *
6
7  * Licensed under the Apache License, Version 2.0 (the "License");
8
9  * you may not use this file except in compliance with the License.
10
11  * You may obtain a copy of the License at
12
13  *
14
15  *     http://www.apache.org/licenses/LICENSE-2.0
16
17  *
18
19  * Unless required by applicable law or agreed to in writing, software
20
21  * distributed under the License is distributed on an "AS IS" BASIS,
22
23  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
25  * See the License for the specific language governing permissions and
26
27  * limitations under the License.
28
29  */
30 package org.openecomp.sdc.be.components.impl;
31
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.Resource;
50 import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
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.IAdditionalInformationOperation;
54 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
55 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
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;
60
61 import java.util.ArrayList;
62 import java.util.List;
63
64 import static org.mockito.ArgumentMatchers.anyString;
65 import static org.mockito.ArgumentMatchers.eq;
66 import static org.mockito.Mockito.when;
67
68 @RunWith(MockitoJUnitRunner.class)
69 public class AdditionalInformationBusinessLogicTest {
70         @InjectMocks
71         private AdditionalInformationBusinessLogic additionalInformationBusinessLogic;
72         @Mock
73         private IGraphLockOperation graphLockOperation;
74         @Mock
75         private UserValidations userValidations;
76         @Mock
77         private ToscaOperationFacade toscaOperationFacade;
78         @Mock
79         private ComponentsUtils componentsUtils;
80         @Mock
81         private JanusGraphDao janusGraphDao;
82         @Mock
83         private IAdditionalInformationOperation additionalInformationOperation;
84         @Mock
85         private Resource resource;
86
87         NodeTypeEnum nodeType = NodeTypeEnum.Resource;
88         static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
89
90         @Before
91         public void setUp() throws Exception {
92                 additionalInformationBusinessLogic.setUserValidations(userValidations);
93                 additionalInformationBusinessLogic.setJanusGraphDao(janusGraphDao);
94                 additionalInformationBusinessLogic.setComponentsUtils(componentsUtils);
95                 additionalInformationBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
96                 additionalInformationBusinessLogic.setGraphLockOperation(graphLockOperation);
97         }
98
99         @Test
100         public void testCreateAdditionalInformation() {
101                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
102                 String resourceId = "resourceId";
103                 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
104                 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
105                 User user = new User();
106                 String userId = "userId";
107                 user.setUserId(userId);
108                 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
109                 configurationManager.setConfiguration(new Configuration());
110                 configurationManager.getConfiguration().setAdditionalInformationMaxNumberOfKeys(0);
111                 when(additionalInformationBusinessLogic.validateUserExists(anyString(), anyString(), eq(false))).thenReturn(user);
112                 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(resource));
113                 when(graphLockOperation.lockComponent(resourceId, nodeType)).thenReturn(StorageOperationStatus.OK);
114                 when(additionalInformationOperation.getNumberOfAdditionalInformationParameters(nodeType,resourceId,true)).thenReturn(Either.left(0));
115                 when(additionalInformationOperation.createAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getKey(),additionalInfoParameterInfo.getValue(), true)).thenReturn(Either.left(additionalInformationDefinition));
116
117                 result = additionalInformationBusinessLogic.createAdditionalInformation(nodeType,resourceId,additionalInfoParameterInfo,userId);
118                 Assert.assertTrue(result.isLeft());
119         }
120
121         @Test
122         public void testUpdateAdditionalInformation() {
123                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
124                 String resourceId = "resourceId";
125                 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
126                 additionalInfoParameterInfo.setUniqueId(resourceId);
127                 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
128                 User user = new User();
129                 String userId = "userId";
130                 user.setUserId(userId);
131                 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(resource));
132                 when(graphLockOperation.lockComponent(resourceId, nodeType)).thenReturn(StorageOperationStatus.OK);
133                 when(additionalInformationOperation.updateAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), additionalInfoParameterInfo.getKey(), additionalInfoParameterInfo.getValue(), true)).thenReturn(Either.left(additionalInformationDefinition));
134
135                 result = additionalInformationBusinessLogic.updateAdditionalInformation(nodeType, resourceId, additionalInfoParameterInfo, userId);
136                 Assert.assertTrue(result.isLeft());
137         }
138
139         @Test
140         public void testDeleteAdditionalInformation() {
141                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
142                 String resourceId = "resourceId";
143                 String userId = "userId";
144                 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
145                 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
146                 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(resource));
147                 when(graphLockOperation.lockComponent(resourceId, nodeType)).thenReturn(StorageOperationStatus.OK);
148                 when(additionalInformationOperation.getAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), true)).thenReturn(Either.left(additionalInfoParameterInfo));
149                 when(additionalInformationOperation.deleteAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), true)).thenReturn(Either.left(additionalInformationDefinition));
150
151                 result = additionalInformationBusinessLogic.deleteAdditionalInformation(nodeType, resourceId, additionalInfoParameterInfo, userId);
152                 Assert.assertTrue(result.isLeft());
153         }
154
155         @Test
156         public void testGetAdditionalInformation() {
157                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
158                 String resourceId = "resourceId";
159                 String userId = "userId";
160                 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
161                 when(additionalInformationOperation.getAdditionalInformationParameter(nodeType, resourceId, additionalInfoParameterInfo.getUniqueId(), true)).thenReturn(Either.left(additionalInfoParameterInfo));
162
163                 result = additionalInformationBusinessLogic.getAdditionalInformation(nodeType, resourceId, additionalInfoParameterInfo, userId);
164                 Assert.assertTrue(result.isLeft());
165         }
166
167         @Test
168         public void testGetAllAdditionalInformation() {
169                 Either<AdditionalInformationDefinition, ResponseFormat> result;
170                 String resourceId = "resourceId";
171                 String userId = "userId";
172                 AdditionalInfoParameterInfo additionalInfoParameterInfo = getAdditionalInfoParamInfo();
173                 AdditionalInformationDefinition additionalInformationDefinition = getAdditionalInfoDef(additionalInfoParameterInfo);
174                 when(additionalInformationOperation.getAllAdditionalInformationParameters(nodeType, resourceId, false)).thenReturn(Either.left(additionalInformationDefinition));
175                 result = additionalInformationBusinessLogic.getAllAdditionalInformation(nodeType, resourceId, userId);
176                 Assert.assertTrue(result.isLeft());
177         }
178
179         private AdditionalInfoParameterInfo getAdditionalInfoParamInfo() {
180                 AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
181                 additionalInfoParameterInfo.setKey("key");
182                 additionalInfoParameterInfo.setValue("value");
183                 return additionalInfoParameterInfo;
184         }
185
186         private AdditionalInformationDefinition getAdditionalInfoDef(AdditionalInfoParameterInfo additionalInfoParameterInfo) {
187                 AdditionalInformationDefinition additionalInformationDefinition = new AdditionalInformationDefinition();
188                 List<AdditionalInfoParameterInfo> parameters = new ArrayList<>();
189                 parameters.add(additionalInfoParameterInfo);
190                 additionalInformationDefinition.setParameters(parameters);
191                 return additionalInformationDefinition;
192         }
193 }