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.mockito.ArgumentCaptor;
8 import org.mockito.Captor;
9 import org.openecomp.sdc.activityLog.ActivityLogManager;
10 import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
11 import org.openecomp.sdc.common.errors.CoreException;
12 import org.openecomp.sdc.common.errors.ErrorCategory;
13 import org.openecomp.sdc.common.errors.ErrorCode;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessType;
17 import org.openecomp.sdc.versioning.dao.types.Version;
18 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
19 import org.testng.Assert;
20 import org.testng.annotations.BeforeMethod;
21 import org.testng.annotations.Test;
23 import java.io.ByteArrayInputStream;
25 import java.nio.ByteBuffer;
26 import java.util.Arrays;
27 import java.util.Collection;
29 import static org.mockito.Mockito.doNothing;
30 import static org.mockito.Mockito.doReturn;
31 import static org.mockito.Mockito.doThrow;
32 import static org.mockito.Mockito.never;
33 import static org.mockito.Mockito.verify;
34 import static org.mockito.Matchers.eq;
36 public class ProcessManagerImplTest {
39 private static final String USER1 = "processesTestUser";
40 private static final String VSP_ID = "vsp";
41 private static final Version VERSION = new Version(0, 1);
42 private static final String COMPONENT_ID = "component";
43 private static final String PROCESS1_ID = "process1";
44 private static final String PROCESS2_ID = "process2";
45 private static final String ARTIFACT_NAME = "artifact.sh";
48 private VendorSoftwareProductDao vendorSoftwareProductDaoMock;
50 private ActivityLogManager activityLogManagerMock;
54 private ProcessManagerImpl processManager;
56 private ArgumentCaptor<ActivityLogEntity> activityLogEntityArg;
59 public void setUp() throws Exception {
60 MockitoAnnotations.initMocks(this);
64 public void testListWhenNone() {
65 Collection<ProcessEntity> processes =
66 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
67 Assert.assertEquals(processes.size(), 0);
71 public void testList() {
72 doReturn(Arrays.asList(
73 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID),
74 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID)))
75 .when(vendorSoftwareProductDaoMock).listProcesses(VSP_ID, VERSION, COMPONENT_ID);
77 Collection<ProcessEntity> actual =
78 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
79 Assert.assertEquals(actual.size(), 2);
83 public void testDeleteListWhenNone() {
84 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
85 verify(vendorSoftwareProductDaoMock, never()).deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
89 public void testDeleteList() {
90 ProcessEntity process1 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
91 ProcessEntity process2 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID);
92 doReturn(Arrays.asList(process1, process2))
93 .when(vendorSoftwareProductDaoMock).listProcesses(VSP_ID, VERSION, COMPONENT_ID);
94 doNothing().when(processManager)
95 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
96 doNothing().when(processManager)
97 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
99 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
101 verify(vendorSoftwareProductDaoMock).deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
102 verify(processManager)
103 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
104 verify(processManager)
105 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
109 public void testCreate() {
110 ProcessEntity processToCreate = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
111 processToCreate.setName("proc name");
113 doNothing().when(processManager)
114 .validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
115 doNothing().when(processManager)
116 .createUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
118 ProcessEntity process = processManager.createProcess(processToCreate, USER1);
119 Assert.assertNotNull(process);
120 process.setId(process.getId());
122 Assert.assertEquals(process, processToCreate);
125 @Test(expectedExceptions = CoreException.class)
126 public void testCreateWithExistingName_negative() {
127 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
128 process.setName("p1 name");
130 doThrow(new CoreException(
131 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
132 .when(processManager).validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, process.getName());
134 processManager.createProcess(process, USER1);
138 public void testUpdateNonExistingProcessId_negative() {
139 doReturn(null).when(vendorSoftwareProductDaoMock)
140 .getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
142 testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1,
143 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
146 @Test(expectedExceptions = CoreException.class)
147 public void testUpdateWithExistingName_negative() {
148 ProcessEntity existingProcess = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
149 doReturn(existingProcess).when
150 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
152 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
153 doThrow(new CoreException(
154 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
155 .when(processManager)
156 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
157 processToUpdate.getName());
159 processManager.updateProcess(processToUpdate, USER1);
163 public void testUpdate() {
164 ProcessEntity existingProcess = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
165 doReturn(existingProcess).when
166 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
168 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
169 doNothing().when(processManager)
170 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
171 processToUpdate.getName());
173 processManager.updateProcess(processToUpdate, USER1);
174 verify(vendorSoftwareProductDaoMock).updateProcess(processToUpdate);
179 public void testGetNonExistingProcessId_negative() {
180 testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
181 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
185 public void testGet() {
186 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
187 doReturn(process).when
188 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
189 ProcessEntity actual =
190 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
191 Assert.assertEquals(actual, process);
192 Assert.assertNull(actual.getArtifactName());
196 public void testGetAfterUploadArtifact() {
197 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
198 process.setArtifactName(ARTIFACT_NAME);
199 doReturn(process).when
200 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
201 ProcessEntity actual =
202 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
203 Assert.assertEquals(actual, process);
204 Assert.assertEquals(actual.getArtifactName(), ARTIFACT_NAME);
207 @Test(expectedExceptions = CoreException.class)
208 public void testDeleteNonExistingProcessId_negative() {
209 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
213 public void testDelete() {
214 ProcessEntity processToDelete = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
215 doReturn(processToDelete).when
216 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
217 doNothing().when(processManager).deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID,
218 processToDelete.getName());
220 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
221 verify(vendorSoftwareProductDaoMock).deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
222 verify(processManager)
223 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, processToDelete.getName());
227 public void testUploadArtifactNonExistingProcessId_negative() {
228 testUploadArtifact_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
229 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
233 public void testUploadArtifact() {
234 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
235 doReturn(process).when
236 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
238 byte[] artifactBytes = "bla bla".getBytes();
240 .uploadProcessArtifact(new ByteArrayInputStream(artifactBytes), ARTIFACT_NAME,
241 VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
242 verify(vendorSoftwareProductDaoMock)
243 .uploadProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, artifactBytes,
246 verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1));
247 ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue();
248 Assert.assertEquals(activityLogEntity.getVersionId(), String.valueOf(VERSION.getMajor()+1));
249 Assert.assertTrue(activityLogEntity.isSuccess());
253 public void testGetArtifactWhenNone_negative() {
254 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID, USER1,
255 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
259 public void testGetArtifactNonExistingProcessId_negative() {
260 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
261 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
265 public void testGetArtifact() {
266 ProcessEntity processArtifact =
267 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
268 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
269 doReturn(processArtifact).when(vendorSoftwareProductDaoMock)
270 .getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
273 processManager.getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
274 Assert.assertNotNull(actual);
278 public void testDeleteArtifactWhenNone_negative() {
279 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, PROCESS2_ID, USER1,
280 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
284 public void testDeleteArtifactNonExistingProcessId_negative() {
285 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, "non existing process id", USER1,
286 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
290 public void testDeleteArtifact() {
291 ProcessEntity processArtifact =
292 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
293 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
294 doReturn(processArtifact).when(vendorSoftwareProductDaoMock)
295 .getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
297 processManager.deleteProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
298 verify(vendorSoftwareProductDaoMock)
299 .deleteProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
303 private ProcessEntity createProcess(String vspId, Version version, String componentId,
305 ProcessEntity process = new ProcessEntity(vspId, version, componentId, processId);
306 process.setName(processId + " name");
307 process.setDescription(processId + " desc");
308 process.setType(ProcessType.Other);
312 private void testGet_negative(String vspId, Version version, String componentId, String processId,
313 String user, String expectedErrorCode) {
315 processManager.getProcess(vspId, version, componentId, processId, user);
317 } catch (CoreException exception) {
318 Assert.assertEquals(exception.code().id(), expectedErrorCode);
322 private void testUpdate_negative(String vspId, Version version, String componentId,
323 String processId, String user,
324 String expectedErrorCode) {
327 .updateProcess(new ProcessEntity(vspId, version, componentId, processId), user);
329 } catch (CoreException exception) {
330 Assert.assertEquals(exception.code().id(), expectedErrorCode);
334 private void testGetFile_negative(String vspId, Version version, String componentId,
335 String processId, String user, String expectedErrorCode) {
337 processManager.getProcessArtifact(vspId, version, componentId, processId, user);
339 } catch (CoreException exception) {
340 Assert.assertEquals(exception.code().id(), expectedErrorCode);
344 private void testUploadArtifact_negative(String vspId, Version version, String componentId,
345 String processId, String user,
346 String expectedErrorCode) {
349 .uploadProcessArtifact(new ByteArrayInputStream("bla bla".getBytes()), "artifact.sh",
350 vspId, version, componentId, processId, user);
352 } catch (CoreException exception) {
353 Assert.assertEquals(exception.code().id(), expectedErrorCode);
357 private void testDeleteArtifact_negative(String vspId, String componentId, String processId,
358 String user, String expectedErrorCode) {
360 processManager.deleteProcessArtifact(vspId, VERSION, componentId, processId, user);
362 } catch (CoreException exception) {
363 Assert.assertEquals(exception.code().id(), expectedErrorCode);