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.ArgumentMatchers.anyString;
21 import static org.mockito.ArgumentMatchers.eq;
22 import static org.mockito.ArgumentMatchers.isNull;
23 import static org.mockito.Mockito.doReturn;
24 import static org.mockito.Mockito.verify;
25 import static org.onap.sdc.workflow.TestUtil.createRetrievedVersion;
26 import static org.onap.sdc.workflow.services.ActivitySpecConstant.ACTIVITY_SPEC_NOT_FOUND;
27 import static org.onap.sdc.workflow.services.ActivitySpecConstant.VERSION_ID_DEFAULT_VALUE;
29 import java.util.ArrayList;
30 import java.util.Collection;
31 import java.util.Collections;
32 import java.util.List;
33 import org.junit.After;
34 import org.junit.Assert;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.mockito.InjectMocks;
38 import org.mockito.Mock;
39 import org.mockito.Mockito;
40 import org.mockito.MockitoAnnotations;
41 import org.mockito.Spy;
42 import org.onap.sdc.common.versioning.persistence.types.InternalItem;
43 import org.onap.sdc.common.versioning.persistence.types.InternalVersion;
44 import org.onap.sdc.common.versioning.services.ItemManager;
45 import org.onap.sdc.common.versioning.services.VersioningManager;
46 import org.onap.sdc.common.versioning.services.types.Item;
47 import org.onap.sdc.common.versioning.services.types.Version;
48 import org.onap.sdc.common.versioning.services.types.VersionCreationMethod;
49 import org.onap.sdc.common.versioning.services.types.VersionStatus;
50 import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecAction;
51 import org.onap.sdc.workflow.persistence.ActivitySpecRepository;
52 import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity;
53 import org.onap.sdc.workflow.persistence.types.ActivitySpecParameter;
54 import org.onap.sdc.workflow.services.UniqueValueService;
55 import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
56 import org.onap.sdc.workflow.services.exceptions.VersionStatusModificationException;
57 import org.onap.sdc.workflow.services.impl.mappers.ActivitySpecMapper;
59 public class ActivitySpecManagerImplTest {
61 private static final String STRING_TYPE = "String";
62 private static final String TEST_ERROR_MSG = "Test Error";
63 private static final String ID = "ID1";
64 private String version01 = "12345";
65 private ActivitySpecEntity input;
69 private ActivitySpecManagerImpl activitySpecManager;
71 private ItemManager itemManagerMock;
73 private VersioningManager versionManagerMock;
75 private ActivitySpecRepository activitySpecRepositoryMock;
77 private UniqueValueService uniqueValueServiceMock;
79 private ActivitySpecMapper activitySpecMapperMock;
83 MockitoAnnotations.initMocks(this);
87 public void tearDown() {
88 activitySpecManager = null;
92 public void testCreate() {
93 ActivitySpecEntity activitySpecToCreate = new ActivitySpecEntity();
94 activitySpecToCreate.setName("startserver");
95 activitySpecToCreate.setDescription("start the server");
96 activitySpecToCreate.setVersionId(version01);
98 List<String> categoryList = new ArrayList<>();
99 categoryList.add("category1");
100 categoryList.add("category2");
101 activitySpecToCreate.setCategoryList(categoryList);
103 ActivitySpecParameter inputParams = new ActivitySpecParameter("dbhost", STRING_TYPE, null);
104 inputParams.setValue("localhost");
105 ActivitySpecParameter inputParams1 = new ActivitySpecParameter("dbname", STRING_TYPE, null);
106 inputParams.setValue("prod");
107 List<ActivitySpecParameter> inputs = new ArrayList<>();
108 inputs.add(inputParams);
109 inputs.add(inputParams1);
110 activitySpecToCreate.setInputs(inputs);
112 ActivitySpecParameter outputParams = new ActivitySpecParameter("status", STRING_TYPE, null);
113 outputParams.setValue("started");
114 List<ActivitySpecParameter> outputs = new ArrayList<>();
115 outputs.add(outputParams);
116 activitySpecToCreate.setOutputs(outputs);
118 activitySpecToCreate.setVersionId(version01);
120 String itemId = "ID1";
122 InternalItem createdItem = new InternalItem();
123 createdItem.setId(itemId);
124 doReturn(createdItem).when(itemManagerMock).create(any());
126 doReturn(createRetrievedVersion(version01, VersionStatus.Draft)).when(versionManagerMock)
127 .create(eq(itemId), isNull(), any(Version.class), eq(VersionCreationMethod.major));
129 ActivitySpecEntity activitySpec = activitySpecManager.createActivitySpec(activitySpecToCreate);
131 Assert.assertNotNull(activitySpec);
132 activitySpec.setId(itemId);
133 activitySpec.setStatus(VersionStatus.Draft.name());
134 assertActivitySpecEquals(activitySpec, activitySpecToCreate);
137 private void assertActivitySpecEquals(ActivitySpecEntity actual, ActivitySpecEntity expected) {
138 Assert.assertEquals(actual.getId(), expected.getId());
139 Assert.assertEquals(actual.getName(), expected.getName());
140 Assert.assertEquals(actual.getDescription(), expected.getDescription());
141 Assert.assertEquals(actual.getCategoryList(), expected.getCategoryList());
142 Assert.assertEquals(actual.getInputs(), expected.getInputs());
143 Assert.assertEquals(actual.getOutputs(), expected.getOutputs());
147 public void testList() {
148 Item item = new Item();
149 doReturn(Collections.singletonList(item)).when(itemManagerMock).list(any());
150 doReturn(new ActivitySpecEntity(ID, null)).when(activitySpecMapperMock).itemToActivitySpec(item);
152 final Collection<ActivitySpecEntity> activitySpecs = activitySpecManager.list("Certified");
153 Assert.assertEquals(1, activitySpecs.size());
154 Assert.assertEquals(ID, activitySpecs.iterator().next().getId());
158 public void testListInvalidFilter() {
159 final Collection<ActivitySpecEntity> activitySpecs = activitySpecManager.list("invalid_status");
160 Assert.assertEquals(0, activitySpecs.size());
164 public void testListNoFilter() {
165 final Collection<ActivitySpecEntity> activitySpecs = activitySpecManager.list(null);
166 Assert.assertEquals(0, activitySpecs.size());
170 public void testGet() {
171 input = new ActivitySpecEntity();
173 input.setVersionId(version01);
176 doReturn(input).when(activitySpecRepositoryMock).get(any());
177 doReturn(createRetrievedVersion(version01,VersionStatus.Draft)).when(versionManagerMock).get(any(), any());
178 ActivitySpecEntity retrieved = activitySpecManager.get(input);
179 assertActivitySpecEquals(retrieved, input);
180 Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
183 retrieved = activitySpecManager.get(input);
184 assertActivitySpecEquals(retrieved, input);
185 Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
188 private void mockListVersions() {
189 doReturn(Collections.singletonList((Version)createRetrievedVersion(version01,VersionStatus.Draft))).when(versionManagerMock).list(any());
193 public void testGetActivitySpecDaoFail() {
194 input = new ActivitySpecEntity();
196 input.setVersionId(version01);
198 doReturn(input).when(activitySpecRepositoryMock).get(any());
199 Mockito.doThrow(new RuntimeException(TEST_ERROR_MSG)).when(activitySpecRepositoryMock).get(any());
201 activitySpecManager.get(input);
203 } catch (EntityNotFoundException exception) {
204 Assert.assertEquals(ACTIVITY_SPEC_NOT_FOUND, exception.getMessage());
209 public void testListVersionFail() {
210 input = new ActivitySpecEntity();
212 input.setVersionId(VERSION_ID_DEFAULT_VALUE);
213 Mockito.doThrow(new RuntimeException(TEST_ERROR_MSG)).when(versionManagerMock).list(any());
215 activitySpecManager.get(input);
217 } catch (EntityNotFoundException exception) {
218 Assert.assertEquals(ACTIVITY_SPEC_NOT_FOUND, exception.getMessage());
222 @Test(expected = VersionStatusModificationException.class)
223 public void testInvalidDeprecate() {
224 InternalVersion version = createRetrievedVersion(version01, VersionStatus.Draft);
225 doReturn(version).when(versionManagerMock).get(ID, version01);
226 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.DEPRECATE);
229 @Test(expected = VersionStatusModificationException.class)
230 public void testInvalidDelete() {
231 mockCertifiedVersion();
232 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.DELETE);
235 private void mockCertifiedVersion() {
236 InternalVersion version = createRetrievedVersion(version01, VersionStatus.Certified);
237 doReturn(version).when(versionManagerMock).get(ID, version01);
240 @Test(expected = VersionStatusModificationException.class)
241 public void testInvalidCertify() {
242 mockCertifiedVersion();
243 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.CERTIFY);
247 public void testCertify() {
248 InternalVersion retrievedVersion = createRetrievedVersion(version01, VersionStatus.Draft);
249 doReturn(Collections.singletonList(retrievedVersion)).when(versionManagerMock).list(any());
250 doReturn(retrievedVersion).when(versionManagerMock).get(any(), any());
252 activitySpecManager.actOnAction(new ActivitySpecEntity(ID, version01), ActivitySpecAction.CERTIFY);
254 verify(versionManagerMock).updateStatus(eq(ID), eq(version01), eq(VersionStatus.Certified), anyString());
258 public void testGetVersionFailOnStatusChangeAction() {
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 InternalVersion retrievedVersion = createRetrievedVersion(version01, VersionStatus.Certified);
272 doReturn(retrievedVersion).when(versionManagerMock).get(any(), any());
274 .actOnAction(new ActivitySpecEntity(ID, VERSION_ID_DEFAULT_VALUE), ActivitySpecAction.DEPRECATE);
276 verify(versionManagerMock).updateStatus(eq(ID), eq(version01), eq(VersionStatus.Deprecated), anyString());
280 public void testDelete() {
281 ActivitySpecEntity activitySpec = new ActivitySpecEntity();
282 activitySpec.setName("stopServer");
283 activitySpec.setVersionId(version01);
286 doReturn(createRetrievedVersion(version01, VersionStatus.Deprecated)).when(versionManagerMock).get(any(), any());
287 doReturn(activitySpec).when(activitySpecRepositoryMock).get(any());
289 .actOnAction(new ActivitySpecEntity(ID, VERSION_ID_DEFAULT_VALUE), ActivitySpecAction.DELETE);
291 verify(versionManagerMock).updateStatus(eq(ID), eq(version01), eq(VersionStatus.Deleted), anyString());