1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.mockito.Spy;
7 import org.openecomp.sdc.common.errors.CoreException;
8 import org.openecomp.sdc.common.errors.ErrorCategory;
9 import org.openecomp.sdc.common.errors.ErrorCode;
10 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao;
11 import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao;
12 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
13 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity;
14 import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
15 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
16 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
17 import org.openecomp.sdc.vendorsoftwareproduct.types.ListComputeResponse;
18 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
19 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
20 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
21 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComputeData;
22 import org.openecomp.sdc.versioning.dao.types.Version;
23 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
24 import org.testng.Assert;
25 import org.testng.annotations.BeforeMethod;
26 import org.testng.annotations.Test;
28 import java.util.Arrays;
29 import java.util.Collection;
31 import static org.mockito.Matchers.anyObject;
32 import static org.mockito.Mockito.doNothing;
33 import static org.mockito.Mockito.doReturn;
34 import static org.mockito.Mockito.doThrow;
35 import static org.mockito.Mockito.never;
36 import static org.mockito.Mockito.verify;
38 public class ComputeManagerImplTest {
40 private static final String COMPUTE_NOT_EXIST_MSG =
41 "Vendor Software Product COMPUTE with Id compute1 does not exist for Vendor Software Product with " +
42 "id VSP_ID and version version_id";
44 private static final String VSP_ID = "VSP_ID";
45 private static final Version VERSION = new Version("version_id");
46 private static final String COMPONENT_ID = "COMPONENT_ID";
47 private static final String COMPUTE1_ID = "compute1";
48 private static final String COMPUTE2_ID = "compute2";
51 private ComputeDao computeDao;
53 private CompositionEntityDataManager compositionEntityDataManagerMock;
55 private VendorSoftwareProductInfoDao vspInfoDao;
57 private DeploymentFlavorDao deploymentFlavorDao;
60 private ComputeManagerImpl computeManager;
63 public void setUp() throws Exception {
64 MockitoAnnotations.initMocks(this);
68 public void testListWhenNone() {
69 Collection<ListComputeResponse> computes =
70 computeManager.listComputes(VSP_ID, VERSION, COMPONENT_ID);
71 Assert.assertEquals(computes.size(), 0);
75 public void testList() {
76 doReturn(Arrays.asList(
77 createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID),
78 createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE2_ID)))
79 .when(computeDao).list(anyObject());
82 Collection<ListComputeResponse> computes =
83 computeManager.listComputes(VSP_ID, VERSION, COMPONENT_ID);
84 Assert.assertEquals(computes.size(), 2);
85 for (ListComputeResponse compute : computes) {
86 Assert.assertEquals(compute.getComputeEntity().getComputeCompositionData().getName(),
87 COMPUTE1_ID.equals(compute.getComputeEntity().getId())
94 public void testCreateOnNotManualCompute_negative() {
95 testCreate_negative(new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, null),
96 VendorSoftwareProductErrorCodes.ADD_COMPUTE_NOT_ALLOWED_IN_HEAT_ONBOARDING);
100 public void testCreateManualCompute() {
101 ComputeEntity expected = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
102 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
103 doNothing().when(computeManager)
104 .validateUniqueName(VSP_ID, VERSION, COMPONENT_ID,
105 expected.getComputeCompositionData().getName());
106 doNothing().when(computeManager)
107 .createUniqueName(VSP_ID, VERSION, COMPONENT_ID,
108 expected.getComputeCompositionData().getName());
109 String questionnaireSchema = "{}";
110 doReturn(questionnaireSchema).when(computeManager).getComputeQuestionnaireSchema(anyObject());
112 computeManager.createCompute(expected);
113 verify(computeDao).create(expected);
116 @Test(expectedExceptions = CoreException.class)
117 public void testCreateManualComputeWithDuplicateName() {
118 ComputeEntity expected = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
119 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
121 doThrow(new CoreException(
122 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
123 .when(computeManager).validateUniqueName(VSP_ID, VERSION, COMPONENT_ID,
124 expected.getComputeCompositionData().getName());
126 computeManager.createCompute(expected);
130 public void testUpdateNonExistingComputeId_negative() {
131 testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID,
132 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
136 public void testUpdateCompute() {
137 ComputeEntity retrieved = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
138 doReturn(retrieved).when(computeDao).get(anyObject());
140 doReturn(new CompositionEntityValidationData(CompositionEntityType.compute, COMPUTE1_ID))
141 .when(compositionEntityDataManagerMock)
142 .validateEntity(anyObject(), anyObject(), anyObject());
144 ComputeEntity computeEntity = new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
145 ComputeData computeData = new ComputeData();
146 computeData.setName(COMPUTE1_ID + "name");
147 computeData.setDescription(COMPUTE1_ID + "desc updated");
148 computeEntity.setComputeCompositionData(computeData);
150 doNothing().when(computeManager)
151 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, retrieved.getComputeCompositionData().getName(),
152 computeData.getName());
154 CompositionEntityValidationData validationData =
155 computeManager.updateCompute(computeEntity);
156 Assert.assertTrue(validationData == null || validationData.getErrors() == null);
157 verify(computeDao).update(computeEntity);
161 public void testIllegalComputeUpdate() {
162 doReturn(createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID))
163 .when(computeDao).get(anyObject());
165 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
167 CompositionEntityValidationData toBeReturned =
168 new CompositionEntityValidationData(CompositionEntityType.compute, COMPUTE1_ID);
169 toBeReturned.setErrors(Arrays.asList("error1", "error2"));
170 doReturn(toBeReturned)
171 .when(compositionEntityDataManagerMock)
172 .validateEntity(anyObject(), anyObject(), anyObject());
174 ComputeEntity computeEntity = new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
175 ComputeData computeData = new ComputeData();
176 computeData.setName(COMPUTE1_ID + "_name_updated");
177 computeData.setDescription(COMPUTE1_ID + " desc updated");
178 computeEntity.setComputeCompositionData(computeData);
180 CompositionEntityValidationData validationData =
181 computeManager.updateCompute(computeEntity);
182 Assert.assertNotNull(validationData);
183 Assert.assertEquals(validationData.getErrors().size(), 2);
185 verify(computeDao, never()).update(computeEntity);
189 public void testUpdateHEATComputeName() throws Exception {
190 doReturn(createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID))
191 .when(computeDao).get(anyObject());
192 ComputeEntity computeEntity = new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
193 ComputeData computeData = new ComputeData();
194 computeData.setName(COMPUTE1_ID + " name updated");
195 computeData.setDescription(COMPUTE1_ID + " desc updated");
196 computeEntity.setComputeCompositionData(computeData);
199 computeManager.updateCompute(computeEntity);
200 } catch (CoreException ex) {
202 .assertEquals(ex.code().id(), VendorSoftwareProductErrorCodes.UPDATE_COMPUTE_NOT_ALLOWED);
207 public void testUpdateManualComputeQuestionnaire() throws Exception {
208 String json = "{\"md5\" :\"FFDSD33SS\"}";
209 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
210 doReturn(new ComputeEntity(null, null, null, null)).when(computeDao).get(anyObject());
213 .updateComputeQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID, json);
214 verify(computeDao).updateQuestionnaireData(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID, json);
218 public void testGetNonExistingComputeId_negative() {
219 testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing compute id",
220 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
224 public void testGet() {
225 ComputeEntity expected = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
226 doReturn(expected).when(computeDao).get(anyObject());
227 String compositionSchema = "schema string";
228 doReturn(compositionSchema).when(computeManager).getComputeCompositionSchema(anyObject());
230 CompositionEntityResponse<ComputeData> response =
231 computeManager.getCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
232 Assert.assertEquals(response.getId(), expected.getId());
234 .assertEquals(response.getData().getName(), expected.getComputeCompositionData().getName());
235 Assert.assertEquals(response.getData().getDescription(), expected.getComputeCompositionData().
237 Assert.assertEquals(response.getSchema(), compositionSchema);
241 public void testGetQuestionnaire() throws Exception {
242 ComputeEntity compute = new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
243 compute.setQuestionnaireData("{}");
244 doReturn(compute).when(computeDao)
245 .getQuestionnaireData(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
247 String schema = "schema string";
249 doReturn(schema).when(computeManager).getComputeQuestionnaireSchema(anyObject());
251 QuestionnaireResponse questionnaire =
252 computeManager.getComputeQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
254 Assert.assertNotNull(questionnaire);
255 Assert.assertEquals(questionnaire.getData(), compute.getQuestionnaireData());
256 Assert.assertEquals(questionnaire.getSchema(), schema);
257 Assert.assertNull(questionnaire.getErrorMessage());
261 public void testDeleteOnNotManualCompute() {
262 ComputeEntity expected = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
263 doReturn(expected).when(computeDao).get(anyObject());
264 testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID,
265 VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
269 public void testDeleteOnManualCompute() {
270 ComputeEntity expected = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
271 doReturn(expected).when(computeDao).get(anyObject());
272 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
273 doNothing().when(computeManager).deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID,
274 expected.getComputeCompositionData().getName());
276 computeManager.deleteCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
277 verify(computeDao).delete(anyObject());
281 public void testDeleteOnNotExistCompute() {
282 testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID,
283 VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
287 private void testDelete_negative(String vspId, Version version, String componentId,
289 String expectedErrorCode) {
291 computeManager.deleteCompute(vspId, version, componentId, computeId);
293 } catch (CoreException exception) {
294 Assert.assertEquals(exception.code().id(), expectedErrorCode);
298 private void testGet_negative(String vspId, Version version, String componentId, String computeId,
299 String expectedErrorCode) {
301 computeManager.getCompute(vspId, version, componentId, computeId);
303 } catch (CoreException exception) {
304 Assert.assertEquals(exception.code().id(), expectedErrorCode);
308 private void testList_negative(String vspId, Version version, String componentId,
309 String expectedErrorCode, String expectedErrorMsg) {
311 computeManager.listComputes(vspId, version, componentId);
313 } catch (CoreException exception) {
314 Assert.assertEquals(exception.code().id(), expectedErrorCode);
315 Assert.assertEquals(exception.getMessage(), expectedErrorMsg);
320 private void testUpdate_negative(String vspId, Version version, String componentId,
321 String computeId, String expectedErrorCode) {
323 computeManager.updateCompute(new ComputeEntity(vspId, version, componentId, computeId));
325 } catch (CoreException exception) {
326 Assert.assertEquals(exception.code().id(), expectedErrorCode);
330 private void testCreate_negative(ComputeEntity computeEntity1, String expectedErrorCode) {
332 computeManager.createCompute(computeEntity1);
334 } catch (CoreException exception) {
335 Assert.assertEquals(exception.code().id(), expectedErrorCode);
339 private static ComputeEntity createCompute(String vspId, Version version, String compId,
341 ComputeEntity computeEntity1 = new ComputeEntity(vspId, version, compId, computeId);
342 ComputeData computeData = new ComputeData();
343 computeData.setName(computeId + "name");
344 computeData.setDescription(computeId + "desc");
345 computeEntity1.setComputeCompositionData(computeData);
346 return computeEntity1;