2 * Copyright © 2016-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.onap.sdc.workflow.services.impl;
19 import static org.mockito.ArgumentMatchers.any;
20 import static org.mockito.Mockito.doReturn;
21 import static org.mockito.Mockito.verify;
22 import static org.onap.sdc.workflow.services.ActivitySpecConstant.ACTIVITY_SPEC_NOT_FOUND;
23 import static org.onap.sdc.workflow.services.ActivitySpecConstant.VERSION_ID_DEFAULT_VALUE;
25 import java.util.ArrayList;
26 import java.util.Collection;
27 import java.util.Collections;
28 import java.util.List;
29 import org.junit.After;
30 import org.junit.Assert;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.mockito.InjectMocks;
34 import org.mockito.Mock;
35 import org.mockito.Mockito;
36 import org.mockito.MockitoAnnotations;
37 import org.mockito.Spy;
38 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecAction;
39 import org.onap.sdc.workflow.persistence.ActivitySpecRepository;
40 import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity;
41 import org.onap.sdc.workflow.persistence.types.ActivitySpecParameter;
42 import org.onap.sdc.workflow.services.UniqueValueService;
43 import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
44 import org.onap.sdc.workflow.services.exceptions.VersionStatusModificationException;
45 import org.onap.sdc.workflow.services.impl.mappers.ActivitySpecMapper;
46 import org.openecomp.sdc.common.errors.SdcRuntimeException;
47 import org.openecomp.sdc.versioning.ItemManager;
48 import org.openecomp.sdc.versioning.VersioningManager;
49 import org.openecomp.sdc.versioning.dao.types.Version;
50 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
51 import org.openecomp.sdc.versioning.types.Item;
53 public class ActivitySpecManagerImplTest {
55 private static final String STRING_TYPE = "String";
56 private static final String TEST_ERROR_MSG = "Test Error";
57 private static final String ID = "ID1";
58 private Version version01 = new Version("12345");
59 private ActivitySpecEntity input;
63 private ActivitySpecManagerImpl activitySpecManager;
65 private ItemManager itemManagerMock;
67 private VersioningManager versionManagerMock;
69 private ActivitySpecRepository activitySpecRepositoryMock;
71 private UniqueValueService uniqueValueServiceMock;
73 private ActivitySpecMapper activitySpecMapperMock;
77 MockitoAnnotations.initMocks(this);
81 public void tearDown() {
82 activitySpecManager = null;
86 public void testCreate() {
87 ActivitySpecEntity activitySpecToCreate = new ActivitySpecEntity();
88 activitySpecToCreate.setName("startserver");
89 activitySpecToCreate.setDescription("start the server");
90 activitySpecToCreate.setVersion(version01);
92 List<String> categoryList = new ArrayList<>();
93 categoryList.add("category1");
94 categoryList.add("category2");
95 activitySpecToCreate.setCategoryList(categoryList);
97 ActivitySpecParameter inputParams = new ActivitySpecParameter("dbhost", STRING_TYPE, null);
98 inputParams.setValue("localhost");
99 ActivitySpecParameter inputParams1 = new ActivitySpecParameter("dbname", STRING_TYPE, null);
100 inputParams.setValue("prod");
101 List<ActivitySpecParameter> inputs = new ArrayList<>();
102 inputs.add(inputParams);
103 inputs.add(inputParams1);
104 activitySpecToCreate.setInputs(inputs);
106 ActivitySpecParameter outputParams = new ActivitySpecParameter("status", STRING_TYPE, null);
107 outputParams.setValue("started");
108 List<ActivitySpecParameter> outputs = new ArrayList<>();
109 outputs.add(outputParams);
110 activitySpecToCreate.setOutputs(outputs);
112 activitySpecToCreate.setId("ID1");
113 activitySpecToCreate.setVersion(version01);
115 Item mappedItem = new Item();
116 doReturn(mappedItem).when(activitySpecMapperMock).activitySpecToItem(activitySpecToCreate);
117 doReturn(new Item()).when(itemManagerMock).create(mappedItem);
119 ActivitySpecEntity activitySpec = activitySpecManager.createActivitySpec(activitySpecToCreate);
121 Assert.assertNotNull(activitySpec);
122 activitySpec.setId("ID1");
123 activitySpec.setStatus(VersionStatus.Draft.name());
124 assertActivitySpecEquals(activitySpec, activitySpecToCreate);
127 private void assertActivitySpecEquals(ActivitySpecEntity actual, ActivitySpecEntity expected) {
128 Assert.assertEquals(actual.getId(), expected.getId());
129 Assert.assertEquals(actual.getName(), expected.getName());
130 Assert.assertEquals(actual.getDescription(), expected.getDescription());
131 Assert.assertEquals(actual.getCategoryList(), expected.getCategoryList());
132 Assert.assertEquals(actual.getInputs(), expected.getInputs());
133 Assert.assertEquals(actual.getOutputs(), expected.getOutputs());
137 public void testList() {
138 Item item = new Item();
140 doReturn(Collections.singletonList(item)).when(itemManagerMock).list(any());
141 doReturn(new ActivitySpecEntity(ID, null)).when(activitySpecMapperMock).itemToActivitySpec(item);
143 final Collection<ActivitySpecEntity> activitySpecs = activitySpecManager.list("Certified");
144 Assert.assertEquals(1, activitySpecs.size());
145 Assert.assertEquals(ID, activitySpecs.iterator().next().getId());
149 public void testListInvalidFilter() {
150 final Collection<ActivitySpecEntity> activitySpecs = activitySpecManager.list("invalid_status");
151 Assert.assertEquals(0, activitySpecs.size());
155 public void testListNoFilter() {
156 final Collection<ActivitySpecEntity> activitySpecs = activitySpecManager.list(null);
157 Assert.assertEquals(0, activitySpecs.size());
161 public void testGet() {
162 input = new ActivitySpecEntity();
164 input.setVersion(version01);
167 doReturn(input).when(activitySpecRepositoryMock).get(any());
168 version01.setStatus(VersionStatus.Draft);
169 doReturn(version01).when(versionManagerMock).get(any(), any());
170 ActivitySpecEntity retrieved = activitySpecManager.get(input);
171 assertActivitySpecEquals(retrieved, input);
172 Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
175 input.setVersion(new Version(VERSION_ID_DEFAULT_VALUE));
176 retrieved = activitySpecManager.get(input);
177 assertActivitySpecEquals(retrieved, input);
178 Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
181 private void mockListVersions() {
182 doReturn(Collections.singletonList(version01)).when(versionManagerMock).list(any());
186 public void testGetActivitySpecDaoFail() {
187 input = new ActivitySpecEntity();
189 input.setVersion(version01);
191 doReturn(input).when(activitySpecRepositoryMock).get(any());
192 Mockito.doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(activitySpecRepositoryMock).get(any());
194 activitySpecManager.get(input);
196 } catch (EntityNotFoundException exception) {
197 Assert.assertEquals(ACTIVITY_SPEC_NOT_FOUND, exception.getMessage());
202 public void testListVersionFail() {
203 input = new ActivitySpecEntity();
205 input.setVersion(version01);
206 input.getVersion().setId(VERSION_ID_DEFAULT_VALUE);
207 Mockito.doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(versionManagerMock).list(any());
209 activitySpecManager.get(input);
211 } catch (EntityNotFoundException exception) {
212 Assert.assertEquals(ACTIVITY_SPEC_NOT_FOUND, exception.getMessage());
216 @Test(expected = VersionStatusModificationException.class)
217 public void testInvalidDeprecate() {
218 Version version = new Version(version01.getId());
219 version.setStatus(VersionStatus.Draft);
220 doReturn(version).when(versionManagerMock).get(ID, version01);
221 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.DEPRECATE);
224 @Test(expected = VersionStatusModificationException.class)
225 public void testInvalidDelete() {
226 mockCertifiedVersion();
227 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.DELETE);
230 private void mockCertifiedVersion() {
231 Version version = new Version(version01.getId());
232 version.setStatus(VersionStatus.Certified);
233 doReturn(version).when(versionManagerMock).get(ID, version01);
236 @Test(expected = VersionStatusModificationException.class)
237 public void testInvalidCertify() {
238 mockCertifiedVersion();
239 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.CERTIFY);
243 public void testCertify() {
244 Version retrievedVersion = new Version(version01.getId());
245 retrievedVersion.setStatus(VersionStatus.Draft);
246 doReturn(Collections.singletonList(retrievedVersion)).when(versionManagerMock).list(any());
247 doReturn(retrievedVersion).when(versionManagerMock).get(any(), any());
249 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.CERTIFY);
251 verify(versionManagerMock).updateVersion(ID, retrievedVersion);
252 verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Certified, VersionStatus.Draft);
253 verify(versionManagerMock).publish(ID, retrievedVersion, "actionOnActivitySpec :CERTIFY");
257 public void testGetVersionFailOnStatusChangeAction() {
259 Mockito.doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(versionManagerMock).get(any(), any());
261 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.CERTIFY);
263 } catch (EntityNotFoundException exception) {
264 Assert.assertEquals(ACTIVITY_SPEC_NOT_FOUND, exception.getMessage());
269 public void testDeprecate() {
270 version01.setStatus(VersionStatus.Certified);
271 Version retrivedVersion = new Version("12");
272 retrivedVersion.setStatus(VersionStatus.Certified);
274 doReturn(retrivedVersion).when(versionManagerMock).get(any(), any());
275 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, new Version(VERSION_ID_DEFAULT_VALUE)), ActivitySpecAction.DEPRECATE);
277 verify(versionManagerMock).updateVersion(ID, retrivedVersion);
278 verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Deprecated, VersionStatus.Certified);
279 verify(versionManagerMock).publish(any(), any(), any());
283 public void testDelete() {
284 ActivitySpecEntity activitySpec = new ActivitySpecEntity();
285 version01.setStatus(VersionStatus.Deprecated);
286 activitySpec.setName("stopServer");
287 activitySpec.setVersion(version01);
289 Version retrivedVersion = new Version("12");
290 retrivedVersion.setStatus(VersionStatus.Deprecated);
293 doReturn(retrivedVersion).when(versionManagerMock).get(any(), any());
294 doReturn(activitySpec).when(activitySpecRepositoryMock).get(any());
295 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, new Version(VERSION_ID_DEFAULT_VALUE)), ActivitySpecAction.DELETE);
297 verify(versionManagerMock).updateVersion(ID, version01);
298 verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Deleted, VersionStatus.Deprecated);
299 verify(versionManagerMock).publish(any(), any(), any());