2 * Copyright © 2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.vendorsoftwareproduct.impl;
19 import org.junit.After;
20 import org.junit.Assert;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.mockito.ArgumentCaptor;
24 import org.mockito.Captor;
25 import org.mockito.InjectMocks;
26 import org.mockito.Mock;
27 import org.mockito.MockitoAnnotations;
28 import org.mockito.Spy;
29 import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
30 import org.openecomp.sdc.common.errors.CoreException;
31 import org.openecomp.sdc.common.errors.ErrorCategory;
32 import org.openecomp.sdc.common.errors.ErrorCode;
33 import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao;
34 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
35 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessType;
36 import org.openecomp.sdc.versioning.dao.types.Version;
37 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
39 import java.io.ByteArrayInputStream;
41 import java.nio.ByteBuffer;
42 import java.util.Arrays;
43 import java.util.Collection;
45 import static org.mockito.ArgumentMatchers.any;
46 import static org.mockito.ArgumentMatchers.eq;
47 import static org.mockito.Mockito.doNothing;
48 import static org.mockito.Mockito.doReturn;
49 import static org.mockito.Mockito.doThrow;
50 import static org.mockito.Mockito.never;
51 import static org.mockito.Mockito.verify;
53 public class ProcessManagerImplTest {
55 private static final String USER1 = "processesTestUser";
56 private static final String VSP_ID = "vsp";
57 private static final Version VERSION = new Version(0, 1);
58 private static final String COMPONENT_ID = "component";
59 private static final String PROCESS1_ID = "process1";
60 private static final String PROCESS2_ID = "process2";
61 private static final String ARTIFACT_NAME = "artifact.sh";
64 private ProcessDao processDaoMock;
68 private ProcessManagerImpl processManager;
70 private ArgumentCaptor<ActivityLogEntity> activityLogEntityArg;
73 public void setUp() throws Exception {
74 MockitoAnnotations.initMocks(this);
78 public void tearDown() {
79 processManager = null;
84 public void testListWhenNone() {
85 Collection<ProcessEntity> processes =
86 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID);
87 Assert.assertEquals(processes.size(), 0);
91 public void testList() {
92 doReturn(Arrays.asList(
93 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID),
94 createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID)))
95 .when(processDaoMock).list(any(ProcessEntity.class));
97 Collection<ProcessEntity> actual =
98 processManager.listProcesses(VSP_ID, VERSION, COMPONENT_ID);
99 Assert.assertEquals(actual.size(), 2);
103 public void testDeleteListWhenNone() {
104 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
105 verify(processDaoMock, never()).delete(any(ProcessEntity.class));
109 public void testDeleteList() {
110 ProcessEntity process1 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
111 ProcessEntity process2 = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID);
112 doReturn(Arrays.asList(process1, process2))
113 .when(processDaoMock).list(any(ProcessEntity.class));
114 doNothing().when(processManager)
115 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
116 doNothing().when(processManager)
117 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
119 processManager.deleteProcesses(VSP_ID, VERSION, COMPONENT_ID);
121 verify(processDaoMock).deleteAll(eq(new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, null)));
122 verify(processManager)
123 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process1.getName());
124 verify(processManager)
125 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, process2.getName());
129 public void testCreate() {
130 ProcessEntity processToCreate = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
131 processToCreate.setName("proc name");
133 doNothing().when(processManager)
134 .validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
135 doNothing().when(processManager)
136 .createUniqueName(VSP_ID, VERSION, COMPONENT_ID, processToCreate.getName());
138 ProcessEntity process = processManager.createProcess(processToCreate);
139 Assert.assertNotNull(process);
140 process.setId(process.getId());
142 Assert.assertEquals(process, processToCreate);
145 @Test(expected = CoreException.class)
146 public void testCreateWithExistingName_negative() {
147 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, null);
148 process.setName("p1 name");
150 doThrow(new CoreException(
151 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
152 .when(processManager).validateUniqueName(VSP_ID, VERSION, COMPONENT_ID, process.getName());
154 processManager.createProcess(process);
158 public void testUpdateNonExistingProcessId_negative() {
159 doReturn(null).when(processDaoMock).get(any(ProcessEntity.class));
161 testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID, USER1,
162 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
165 @Test(expected = CoreException.class)
166 public void testUpdateWithExistingName_negative() {
167 ProcessEntity existingProcess = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
168 doReturn(existingProcess).when(processDaoMock).get(any(ProcessEntity.class));
170 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
171 doThrow(new CoreException(
172 new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build()))
173 .when(processManager)
174 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
175 processToUpdate.getName());
177 processManager.updateProcess(processToUpdate);
181 public void testUpdate() {
182 ProcessEntity existingProcess = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
183 doReturn(existingProcess).when(processDaoMock).get(any(ProcessEntity.class));
185 ProcessEntity processToUpdate = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
186 doNothing().when(processManager)
187 .updateUniqueName(VSP_ID, VERSION, COMPONENT_ID, existingProcess.getName(),
188 processToUpdate.getName());
190 processManager.updateProcess(processToUpdate);
191 verify(processDaoMock).update(processToUpdate);
196 public void testGetNonExistingProcessId_negative() {
197 testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
198 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
202 public void testGet() {
203 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
204 doReturn(process).when(processDaoMock).get(any(ProcessEntity.class));
205 ProcessEntity actual =
206 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
207 Assert.assertEquals(actual, process);
208 Assert.assertNull(actual.getArtifactName());
212 public void testGetAfterUploadArtifact() {
213 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
214 process.setArtifactName(ARTIFACT_NAME);
215 doReturn(process).when(processDaoMock).get(any(ProcessEntity.class));
216 ProcessEntity actual =
217 processManager.getProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
218 Assert.assertEquals(actual, process);
219 Assert.assertEquals(actual.getArtifactName(), ARTIFACT_NAME);
222 @Test(expected = CoreException.class)
223 public void testDeleteNonExistingProcessId_negative() {
224 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
228 public void testDelete() {
229 ProcessEntity processToDelete = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
230 doReturn(processToDelete).when(processDaoMock)
231 .get(any(ProcessEntity.class));
232 doNothing().when(processManager).deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID,
233 processToDelete.getName());
235 processManager.deleteProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
236 verify(processDaoMock).delete(any(ProcessEntity.class));
237 verify(processManager)
238 .deleteUniqueValue(VSP_ID, VERSION, COMPONENT_ID, processToDelete.getName());
242 public void testUploadArtifactNonExistingProcessId_negative() {
243 testUploadArtifact_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
244 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
248 public void testUploadArtifact() {
249 ProcessEntity process = createProcess(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
250 doReturn(process).when(processDaoMock).get(any(ProcessEntity.class));
252 byte[] artifactBytes = "bla bla".getBytes();
254 .uploadProcessArtifact(new ByteArrayInputStream(artifactBytes), ARTIFACT_NAME,
255 VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
256 verify(processDaoMock).uploadArtifact(any(ProcessEntity.class));
260 public void testGetArtifactWhenNone_negative() {
261 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, PROCESS2_ID, USER1,
262 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
266 public void testGetArtifactNonExistingProcessId_negative() {
267 testGetFile_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing process id", USER1,
268 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
272 public void testGetArtifact() {
273 ProcessEntity processArtifact =
274 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
275 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
276 doReturn(processArtifact).when(processDaoMock)
277 .getArtifact(any(ProcessEntity.class));
280 processManager.getProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
281 Assert.assertNotNull(actual);
286 public void testDeleteArtifactWhenNone_negative() {
287 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, PROCESS2_ID, USER1,
288 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
292 public void testDeleteArtifactNonExistingProcessId_negative() {
293 testDeleteArtifact_negative(VSP_ID, COMPONENT_ID, "non existing process id", USER1,
294 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
298 public void testDeleteArtifact() {
299 ProcessEntity processArtifact =
300 new ProcessEntity(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
301 processArtifact.setArtifact(ByteBuffer.wrap("bla bla".getBytes()));
302 doReturn(processArtifact).when(processDaoMock)
303 .getArtifact(any(ProcessEntity.class));
305 processManager.deleteProcessArtifact(VSP_ID, VERSION, COMPONENT_ID, PROCESS1_ID);
306 verify(processDaoMock)
307 .deleteArtifact(any(ProcessEntity.class));
311 private ProcessEntity createProcess(String vspId, Version version, String componentId,
313 ProcessEntity process = new ProcessEntity(vspId, version, componentId, processId);
314 process.setName(processId + " name");
315 process.setDescription(processId + " desc");
316 process.setType(ProcessType.Other);
320 private void testGet_negative(String vspId, Version version, String componentId, String processId,
321 String user, String expectedErrorCode) {
323 processManager.getProcess(vspId, version, componentId, processId);
325 } catch (CoreException exception) {
326 Assert.assertEquals(exception.code().id(), expectedErrorCode);
330 private void testUpdate_negative(String vspId, Version version, String componentId,
331 String processId, String user,
332 String expectedErrorCode) {
335 .updateProcess(new ProcessEntity(vspId, version, componentId, processId));
337 } catch (CoreException exception) {
338 Assert.assertEquals(exception.code().id(), expectedErrorCode);
342 private void testGetFile_negative(String vspId, Version version, String componentId,
343 String processId, String user, String expectedErrorCode) {
345 processManager.getProcessArtifact(vspId, version, componentId, processId);
347 } catch (CoreException exception) {
348 Assert.assertEquals(exception.code().id(), expectedErrorCode);
352 private void testUploadArtifact_negative(String vspId, Version version, String componentId,
353 String processId, String user,
354 String expectedErrorCode) {
357 .uploadProcessArtifact(new ByteArrayInputStream("bla bla".getBytes()), "artifact.sh",
358 vspId, version, componentId, processId);
360 } catch (CoreException exception) {
361 Assert.assertEquals(exception.code().id(), expectedErrorCode);
365 private void testDeleteArtifact_negative(String vspId, String componentId, String processId,
366 String user, String expectedErrorCode) {
368 processManager.deleteProcessArtifact(vspId, VERSION, componentId, processId);
370 } catch (CoreException exception) {
371 Assert.assertEquals(exception.code().id(), expectedErrorCode);