re base code
[sdc.git] / services / activity-spec / activity-spec-web / activity-spec-service / src / test / java / org / onap / sdc / activityspec / be / impl / ActivitySpecManagerImplTest.java
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.onap.sdc.activityspec.be.impl;
18
19 import org.mockito.InjectMocks;
20 import org.mockito.Mock;
21 import org.mockito.MockitoAnnotations;
22 import org.mockito.Spy;
23 import org.onap.sdc.activityspec.api.rest.types.ActivitySpecAction;
24 import org.onap.sdc.activityspec.be.dao.ActivitySpecDao;
25 import org.onap.sdc.activityspec.be.dao.types.ActivitySpecEntity;
26 import org.onap.sdc.activityspec.be.datatypes.ActivitySpecParameter;
27 import org.onap.sdc.activityspec.errors.ActivitySpecNotFoundException;
28 import org.openecomp.core.dao.UniqueValueDao;
29 import org.openecomp.sdc.common.errors.CoreException;
30 import org.openecomp.sdc.common.errors.SdcRuntimeException;
31 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
32 import org.openecomp.sdc.versioning.ItemManager;
33 import org.openecomp.sdc.versioning.VersioningManager;
34 import org.openecomp.sdc.versioning.dao.types.Version;
35 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
36 import org.openecomp.sdc.versioning.types.Item;
37 import org.testng.Assert;
38 import org.testng.annotations.AfterMethod;
39 import org.testng.annotations.BeforeMethod;
40 import org.testng.annotations.Test;
41
42 import java.util.ArrayList;
43 import java.util.Arrays;
44 import java.util.Collection;
45 import java.util.List;
46
47 import static org.mockito.Matchers.anyObject;
48 import static org.mockito.Mockito.*;
49 import static org.onap.sdc.activityspec.utils.ActivitySpecConstant.*;
50
51 public class ActivitySpecManagerImplTest {
52
53     private static final String STRING_TYPE = "String";
54     private static final String TEST_ERROR_MSG = "Test Error";
55     private ActivitySpecEntity input;
56     private static final Version VERSION01 = new Version("12345");
57     private static final String ID = "ID1";
58
59     @Spy
60     @InjectMocks
61     private ActivitySpecManagerImpl activitySpecManager;
62
63     @Mock
64     private ItemManager itemManagerMock;
65
66     @Mock
67     private VersioningManager versionManagerMock;
68
69     @Mock
70     private ActivitySpecDao activitySpecDaoMock;
71
72     //This is used to mock UniqueValueUtil. This should not be removed.
73     @Mock
74     private UniqueValueDao uniqueValueDaoMock;
75
76     @BeforeMethod
77     public void setUp() throws Exception {
78         MockitoAnnotations.initMocks(this);
79     }
80
81     @AfterMethod
82     public void tearDown() {
83         activitySpecManager = null;
84     }
85
86     @Test
87     public void testCreate() {
88
89         SessionContextProviderFactory.getInstance().createInterface().create("testUser", "testTenant");
90
91         ActivitySpecEntity activitySpecToCreate = new ActivitySpecEntity();
92         activitySpecToCreate.setName("startserver");
93         activitySpecToCreate.setDescription("start the server");
94         activitySpecToCreate.setVersion(VERSION01);
95
96         List<String> categoryList = new ArrayList<>();
97         categoryList.add("category1");
98         categoryList.add("category2");
99         activitySpecToCreate.setCategoryList(categoryList);
100
101         ActivitySpecParameter inputParams = new ActivitySpecParameter("dbhost", STRING_TYPE);
102         inputParams.setValue("localhost");
103         ActivitySpecParameter inputParams1 = new ActivitySpecParameter("dbname", STRING_TYPE);
104         inputParams.setValue("prod");
105         List<ActivitySpecParameter> inputs = new ArrayList<>();
106         inputs.add(inputParams);
107         inputs.add(inputParams1);
108         activitySpecToCreate.setInputs(inputs);
109
110         ActivitySpecParameter outputParams = new ActivitySpecParameter("status", STRING_TYPE);
111         outputParams.setValue("started");
112         List<ActivitySpecParameter> outputs = new ArrayList<>();
113         outputs.add(outputParams);
114         activitySpecToCreate.setOutputs(outputs);
115
116         activitySpecToCreate.setId("ID1");
117         activitySpecToCreate.setVersion(VERSION01);
118
119         Item item = new Item();
120         doReturn(item).when(itemManagerMock).create(anyObject());
121
122         ActivitySpecEntity activitySpec = activitySpecManager.createActivitySpec(activitySpecToCreate);
123
124         Assert.assertNotNull(activitySpec);
125         activitySpec.setId("ID1");
126         activitySpec.setStatus(VersionStatus.Draft.name());
127         assertActivitySpecEquals(activitySpec, activitySpecToCreate);
128     }
129
130
131     @Test
132     public void testList() {
133         ActivitySpecEntity activitySpec = new ActivitySpecEntity();
134         activitySpec.setName("stopServer");
135         doReturn(Arrays.asList(activitySpec)).when(itemManagerMock).list(anyObject());
136         final Collection<Item> activitySpecs = activitySpecManager.list("Certified");
137         Assert.assertEquals(activitySpecs.size(), 1);
138     }
139
140     @Test
141     public void testListInvalidFilter() {
142         final Collection<Item> activitySpecs = activitySpecManager.list("invalid_status");
143         Assert.assertEquals(activitySpecs.size(), 0);
144     }
145
146     @Test
147     public void testListNoFilter() {
148         final Collection<Item> activitySpecs = activitySpecManager.list(null);
149         Assert.assertEquals(activitySpecs.size(), 0);
150     }
151
152     @Test
153     public void testGet() {
154         input = new ActivitySpecEntity();
155         input.setId(ID);
156         input.setVersion(VERSION01);
157
158         doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
159         doReturn(input).when(activitySpecDaoMock).get(anyObject());
160         VERSION01.setStatus(VersionStatus.Draft);
161         doReturn(VERSION01).when(versionManagerMock).get(anyObject(), anyObject());
162         ActivitySpecEntity retrieved = activitySpecManager.get(input);
163         assertActivitySpecEquals(retrieved, input);
164         Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
165
166
167         input.setVersion(new Version(VERSION_ID_DEFAULT_VALUE));
168         retrieved = activitySpecManager.get(input);
169         assertActivitySpecEquals(retrieved, input);
170         Assert.assertEquals(retrieved.getStatus(), VersionStatus.Draft.name());
171     }
172
173     @Test
174     public void testGetActivitySpecDaoFail() {
175         input = new ActivitySpecEntity();
176         input.setId(ID);
177         input.setVersion(VERSION01);
178         doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
179         doReturn(input).when(activitySpecDaoMock).get(anyObject());
180         doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(activitySpecDaoMock).get(anyObject());
181         try {
182             activitySpecManager.get(input);
183             Assert.fail();
184         } catch (ActivitySpecNotFoundException exception) {
185             Assert.assertEquals(exception.getMessage(), ACTIVITY_SPEC_NOT_FOUND);
186         }
187     }
188
189     @Test
190     public void testListVersionFail() {
191         input = new ActivitySpecEntity();
192         input.setId(ID);
193         input.setVersion(VERSION01);
194         input.getVersion().setId(VERSION_ID_DEFAULT_VALUE);
195         doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(versionManagerMock).list(anyObject());
196         try {
197             activitySpecManager.get(input);
198             Assert.fail();
199         } catch (ActivitySpecNotFoundException exception) {
200             Assert.assertEquals(exception.getMessage(), ACTIVITY_SPEC_NOT_FOUND);
201         }
202     }
203
204     @Test
205     public void testInvalidDeprecate() {
206         try {
207             activitySpecManager.actOnAction(ID, VERSION01.getId(), ActivitySpecAction.DEPRECATE);
208         } catch (CoreException exception) {
209             Assert.assertEquals(exception.getMessage(), INVALID_STATE);
210         }
211     }
212
213     @Test
214     public void testInvalidDelete() {
215         try {
216             activitySpecManager.actOnAction(ID, VERSION01.getId(), ActivitySpecAction.DELETE);
217         } catch (CoreException exception) {
218             Assert.assertEquals(exception.getMessage(), INVALID_STATE);
219         }
220     }
221
222     @Test
223     public void testCertify() {
224         doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
225         doReturn(VERSION01).when(versionManagerMock).get(anyObject(), anyObject());
226         activitySpecManager.actOnAction(ID, VERSION01.getId(), ActivitySpecAction.CERTIFY);
227
228         verify(versionManagerMock).updateVersion(ID, VERSION01);
229         verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Certified, VersionStatus.Draft);
230         verify(versionManagerMock).publish(anyObject(), anyObject(), anyObject());
231     }
232
233     @Test
234     public void testInvalidCertify() {
235         try {
236             activitySpecManager.actOnAction(ID, VERSION01.getId(), ActivitySpecAction.CERTIFY);
237         } catch (CoreException exception) {
238             Assert.assertEquals(exception.getMessage(), INVALID_STATE);
239         }
240     }
241
242     @Test
243     public void testGetVersionFailOnStatusChangeAction() {
244         doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
245         doThrow(new SdcRuntimeException(TEST_ERROR_MSG)).when(versionManagerMock).get(anyObject(), anyObject());
246         try {
247             activitySpecManager.actOnAction(ID, VERSION01.getId(), ActivitySpecAction.CERTIFY);
248             Assert.fail();
249         } catch (ActivitySpecNotFoundException exception) {
250             Assert.assertEquals(exception.getMessage(), ACTIVITY_SPEC_NOT_FOUND);
251         }
252     }
253
254     @Test
255     public void testDeprecate() {
256         VERSION01.setStatus(VersionStatus.Certified);
257         Version retrivedVersion = new Version("12");
258         retrivedVersion.setStatus(VersionStatus.Certified);
259         doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
260         doReturn(retrivedVersion).when(versionManagerMock).get(anyObject(), anyObject());
261         activitySpecManager.actOnAction(ID, VERSION_ID_DEFAULT_VALUE, ActivitySpecAction.DEPRECATE);
262
263         verify(versionManagerMock).updateVersion(ID, retrivedVersion);
264         verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Deprecated, VersionStatus.Certified);
265         verify(versionManagerMock).publish(anyObject(), anyObject(), anyObject());
266     }
267
268     @Test
269     public void testDelete() {
270         ActivitySpecEntity activitySpec = new ActivitySpecEntity();
271         VERSION01.setStatus(VersionStatus.Deprecated);
272         activitySpec.setName("stopServer");
273         activitySpec.setVersion(VERSION01);
274
275         Version retrivedVersion = new Version("12");
276         retrivedVersion.setStatus(VersionStatus.Deprecated);
277
278         doReturn(Arrays.asList(VERSION01)).when(versionManagerMock).list(anyObject());
279         doReturn(retrivedVersion).when(versionManagerMock).get(anyObject(), anyObject());
280         doReturn(activitySpec).when(activitySpecDaoMock).get(anyObject());
281         activitySpecManager.actOnAction(ID, VERSION_ID_DEFAULT_VALUE, ActivitySpecAction.DELETE);
282
283         verify(versionManagerMock).updateVersion(ID, VERSION01);
284         verify(itemManagerMock).updateVersionStatus(ID, VersionStatus.Deleted, VersionStatus.Deprecated);
285         verify(versionManagerMock).publish(anyObject(), anyObject(), anyObject());
286     }
287
288     private void assertActivitySpecEquals(ActivitySpecEntity actual, ActivitySpecEntity expected) {
289         Assert.assertEquals(actual.getId(), expected.getId());
290         Assert.assertEquals(actual.getName(), expected.getName());
291         Assert.assertEquals(actual.getDescription(), expected.getDescription());
292         Assert.assertEquals(actual.getCategoryList(), expected.getCategoryList());
293         Assert.assertEquals(actual.getInputs(), expected.getInputs());
294         Assert.assertEquals(actual.getOutputs(), expected.getOutputs());
295     }
296
297 }