1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
3 import org.mockito.ArgumentCaptor;
4 import org.mockito.Captor;
5 import org.mockito.InjectMocks;
6 import org.mockito.Mock;
7 import org.mockito.MockitoAnnotations;
8 import org.mockito.Spy;
9 import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
10 import org.openecomp.sdc.common.errors.CoreException;
11 import org.openecomp.sdc.common.errors.ErrorCategory;
12 import org.openecomp.sdc.common.errors.ErrorCode;
13 import org.openecomp.sdc.logging.api.Logger;
14 import org.openecomp.sdc.logging.api.LoggerFactory;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessType;
18 import org.openecomp.sdc.versioning.dao.types.Version;
19 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
20 import org.testng.Assert;
21 import org.testng.annotations.BeforeMethod;
22 import org.testng.annotations.Test;
24 import java.io.ByteArrayInputStream;
26 import java.nio.ByteBuffer;
27 import java.util.Arrays;
28 import java.util.Collection;
30 import static org.mockito.Matchers.any;
31 import static org.mockito.Matchers.eq;
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 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 ProcessDao processDaoMock;
55 private ProcessManagerImpl processManager;
57 private ArgumentCaptor<ActivityLogEntity> activityLogEntityArg;
60 public void setUp() throws Exception {
61 MockitoAnnotations.initMocks(this);
65 public void testListWhenNone() {
66 Collection<ProcessEntity> processes =
67 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID);
68 Assert.assertEquals(processes.size(), 0);
72 public void testList() {
73 doReturn(Arrays.asList(
74 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID),
75 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID)))
76 .when(processDaoMock).list(any(ProcessEntity.class));
78 Collection<ProcessEntity> actual =
79 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID);
80 Assert.assertEquals(actual.size(), 2);
84 public void testDeleteListWhenNone() {
85 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
86 verify(processDaoMock, never()).delete(any(ProcessEntity.class));
90 public void testDeleteList() {
91 ProcessEntity process1 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
92 ProcessEntity process2 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID);
93 doReturn(Arrays.asList(process1, process2))
94 .when(processDaoMock).list(any(ProcessEntity.class));
95 doNothing().when(processManager)
96 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
97 doNothing().when(processManager)
98 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
100 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
102 verify(processDaoMock).deleteAll(eq(new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, null)));
103 verify(processManager)
104 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
105 verify(processManager)
106 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
110 public void testCreate() {
111 ProcessEntity processToCreate = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
112 processToCreate.setName("proc name");
114 doNothing().when(processManager)
115 .validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
116 doNothing().when(processManager)
117 .createUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
119 ProcessEntity process = processManager.createProcess(processToCreate);
120 Assert.assertNotNull(process);
121 process.setId(process.getId());
123 Assert.assertEquals(process, processToCreate);
126 @Test(expectedExceptions = CoreException.class)
127 public void testCreateWithExistingName_negative() {
128 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
129 process.setName("p1 name");
131 doThrow(new CoreException(
132 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
133 .when(processManager).validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, process.getName());
135 processManager.createProcess(process);
139 public void testUpdateNonExistingProcessId_negative() {
140 doReturn(null).when(processDaoMock).get(any(ProcessEntity.class));
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(processDaoMock).get(any(ProcessEntity.class));
151 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
152 doThrow(new CoreException(
153 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
154 .when(processManager)
155 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
156 processToUpdate.getName());
158 processManager.updateProcess(processToUpdate);
162 public void testUpdate() {
163 ProcessEntity existingProcess = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
164 doReturn(existingProcess).when(processDaoMock).get(any(ProcessEntity.class));
166 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
167 doNothing().when(processManager)
168 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
169 processToUpdate.getName());
171 processManager.updateProcess(processToUpdate);
172 verify(processDaoMock).update(processToUpdate);
177 public void testGetNonExistingProcessId_negative() {
178 testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
179 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
183 public void testGet() {
184 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
185 doReturn(process).when(processDaoMock).get(any(ProcessEntity.class));
186 ProcessEntity actual =
187 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
188 Assert.assertEquals(actual, process);
189 Assert.assertNull(actual.getArtifactName());
193 public void testGetAfterUploadArtifact() {
194 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
195 process.setArtifactName(ARTIFACT_NAME);
196 doReturn(process).when(processDaoMock).get(any(ProcessEntity.class));
197 ProcessEntity actual =
198 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
199 Assert.assertEquals(actual, process);
200 Assert.assertEquals(actual.getArtifactName(), ARTIFACT_NAME);
203 @Test(expectedExceptions = CoreException.class)
204 public void testDeleteNonExistingProcessId_negative() {
205 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
209 public void testDelete() {
210 ProcessEntity processToDelete = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
211 doReturn(processToDelete).when(processDaoMock)
212 .get(any(ProcessEntity.class));
213 doNothing().when(processManager).deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID,
214 processToDelete.getName());
216 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
217 verify(processDaoMock).delete(any(ProcessEntity.class));
218 verify(processManager)
219 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, processToDelete.getName());
223 public void testUploadArtifactNonExistingProcessId_negative() {
224 testUploadArtifact_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
225 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
229 public void testUploadArtifact() {
230 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
231 doReturn(process).when(processDaoMock).get(any(ProcessEntity.class));
233 byte[] artifactBytes = "bla bla".getBytes();
235 .uploadProcessArtifact(new ByteArrayInputStream(artifactBytes), ARTIFACT_NAME,
236 VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
237 verify(processDaoMock).uploadArtifact(any(ProcessEntity.class));
241 public void testGetArtifactWhenNone_negative() {
242 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID, USER1,
243 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
247 public void testGetArtifactNonExistingProcessId_negative() {
248 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
249 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
253 public void testGetArtifact() {
254 ProcessEntity processArtifact =
255 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
256 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
257 doReturn(processArtifact).when(processDaoMock)
258 .getArtifact(any(ProcessEntity.class));
261 processManager.getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
262 Assert.assertNotNull(actual);
266 public void testDeleteArtifactWhenNone_negative() {
267 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, PROCESS2_ID, USER1,
268 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
272 public void testDeleteArtifactNonExistingProcessId_negative() {
273 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, "non existing process id", USER1,
274 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
278 public void testDeleteArtifact() {
279 ProcessEntity processArtifact =
280 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
281 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
282 doReturn(processArtifact).when(processDaoMock)
283 .getArtifact(any(ProcessEntity.class));
285 processManager.deleteProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
286 verify(processDaoMock)
287 .deleteArtifact(any(ProcessEntity.class));
291 private ProcessEntity createProcess(String vspId, Version version, String componentId,
293 ProcessEntity process = new ProcessEntity(vspId, version, componentId, processId);
294 process.setName(processId + " name");
295 process.setDescription(processId + " desc");
296 process.setType(ProcessType.Other);
300 private void testGet_negative(String vspId, Version version, String componentId, String processId,
301 String user, String expectedErrorCode) {
303 processManager.getProcess(vspId, version, componentId, processId);
305 } catch (CoreException exception) {
306 log.debug("", exception);
307 Assert.assertEquals(exception.code().id(), expectedErrorCode);
311 private void testUpdate_negative(String vspId, Version version, String componentId,
312 String processId, String user,
313 String expectedErrorCode) {
316 .updateProcess(new ProcessEntity(vspId, version, componentId, processId));
318 } catch (CoreException exception) {
319 log.debug("", exception);
320 Assert.assertEquals(exception.code().id(), expectedErrorCode);
324 private void testGetFile_negative(String vspId, Version version, String componentId,
325 String processId, String user, String expectedErrorCode) {
327 processManager.getProcessArtifact(vspId, version, componentId, processId);
329 } catch (CoreException exception) {
330 log.debug("", exception);
331 Assert.assertEquals(exception.code().id(), expectedErrorCode);
335 private void testUploadArtifact_negative(String vspId, Version version, String componentId,
336 String processId, String user,
337 String expectedErrorCode) {
340 .uploadProcessArtifact(new ByteArrayInputStream("bla bla".getBytes()), "artifact.sh",
341 vspId, version, componentId, processId);
343 } catch (CoreException exception) {
344 log.error("", exception);
345 Assert.assertEquals(exception.code().id(), expectedErrorCode);
349 private void testDeleteArtifact_negative(String vspId, String componentId, String processId,
350 String user, String expectedErrorCode) {
352 processManager.deleteProcessArtifact(vspId, VERSION, componentId, processId);
354 } catch (CoreException exception) {
355 log.debug("", exception);
356 Assert.assertEquals(exception.code().id(), expectedErrorCode);