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.openecomp.activityspec.be.impl;
19 import java.util.Arrays;
20 import java.util.Collection;
21 import org.mockito.InjectMocks;
22 import org.mockito.Mock;
23 import org.mockito.MockitoAnnotations;
24 import org.mockito.Spy;
25 import org.openecomp.activityspec.api.rest.types.ActivitySpecAction;
26 import org.openecomp.activityspec.be.dao.ActivitySpecDao;
27 import org.openecomp.activityspec.be.dao.types.ActivitySpecEntity;
28 import org.openecomp.activityspec.be.datatypes.ActivitySpecParameter;
29 import org.openecomp.core.dao.UniqueValueDao;
30 import org.openecomp.sdc.common.errors.CoreException;
31 import org.openecomp.sdc.common.errors.SdcRuntimeException;
32 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
33 import org.openecomp.sdc.versioning.ItemManager;
34 import org.openecomp.sdc.versioning.VersioningManager;
35 import org.openecomp.sdc.versioning.dao.types.Version;
36 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
37 import org.openecomp.sdc.versioning.types.Item;
38 import org.testng.Assert;
39 import org.testng.annotations.AfterMethod;
40 import org.testng.annotations.BeforeMethod;
41 import org.testng.annotations.Test;
43 import java.util.ArrayList;
44 import java.util.List;
46 import static org.mockito.Matchers.anyObject;
47 import static org.mockito.Mockito.doReturn;
48 import static org.mockito.Mockito.doThrow;
49 import static org.mockito.Mockito.verify;
50 import static org.openecomp.activityspec.utils.ActivitySpecConstant.VERSION_ID_DEFAULT_VALUE;
52 public class ActivitySpecManagerImplTest {
54 private static final String STRING_TYPE = "String";
55 private static final String ACTIVITYSPEC_NOT_FOUND = "ACTIVITYSPEC_NOT_FOUND";
56 private static final String TEST_ERROR_MSG = "Test Error";
57 private static final String ERROR_MSG_PREFIX = "STATUS_NOT_";
58 private ActivitySpecEntity input;
59 private static final Version VERSION01 = new Version("12345");
60 private static final String ID = "ID1";
64 private ActivitySpecManagerImpl activitySpecManager;
67 private ItemManager itemManagerMock;
70 private VersioningManager versionManagerMock;
73 private ActivitySpecDao activitySpecDaoMock;
75 //This is used to mock UniqueValueUtil. This should not be removed.
77 private UniqueValueDao uniqueValueDaoMock;
80 public void setUp() throws Exception {
81 MockitoAnnotations.initMocks(this);
85 public void tearDown() {
86 activitySpecManager = null;
90 public void testCreate() {
92 SessionContextProviderFactory.getInstance().createInterface().create("testUser", "testTenant");
94 ActivitySpecEntity activitySpecToCreate = new ActivitySpecEntity();
95 activitySpecToCreate.setName("startserver");
96 activitySpecToCreate.setDescription("start the server");
97 activitySpecToCreate.setVersion(VERSION01);
99 List<String> categoryList = new ArrayList<>();
100 categoryList.add("category1");
101 categoryList.add("category2");
102 activitySpecToCreate.setCategoryList(categoryList);
104 ActivitySpecParameter inputParams = new ActivitySpecParameter("dbhost", STRING_TYPE);
105 inputParams.setValue("localhost");
106 ActivitySpecParameter inputParams1 = new ActivitySpecParameter("dbname", STRING_TYPE);
107 inputParams.setValue("prod");
108 List<ActivitySpecParameter> inputs = new ArrayList<>();
109 inputs.add(inputParams);
110 inputs.add(inputParams1);
111 activitySpecToCreate.setInputs(inputs);
113 ActivitySpecParameter outputParams = new ActivitySpecParameter("status", STRING_TYPE);
114 outputParams.setValue("started");
115 List<ActivitySpecParameter> outputs = new ArrayList<>();
116 outputs.add(outputParams);
117 activitySpecToCreate.setOutputs(outputs);
119 activitySpecToCreate.setId("ID1");
120 activitySpecToCreate.setVersion(VERSION01);
122 Item item = new Item();
123 doReturn(item).when(itemManagerMock).create(anyObject());
125 ActivitySpecEntity activitySpec = activitySpecManager.createActivitySpec
126 (activitySpecToCreate);
128 Assert.assertNotNull(activitySpec);
129 activitySpec.setId("ID1");
130 activitySpec.setStatus(VersionStatus.Draft.name());
131 assertActivitySpecEquals(activitySpec, activitySpecToCreate);
137 public void testList () {
138 ActivitySpecEntity activitySpec = new ActivitySpecEntity();
139 activitySpec.setName("stopServer");
140 doReturn(Arrays.asList(
142 .when(itemManagerMock).list(anyObject());
143 final Collection<Item> activitySpecs = activitySpecManager.list("Certified");
144 Assert.assertEquals(activitySpecs.size(), 1);
148 public void testListInvalidFilter () {
149 final Collection<Item> activitySpecs = activitySpecManager.list("invalid_status");
150 Assert.assertEquals(activitySpecs.size(), 0);
154 public void testListNoFilter () {
155 final Collection<Item> activitySpecs = activitySpecManager.list(null);
156 Assert.assertEquals(activitySpecs.size(), 0);
160 public void testGet () {
161 input = new ActivitySpecEntity();
163 input.setVersion(VERSION01);
165 doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
166 doReturn(input).when(activitySpecDaoMock).get(anyObject());
167 VERSION01.setStatus(VersionStatus.Draft);
168 doReturn(VERSION01).when(versionManagerMock).get(anyObject(), anyObject());
169 ActivitySpecEntity retrieved = activitySpecManager.get(input);
170 assertActivitySpecEquals(retrieved, input);
171 Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
174 input.setVersion(new Version(VERSION_ID_DEFAULT_VALUE));
175 retrieved = activitySpecManager.get(input);
176 assertActivitySpecEquals(retrieved, input);
177 Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
181 public void testGetActivitySpecDaoFail () {
182 input = new ActivitySpecEntity();
184 input.setVersion(VERSION01);
185 doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
186 doReturn(input).when(activitySpecDaoMock).get(anyObject());
187 doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(activitySpecDaoMock).get(anyObject());
189 activitySpecManager.get(input);
191 } catch (CoreException exception) {
192 Assert.assertEquals(exception.code().id(), ACTIVITYSPEC_NOT_FOUND);
197 public void testListVersionFail () {
198 input = new ActivitySpecEntity();
200 input.setVersion(VERSION01);
201 input.getVersion().setId(VERSION_ID_DEFAULT_VALUE);
202 doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(versionManagerMock).list(anyObject());
204 activitySpecManager.get(input);
206 } catch (CoreException exception) {
207 Assert.assertEquals(exception.code().id(), ACTIVITYSPEC_NOT_FOUND);
212 public void testInvalidDeprecate () {
214 activitySpecManager.actOnAction(ID,
215 VERSION01.getId(), ActivitySpecAction.DEPRECATE);
217 catch (CoreException exception) {
218 Assert.assertEquals(exception.code().id(), ERROR_MSG_PREFIX +VersionStatus.Certified.name()
224 public void testInvalidDelete () {
226 activitySpecManager.actOnAction(ID,
227 VERSION01.getId(), ActivitySpecAction.DELETE);
229 catch (CoreException exception) {
230 Assert.assertEquals(exception.code().id(), ERROR_MSG_PREFIX+VersionStatus.Deprecated.name()
236 public void testCertify () {
237 doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
238 doReturn(VERSION01).when(versionManagerMock).get(anyObject(), anyObject());
239 activitySpecManager.actOnAction(ID,
240 VERSION01.getId(), ActivitySpecAction.CERTIFY);
242 verify(versionManagerMock).updateVersion(ID, VERSION01);
243 verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Certified,
244 VersionStatus.Draft);
245 verify(versionManagerMock).publish(anyObject(), anyObject(), anyObject());
249 public void testInvalidCertify () {
251 activitySpecManager.actOnAction(ID,
252 VERSION01.getId(), ActivitySpecAction.CERTIFY);
254 catch (CoreException exception) {
255 Assert.assertEquals(exception.code().id(), ERROR_MSG_PREFIX+VersionStatus.Draft.name()
261 public void testGetVersionFailOnStatusChangeAction () {
262 doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
263 doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(versionManagerMock).get(anyObject(), anyObject());
265 activitySpecManager.actOnAction(ID,
266 VERSION01.getId(), ActivitySpecAction.CERTIFY);
268 } catch (CoreException exception) {
269 Assert.assertEquals(exception.code().id(), ACTIVITYSPEC_NOT_FOUND);
274 public void testDeprecate () {
275 VERSION01.setStatus(VersionStatus.Certified);
276 Version retrivedVersion = new Version("12");
277 retrivedVersion.setStatus(VersionStatus.Certified);
278 doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
279 doReturn(retrivedVersion).when(versionManagerMock).get(anyObject(), anyObject());
280 activitySpecManager.actOnAction(ID,
281 VERSION_ID_DEFAULT_VALUE, ActivitySpecAction.DEPRECATE);
283 verify(versionManagerMock).updateVersion(ID, retrivedVersion);
284 verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Deprecated,
285 VersionStatus.Certified);
286 verify(versionManagerMock).publish(anyObject(), anyObject(), anyObject());
290 public void testDelete () {
291 ActivitySpecEntity activitySpec = new ActivitySpecEntity();
292 VERSION01.setStatus(VersionStatus.Deprecated);
293 activitySpec.setName("stopServer");
294 activitySpec.setVersion(VERSION01);
296 Version retrivedVersion = new Version("12");
297 retrivedVersion.setStatus(VersionStatus.Deprecated);
299 doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
300 doReturn(retrivedVersion).when(versionManagerMock).get(anyObject(), anyObject());
301 doReturn(activitySpec).when(activitySpecDaoMock).get(anyObject());
302 activitySpecManager.actOnAction(ID,
303 VERSION_ID_DEFAULT_VALUE, ActivitySpecAction.DELETE);
305 verify(versionManagerMock).updateVersion(ID, VERSION01);
306 verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Deleted,
307 VersionStatus.Deprecated);
308 verify(versionManagerMock).publish(anyObject(), anyObject(), anyObject());
311 private void assertActivitySpecEquals(ActivitySpecEntity actual, ActivitySpecEntity expected) {
312 Assert.assertEquals(actual.getId(), expected.getId());
313 Assert.assertEquals(actual.getName(), expected.getName());
314 Assert.assertEquals(actual.getDescription(), expected.getDescription());
315 Assert.assertEquals(actual.getCategoryList(), expected.getCategoryList());
316 Assert.assertEquals(actual.getInputs(), expected.getInputs());
317 Assert.assertEquals(actual.getOutputs(), expected.getOutputs());