3 * ============LICENSE_START=======================================================
4 * Copyright (C) 2022 Nordix Foundation.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.openecomp.sdcrests.vsp.rest.services;
25 import static org.junit.jupiter.api.Assertions.assertEquals;
26 import static org.junit.jupiter.api.Assertions.assertFalse;
27 import static org.junit.jupiter.api.Assertions.assertNotNull;
28 import static org.junit.jupiter.api.Assertions.assertThrows;
29 import static org.junit.jupiter.api.Assertions.assertTrue;
30 import static org.mockito.ArgumentMatchers.any;
31 import static org.mockito.Mockito.doThrow;
32 import static org.mockito.Mockito.when;
34 import java.util.Date;
35 import java.util.List;
36 import java.util.Optional;
37 import java.util.UUID;
38 import org.junit.jupiter.api.BeforeEach;
39 import org.junit.jupiter.api.Test;
40 import org.mockito.InjectMocks;
41 import org.mockito.Mock;
42 import org.mockito.MockitoAnnotations;
43 import org.openecomp.sdc.common.errors.CoreException;
44 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductManager;
45 import org.openecomp.sdc.vendorsoftwareproduct.dao.VspUploadStatusRecordDao;
46 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
47 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspUploadStatus;
48 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspUploadStatusRecord;
49 import org.openecomp.sdc.versioning.dao.types.Version;
50 import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspUploadStatusDto;
51 import org.openecomp.sdcrests.vsp.rest.exception.OrchestrationTemplateCandidateUploadManagerExceptionSupplier;
53 class OrchestrationTemplateCandidateUploadManagerImplTest {
56 private VspUploadStatusRecordDao vspUploadStatusRecordDao;
58 private VendorSoftwareProductManager vendorSoftwareProductManager;
60 private OrchestrationTemplateCandidateUploadManagerImpl packageUploadManagerImpl;
64 MockitoAnnotations.openMocks(this);
68 void startUploadSuccessTest() {
70 final String vspId = "vspId";
71 final String vspVersionId = "vspVersionId";
72 final String username = "username";
73 when(vendorSoftwareProductManager.getVsp(vspId, new Version(vspVersionId))).thenReturn(new VspDetails());
75 final VspUploadStatusDto vspUploadStatusDto = packageUploadManagerImpl.putUploadInProgress(vspId, vspVersionId, username);
77 assertEquals(vspId, vspUploadStatusDto.getVspId());
78 assertEquals(vspVersionId, vspUploadStatusDto.getVspVersionId());
79 assertEquals(VspUploadStatus.UPLOADING, vspUploadStatusDto.getStatus());
80 assertFalse(vspUploadStatusDto.isComplete());
81 assertNotNull(vspUploadStatusDto.getLockId());
82 assertNotNull(vspUploadStatusDto.getCreated());
86 void startUpload_uploadAlreadyInProgressTest() {
88 final String vspId = "vspId";
89 final String vspVersionId = "vspVersionId";
90 final String username = "username";
91 when(vspUploadStatusRecordDao.findAllInProgress(vspId, vspVersionId)).thenReturn(List.of(new VspUploadStatusRecord()));
92 when(vendorSoftwareProductManager.getVsp(vspId, new Version(vspVersionId))).thenReturn(new VspDetails());
94 final CoreException actualCoreException =
95 assertThrows(CoreException.class, () -> packageUploadManagerImpl.putUploadInProgress(vspId, vspVersionId, username));
96 final CoreException expectedCoreException = OrchestrationTemplateCandidateUploadManagerExceptionSupplier.vspUploadAlreadyInProgress(vspId,
98 assertEquals(expectedCoreException.code().id(), actualCoreException.code().id());
99 assertEquals(expectedCoreException.code().message(), actualCoreException.code().message());
103 void startUpload_vspNotFoundTest() {
105 final String vspId = "vspId";
106 final String vspVersionId = "vspVersionId";
107 final String username = "username";
109 final CoreException actualCoreException =
110 assertThrows(CoreException.class, () -> packageUploadManagerImpl.putUploadInProgress(vspId, vspVersionId, username));
111 final CoreException expectedCoreException = OrchestrationTemplateCandidateUploadManagerExceptionSupplier.vspNotFound(vspId, vspVersionId)
113 assertEquals(expectedCoreException.code().id(), actualCoreException.code().id());
114 assertEquals(expectedCoreException.code().message(), actualCoreException.code().message());
118 void startUpload_createLockErrorTest() {
120 final String vspId = "vspId";
121 final String vspVersionId = "vspVersionId";
122 final String username = "username";
124 when(vendorSoftwareProductManager.getVsp(vspId, new Version(vspVersionId))).thenReturn(new VspDetails());
125 doThrow(new RuntimeException()).when(vspUploadStatusRecordDao).create(any(VspUploadStatusRecord.class));
126 final CoreException actualCoreException =
127 assertThrows(CoreException.class, () -> packageUploadManagerImpl.putUploadInProgress(vspId, vspVersionId, username));
128 final CoreException expectedCoreException =
129 OrchestrationTemplateCandidateUploadManagerExceptionSupplier.couldNotCreateLock(vspId, vspVersionId, new RuntimeException()).get();
130 assertEquals(expectedCoreException.code().id(), actualCoreException.code().id());
131 assertEquals(expectedCoreException.code().message(), actualCoreException.code().message());
135 void finishUploadSuccessTest() {
137 final String vspId = "vspId";
138 final String vspVersionId = "vspVersionId";
139 final UUID lockId = UUID.randomUUID();
140 final String username = "username";
141 final VspUploadStatusRecord vspUploadStatusRecord = new VspUploadStatusRecord();
142 vspUploadStatusRecord.setVspId(vspId);
143 vspUploadStatusRecord.setVspVersionId(vspVersionId);
144 vspUploadStatusRecord.setLockId(lockId);
145 vspUploadStatusRecord.setStatus(VspUploadStatus.UPLOADING);
146 vspUploadStatusRecord.setCreated(new Date());
147 when(vspUploadStatusRecordDao.findByVspIdAndVersionIdAndLockId(vspId, vspVersionId, lockId))
148 .thenReturn(Optional.of(vspUploadStatusRecord));
150 final VspUploadStatusDto actualVspUploadStatus = packageUploadManagerImpl
151 .putUploadAsFinished(vspId, vspVersionId, lockId, VspUploadStatus.SUCCESS, username);
153 assertEquals(vspId, actualVspUploadStatus.getVspId());
154 assertEquals(vspVersionId, actualVspUploadStatus.getVspVersionId());
155 assertEquals(VspUploadStatus.SUCCESS, actualVspUploadStatus.getStatus());
156 assertEquals(vspUploadStatusRecord.getLockId(), actualVspUploadStatus.getLockId());
157 assertEquals(vspUploadStatusRecord.getCreated(), actualVspUploadStatus.getCreated());
158 assertNotNull(actualVspUploadStatus.getUpdated());
159 assertTrue(actualVspUploadStatus.isComplete());
163 void finishUploadIllegalStatusTest() {
164 final UUID lockId = UUID.randomUUID();
165 IllegalArgumentException actualException = assertThrows(IllegalArgumentException.class,
166 () -> packageUploadManagerImpl.putUploadAsFinished("vspId", "vspVersionId", lockId, VspUploadStatus.UPLOADING, "username"));
167 IllegalArgumentException expectedException = OrchestrationTemplateCandidateUploadManagerExceptionSupplier.invalidCompleteStatus(
168 VspUploadStatus.UPLOADING).get();
169 assertEquals(expectedException.getMessage(), actualException.getMessage());
171 actualException = assertThrows(IllegalArgumentException.class,
172 () -> packageUploadManagerImpl
173 .putUploadAsFinished("vspId", "vspVersionId", lockId, VspUploadStatus.PROCESSING, "username")
175 expectedException = OrchestrationTemplateCandidateUploadManagerExceptionSupplier.invalidCompleteStatus(
176 VspUploadStatus.PROCESSING).get();
177 assertEquals(expectedException.getMessage(), actualException.getMessage());
181 void finishUploadCouldNotFindLockTest() {
183 final String vspId = "vspId";
184 final String vspVersionId = "vspVersionId";
185 final UUID lockId = UUID.randomUUID();
186 final String username = "username";
187 final VspUploadStatusRecord vspUploadStatusRecord = new VspUploadStatusRecord();
188 vspUploadStatusRecord.setVspId(vspId);
189 vspUploadStatusRecord.setVspVersionId(vspVersionId);
190 vspUploadStatusRecord.setLockId(lockId);
191 vspUploadStatusRecord.setStatus(VspUploadStatus.UPLOADING);
192 vspUploadStatusRecord.setCreated(new Date());
193 when(vspUploadStatusRecordDao.findByVspIdAndVersionIdAndLockId(vspId, vspVersionId, lockId))
194 .thenReturn(Optional.empty());
196 final CoreException actualException = assertThrows(CoreException.class,
197 () -> packageUploadManagerImpl.putUploadAsFinished(vspId, vspVersionId, lockId, VspUploadStatus.SUCCESS, username));
199 final CoreException expectedException =
200 OrchestrationTemplateCandidateUploadManagerExceptionSupplier.couldNotFindLock(lockId, vspId, vspVersionId).get();
201 assertEquals(expectedException.getMessage(), actualException.getMessage());
205 void finishUpload_uploadAlreadyFinishedTest() {
207 final String vspId = "vspId";
208 final String vspVersionId = "vspVersionId";
209 final UUID lockId = UUID.randomUUID();
210 final String username = "username";
211 final VspUploadStatusRecord vspUploadStatusRecord = new VspUploadStatusRecord();
212 vspUploadStatusRecord.setVspId(vspId);
213 vspUploadStatusRecord.setVspVersionId(vspVersionId);
214 vspUploadStatusRecord.setLockId(lockId);
215 vspUploadStatusRecord.setIsComplete(true);
216 when(vspUploadStatusRecordDao.findByVspIdAndVersionIdAndLockId(vspId, vspVersionId, lockId))
217 .thenReturn(Optional.of(vspUploadStatusRecord));
219 final CoreException actualException = assertThrows(CoreException.class, () -> packageUploadManagerImpl
220 .putUploadAsFinished(vspId, vspVersionId, lockId, VspUploadStatus.SUCCESS, username));
222 final CoreException expectedException =
223 OrchestrationTemplateCandidateUploadManagerExceptionSupplier.uploadAlreadyFinished(lockId, vspId, vspVersionId).get();
224 assertEquals(expectedException.getMessage(), actualException.getMessage());
228 void finishUploadCouldNotUpdateLockTest() {
230 final String vspId = "vspId";
231 final String vspVersionId = "vspVersionId";
232 final UUID lockId = UUID.randomUUID();
233 final String username = "username";
234 final VspUploadStatusRecord vspUploadStatusRecord = new VspUploadStatusRecord();
235 vspUploadStatusRecord.setVspId(vspId);
236 vspUploadStatusRecord.setVspVersionId(vspVersionId);
237 vspUploadStatusRecord.setLockId(lockId);
238 vspUploadStatusRecord.setStatus(VspUploadStatus.UPLOADING);
239 vspUploadStatusRecord.setCreated(new Date());
240 when(vspUploadStatusRecordDao.findByVspIdAndVersionIdAndLockId(vspId, vspVersionId, lockId))
241 .thenReturn(Optional.of(vspUploadStatusRecord));
242 doThrow(new RuntimeException()).when(vspUploadStatusRecordDao).update(vspUploadStatusRecord);
244 final CoreException actualException = assertThrows(CoreException.class, () -> packageUploadManagerImpl
245 .putUploadAsFinished(vspId, vspVersionId, lockId, VspUploadStatus.SUCCESS, username));
247 final CoreException expectedException =
248 OrchestrationTemplateCandidateUploadManagerExceptionSupplier
249 .couldNotUpdateLock(lockId, vspId, vspVersionId, new RuntimeException()).get();
250 assertEquals(expectedException.getMessage(), actualException.getMessage());
254 void findLatestSuccessTest() {
256 final String vspId = "vspId";
257 final String vspVersionId = "vspVersionId";
258 final String username = "username";
259 when(vendorSoftwareProductManager.getVsp(vspId, new Version(vspVersionId))).thenReturn(new VspDetails());
260 final var expectedVspUploadStatus = new VspUploadStatusRecord();
261 expectedVspUploadStatus.setStatus(VspUploadStatus.UPLOADING);
262 expectedVspUploadStatus.setLockId(UUID.randomUUID());
263 expectedVspUploadStatus.setVspId(vspId);
264 expectedVspUploadStatus.setVspVersionId(vspVersionId);
265 expectedVspUploadStatus.setCreated(new Date());
266 expectedVspUploadStatus.setUpdated(new Date());
267 expectedVspUploadStatus.setIsComplete(true);
268 when(vspUploadStatusRecordDao.findLatest(vspId, vspVersionId)).thenReturn(Optional.of(expectedVspUploadStatus));
270 final Optional<VspUploadStatusDto> actualVspUploadStatusDtoOpt = packageUploadManagerImpl.findLatestStatus(vspId, vspVersionId, username);
272 assertTrue(actualVspUploadStatusDtoOpt.isPresent());
273 final VspUploadStatusDto actualVspUploadStatusDto = actualVspUploadStatusDtoOpt.get();
274 assertEquals(expectedVspUploadStatus.getVspId(), actualVspUploadStatusDto.getVspId());
275 assertEquals(expectedVspUploadStatus.getVspVersionId(), actualVspUploadStatusDto.getVspVersionId());
276 assertEquals(expectedVspUploadStatus.getLockId(), actualVspUploadStatusDto.getLockId());
277 assertEquals(expectedVspUploadStatus.getIsComplete(), actualVspUploadStatusDto.isComplete());
278 assertEquals(expectedVspUploadStatus.getCreated(), actualVspUploadStatusDto.getCreated());
279 assertEquals(expectedVspUploadStatus.getUpdated(), actualVspUploadStatusDto.getUpdated());
280 assertEquals(expectedVspUploadStatus.getStatus(), actualVspUploadStatusDto.getStatus());
284 void findLatest_noStatusFoundTest() {
286 final String vspId = "vspId";
287 final String vspVersionId = "vspVersionId";
288 final String username = "username";
289 when(vendorSoftwareProductManager.getVsp(vspId, new Version(vspVersionId))).thenReturn(new VspDetails());
290 when(vspUploadStatusRecordDao.findLatest(vspId, vspVersionId)).thenReturn(Optional.empty());
292 final Optional<VspUploadStatusDto> actualVspUploadStatusDtoOpt = packageUploadManagerImpl.findLatestStatus(vspId, vspVersionId, username);
294 assertTrue(actualVspUploadStatusDtoOpt.isEmpty());
298 void findLatest_vspNotFoundTest() {
300 final String vspId = "vspId";
301 final String vspVersionId = "vspVersionId";
302 final String username = "username";
304 final CoreException actualCoreException =
305 assertThrows(CoreException.class, () -> packageUploadManagerImpl.findLatestStatus(vspId, vspVersionId, username));
306 final CoreException expectedCoreException = OrchestrationTemplateCandidateUploadManagerExceptionSupplier.vspNotFound(vspId, vspVersionId)
308 assertEquals(expectedCoreException.code().id(), actualCoreException.code().id());
309 assertEquals(expectedCoreException.code().message(), actualCoreException.code().message());