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.logging.api.Logger;
15 import org.openecomp.sdc.logging.api.LoggerFactory;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
18 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessType;
19 import org.openecomp.sdc.versioning.dao.types.Version;
20 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
21 import org.testng.Assert;
22 import org.testng.annotations.BeforeMethod;
23 import org.testng.annotations.Test;
25 import java.io.ByteArrayInputStream;
27 import java.nio.ByteBuffer;
28 import java.util.Arrays;
29 import java.util.Collection;
31 import static org.mockito.Mockito.doNothing;
32 import static org.mockito.Mockito.doReturn;
33 import static org.mockito.Mockito.doThrow;
34 import static org.mockito.Mockito.never;
35 import static org.mockito.Mockito.verify;
36 import static org.mockito.Matchers.eq;
38 public class ProcessManagerImplTest {
40 private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());
42 private static final String USER1 = "processesTestUser";
43 private static final String VSP_ID = "vsp";
44 private static final Version VERSION = new Version(0, 1);
45 private static final String COMPONENT_ID = "component";
46 private static final String PROCESS1_ID = "process1";
47 private static final String PROCESS2_ID = "process2";
48 private static final String ARTIFACT_NAME = "artifact.sh";
51 private VendorSoftwareProductDao vendorSoftwareProductDaoMock;
53 private ActivityLogManager activityLogManagerMock;
57 private ProcessManagerImpl processManager;
59 private ArgumentCaptor<ActivityLogEntity> activityLogEntityArg;
62 public void setUp() throws Exception {
63 MockitoAnnotations.initMocks(this);
67 public void testListWhenNone() {
68 Collection<ProcessEntity> processes =
69 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
70 Assert.assertEquals(processes.size(), 0);
74 public void testList() {
75 doReturn(Arrays.asList(
76 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID),
77 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID)))
78 .when(vendorSoftwareProductDaoMock).listProcesses(VSP_ID, VERSION, COMPONENT_ID);
80 Collection<ProcessEntity> actual =
81 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
82 Assert.assertEquals(actual.size(), 2);
86 public void testDeleteListWhenNone() {
87 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
88 verify(vendorSoftwareProductDaoMock, never()).deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
92 public void testDeleteList() {
93 ProcessEntity process1 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
94 ProcessEntity process2 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID);
95 doReturn(Arrays.asList(process1, process2))
96 .when(vendorSoftwareProductDaoMock).listProcesses(VSP_ID, VERSION, COMPONENT_ID);
97 doNothing().when(processManager)
98 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
99 doNothing().when(processManager)
100 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
102 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID, USER1);
104 verify(vendorSoftwareProductDaoMock).deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
105 verify(processManager)
106 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
107 verify(processManager)
108 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
112 public void testCreate() {
113 ProcessEntity processToCreate = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
114 processToCreate.setName("proc name");
116 doNothing().when(processManager)
117 .validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
118 doNothing().when(processManager)
119 .createUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
121 ProcessEntity process = processManager.createProcess(processToCreate, USER1);
122 Assert.assertNotNull(process);
123 process.setId(process.getId());
125 Assert.assertEquals(process, processToCreate);
128 @Test(expectedExceptions = CoreException.class)
129 public void testCreateWithExistingName_negative() {
130 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
131 process.setName("p1 name");
133 doThrow(new CoreException(
134 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
135 .when(processManager).validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, process.getName());
137 processManager.createProcess(process, USER1);
141 public void testUpdateNonExistingProcessId_negative() {
142 doReturn(null).when(vendorSoftwareProductDaoMock)
143 .getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
145 testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1,
146 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
149 @Test(expectedExceptions = CoreException.class)
150 public void testUpdateWithExistingName_negative() {
151 ProcessEntity existingProcess = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
152 doReturn(existingProcess).when
153 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
155 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
156 doThrow(new CoreException(
157 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
158 .when(processManager)
159 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
160 processToUpdate.getName());
162 processManager.updateProcess(processToUpdate, USER1);
166 public void testUpdate() {
167 ProcessEntity existingProcess = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
168 doReturn(existingProcess).when
169 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
171 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
172 doNothing().when(processManager)
173 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
174 processToUpdate.getName());
176 processManager.updateProcess(processToUpdate, USER1);
177 verify(vendorSoftwareProductDaoMock).updateProcess(processToUpdate);
182 public void testGetNonExistingProcessId_negative() {
183 testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
184 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
188 public void testGet() {
189 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
190 doReturn(process).when
191 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
192 ProcessEntity actual =
193 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
194 Assert.assertEquals(actual, process);
195 Assert.assertNull(actual.getArtifactName());
199 public void testGetAfterUploadArtifact() {
200 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
201 process.setArtifactName(ARTIFACT_NAME);
202 doReturn(process).when
203 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
204 ProcessEntity actual =
205 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
206 Assert.assertEquals(actual, process);
207 Assert.assertEquals(actual.getArtifactName(), ARTIFACT_NAME);
210 @Test(expectedExceptions = CoreException.class)
211 public void testDeleteNonExistingProcessId_negative() {
212 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
216 public void testDelete() {
217 ProcessEntity processToDelete = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
218 doReturn(processToDelete).when
219 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
220 doNothing().when(processManager).deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID,
221 processToDelete.getName());
223 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
224 verify(vendorSoftwareProductDaoMock).deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
225 verify(processManager)
226 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, processToDelete.getName());
230 public void testUploadArtifactNonExistingProcessId_negative() {
231 testUploadArtifact_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
232 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
236 public void testUploadArtifact() {
237 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
238 doReturn(process).when
239 (vendorSoftwareProductDaoMock).getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
241 byte[] artifactBytes = "bla bla".getBytes();
243 .uploadProcessArtifact(new ByteArrayInputStream(artifactBytes), ARTIFACT_NAME,
244 VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
245 verify(vendorSoftwareProductDaoMock)
246 .uploadProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, artifactBytes,
249 verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1));
250 ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue();
251 Assert.assertEquals(activityLogEntity.getVersionId(), String.valueOf(VERSION.getMajor()+1));
252 Assert.assertTrue(activityLogEntity.isSuccess());
256 public void testGetArtifactWhenNone_negative() {
257 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID, USER1,
258 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
262 public void testGetArtifactNonExistingProcessId_negative() {
263 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
264 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
268 public void testGetArtifact() {
269 ProcessEntity processArtifact =
270 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
271 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
272 doReturn(processArtifact).when(vendorSoftwareProductDaoMock)
273 .getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
276 processManager.getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
277 Assert.assertNotNull(actual);
281 public void testDeleteArtifactWhenNone_negative() {
282 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, PROCESS2_ID, USER1,
283 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
287 public void testDeleteArtifactNonExistingProcessId_negative() {
288 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, "non existing process id", USER1,
289 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
293 public void testDeleteArtifact() {
294 ProcessEntity processArtifact =
295 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
296 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
297 doReturn(processArtifact).when(vendorSoftwareProductDaoMock)
298 .getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
300 processManager.deleteProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1);
301 verify(vendorSoftwareProductDaoMock)
302 .deleteProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
306 private ProcessEntity createProcess(String vspId, Version version, String componentId,
308 ProcessEntity process = new ProcessEntity(vspId, version, componentId, processId);
309 process.setName(processId + " name");
310 process.setDescription(processId + " desc");
311 process.setType(ProcessType.Other);
315 private void testGet_negative(String vspId, Version version, String componentId, String processId,
316 String user, String expectedErrorCode) {
318 processManager.getProcess(vspId, version, componentId, processId, user);
320 } catch (CoreException exception) {
321 log.debug("",exception);
322 Assert.assertEquals(exception.code().id(), expectedErrorCode);
326 private void testUpdate_negative(String vspId, Version version, String componentId,
327 String processId, String user,
328 String expectedErrorCode) {
331 .updateProcess(new ProcessEntity(vspId, version, componentId, processId), user);
333 } catch (CoreException exception) {
334 log.debug("",exception);
335 Assert.assertEquals(exception.code().id(), expectedErrorCode);
339 private void testGetFile_negative(String vspId, Version version, String componentId,
340 String processId, String user, String expectedErrorCode) {
342 processManager.getProcessArtifact(vspId, version, componentId, processId, user);
344 } catch (CoreException exception) {
345 log.debug("",exception);
346 Assert.assertEquals(exception.code().id(), expectedErrorCode);
350 private void testUploadArtifact_negative(String vspId, Version version, String componentId,
351 String processId, String user,
352 String expectedErrorCode) {
355 .uploadProcessArtifact(new ByteArrayInputStream("bla bla".getBytes()), "artifact.sh",
356 vspId, version, componentId, processId, user);
358 } catch (CoreException exception) {
359 log.error("",exception);
360 Assert.assertEquals(exception.code().id(), expectedErrorCode);
364 private void testDeleteArtifact_negative(String vspId, String componentId, String processId,
365 String user, String expectedErrorCode) {
367 processManager.deleteProcessArtifact(vspId, VERSION, componentId, processId, user);
369 } catch (CoreException exception) {
370 log.debug("",exception);
371 Assert.assertEquals(exception.code().id(), expectedErrorCode);