Add activity spec code
[sdc/sdc-workflow-designer.git] / workflow-designer-be / src / test / java / org / onap / sdc / workflow / persistence / impl / ActivitySpecRepositoryImplTest.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.workflow.persistence.impl;
18
19 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
20
21 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
22 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflict;
23 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
24 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict;
25 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
26 import com.amdocs.zusammen.commons.health.data.HealthInfo;
27 import com.amdocs.zusammen.datatypes.Id;
28 import com.amdocs.zusammen.datatypes.SessionContext;
29 import com.amdocs.zusammen.datatypes.item.Action;
30 import com.amdocs.zusammen.datatypes.item.ElementContext;
31 import com.amdocs.zusammen.datatypes.item.Info;
32 import com.amdocs.zusammen.datatypes.item.Item;
33 import com.amdocs.zusammen.datatypes.item.ItemVersion;
34 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
35 import com.amdocs.zusammen.datatypes.item.ItemVersionStatus;
36 import com.amdocs.zusammen.datatypes.item.Resolution;
37 import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions;
38 import com.amdocs.zusammen.datatypes.itemversion.Tag;
39 import java.io.InputStream;
40 import java.util.ArrayList;
41 import java.util.Collection;
42 import java.util.HashMap;
43 import java.util.List;
44 import java.util.Map;
45 import java.util.Optional;
46 import java.util.UUID;
47 import java.util.stream.Collectors;
48 import org.junit.After;
49 import org.junit.Assert;
50 import org.junit.Before;
51 import org.junit.Test;
52 import org.junit.runner.RunWith;
53 import org.onap.sdc.workflow.persistence.impl.ActivitySpecRepositoryImpl.InfoPropertyName;
54 import org.onap.sdc.workflow.persistence.impl.types.ActivitySpecData;
55 import org.onap.sdc.workflow.persistence.impl.types.ActivitySpecElementType;
56 import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity;
57 import org.onap.sdc.workflow.persistence.types.ActivitySpecParameter;
58 import org.openecomp.core.utilities.json.JsonUtil;
59 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
60 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
61 import org.openecomp.sdc.versioning.dao.types.Version;
62 import org.openecomp.types.ElementPropertyName;
63 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
64
65 @RunWith(SpringJUnit4ClassRunner.class)
66 public class ActivitySpecRepositoryImplTest {
67
68     private static final Version version = new Version();
69     private static final String versionId = "1234";
70     private static final String itemId = "5678";
71     private static final String tenant = "dox";
72
73     private ZusammenAdaptorMock zusammenAdaptor;
74     private ActivitySpecRepositoryImpl daoImpl;
75     private ActivitySpecEntity entity;
76
77
78     @Before
79     public void setUp() {
80         SessionContextProviderFactory.getInstance().createInterface().create("test", tenant);
81         zusammenAdaptor = new ZusammenAdaptorMock();
82         daoImpl = new ActivitySpecRepositoryImpl(zusammenAdaptor);
83         entity = new ActivitySpecEntity();
84         entity = new ActivitySpecEntity();
85
86         entity.setId(itemId);
87         version.setId(versionId);
88         entity.setVersion(version);
89         entity.setName("activitySpec");
90         List<String> categoryList = new ArrayList<>();
91         categoryList.add("category1");
92         entity.setCategoryList(categoryList);
93         ActivitySpecParameter inputParams = new ActivitySpecParameter("dbhost", "String", null);
94         inputParams.setValue("localhost");
95         List<ActivitySpecParameter> inputs = new ArrayList<>();
96         inputs.add(inputParams);
97         entity.setInputs(inputs);
98     }
99
100     @After
101     public void tearDown() {
102         SessionContextProviderFactory.getInstance().createInterface().close();
103     }
104
105     @Test
106     public void testCreate() {
107         ItemVersion itemVersionmock = new ItemVersion();
108         itemVersionmock.setId(new Id());
109
110         daoImpl.create(entity);
111         SessionContext context = createSessionContext();
112         ElementContext elementContext = new ElementContext(entity.getId(), entity.getVersion().getId());
113         Optional<ElementInfo> testElementInfo = zusammenAdaptor.getElementInfoByName(context, elementContext, Id.ZERO,
114                 ActivitySpecElementType.ACTIVITYSPEC.name());
115         Assert.assertTrue(testElementInfo.isPresent());
116         Assert.assertEquals(testElementInfo.get().getInfo().getName(), ActivitySpecElementType.ACTIVITYSPEC.name());
117         Assert.assertEquals(testElementInfo.get().getInfo()
118                                     .getProperty(ActivitySpecRepositoryImpl.InfoPropertyName.DESCRIPTION.getValue()),
119                 entity.getDescription());
120         Assert.assertEquals(testElementInfo.get().getInfo().getProperty(InfoPropertyName.CATEGORY.getValue()),
121                 entity.getCategoryList());
122         Assert.assertEquals(testElementInfo.get().getInfo()
123                                     .getProperty(ActivitySpecRepositoryImpl.InfoPropertyName.NAME.getValue()),
124                 entity.getName());
125
126         final Optional<Element> testElement =
127                 zusammenAdaptor.getElement(context, elementContext, zusammenAdaptor.elementId);
128         final InputStream data = testElement.get().getData();
129         final ActivitySpecData activitySpecData = JsonUtil.json2Object(data, ActivitySpecData.class);
130         Assert.assertEquals(activitySpecData.getInputs().get(0).getName(), entity.getInputs().get(0).getName());
131     }
132
133     @Test
134     public void testGet() {
135         final ActivitySpecEntity retrieved = daoImpl.get(entity);
136         Assert.assertEquals(retrieved.getName(), entity.getName());
137         Assert.assertEquals(retrieved.getDescription(), entity.getDescription());
138         Assert.assertEquals(retrieved.getCategoryList(), entity.getCategoryList());
139     }
140
141     @Test
142     public void testUpdate() {
143         entity.setDescription("Update AS version1");
144         daoImpl.update(entity);
145         final ActivitySpecEntity retrieved = daoImpl.get(entity);
146         Assert.assertEquals(retrieved.getName(), entity.getName());
147         Assert.assertEquals(retrieved.getDescription(), entity.getDescription());
148         Assert.assertEquals(retrieved.getCategoryList(), entity.getCategoryList());
149     }
150
151     private class ZusammenAdaptorMock implements ZusammenAdaptor {
152
153         private final Map<String, Element> elementMap = new HashMap<>();
154         String elementId;
155         private ItemVersion itemVersion;
156
157         @Override
158         public Collection<Item> listItems(SessionContext context) {
159             return null;
160         }
161
162         @Override
163         public Item getItem(SessionContext context, Id itemId) {
164             return null;
165         }
166
167         @Override
168         public void deleteItem(SessionContext context, Id itemId) {
169
170         }
171
172         @Override
173         public Id createItem(SessionContext context, Info info) {
174             return null;
175         }
176
177         @Override
178         public void updateItem(SessionContext context, Id itemId, Info info) {
179
180         }
181
182         @Override
183         public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
184
185             return Optional.ofNullable(itemVersion);
186         }
187
188         @Override
189         public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
190             return null;
191         }
192
193         @Override
194         public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
195             return null;
196         }
197
198         @Override
199         public Id createVersion(SessionContext context, Id itemId, Id baseVersionId, ItemVersionData itemVersionData) {
200             return null;
201         }
202
203         @Override
204         public void updateVersion(SessionContext context, Id itemId, Id versionId, ItemVersionData itemVersionData) {
205
206         }
207
208         @Override
209         public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
210             return null;
211         }
212
213         @Override
214         public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
215             return null;
216         }
217
218         @Override
219         public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
220             return null;
221         }
222
223         @Override
224         public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
225
226         }
227
228         @Override
229         public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef) {
230
231         }
232
233         @Override
234         public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
235
236         }
237
238         @Override
239         public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
240
241         }
242
243         @Override
244         public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
245
246         }
247
248         @Override
249         public void cleanVersion(SessionContext sessionContext, Id itemId, Id versionId) {
250
251         }
252
253         @Override
254         public Optional<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext,
255                 Id elementId) {
256             return Optional.empty();
257         }
258
259         @Override
260         public Optional<Element> getElement(SessionContext context, ElementContext elementContext, String elementId) {
261             return Optional.of(elementMap.get(elementId));
262         }
263
264         @Override
265         public Optional<Element> getElementByName(SessionContext context, ElementContext elementContext,
266                 Id parentElementId, String elementName) {
267             //return Optional.empty();
268             ZusammenElement element = new ZusammenElement();
269             Info info = new Info();
270             element.setElementId(Id.ZERO);
271             info.addProperty("name", entity.getName());
272             info.addProperty("description", entity.getDescription());
273             info.addProperty("category", entity.getCategoryList());
274             element.setInfo(info);
275             return Optional.ofNullable(element);
276         }
277
278         @Override
279         public Collection<ElementInfo> listElements(SessionContext context, ElementContext elementContext,
280                 Id parentElementId) {
281             return null;
282         }
283
284         @Override
285         public Collection<Element> listElementData(SessionContext context, ElementContext elementContext,
286                 Id parentElementId) {
287             return elementMap.values();
288         }
289
290         @Override
291         public Collection<ElementInfo> listElementsByName(SessionContext context, ElementContext elementContext,
292                 Id parentElementId, String elementName) {
293
294             return elementMap.values().stream().filter(element -> elementName.equals(element.getInfo().getProperty(
295                     ElementPropertyName.elementType.name()))).map(element -> {
296                 ElementInfo elementInfo = new ElementInfo();
297                 elementInfo.setId(element.getElementId());
298                 elementInfo.setInfo(element.getInfo());
299                 return elementInfo;
300             }).collect(Collectors.toList());
301
302         }
303
304         @Override
305         public Optional<ElementInfo> getElementInfoByName(SessionContext context, ElementContext elementContext,
306                 Id parentElementId, String elementName) {
307
308
309             return elementMap.values().stream().filter(element -> elementName.equals(element.getInfo().getProperty(
310                     ElementPropertyName.elementType.name()))).map(element -> {
311                 ElementInfo elementInfo = new ElementInfo();
312                 elementInfo.setId(element.getElementId());
313                 elementInfo.setInfo(element.getInfo());
314                 return elementInfo;
315             }).findAny();
316
317
318         }
319
320         @Override
321         public Optional<ElementConflict> getElementConflict(SessionContext context, ElementContext elementContext,
322                 Id id) {
323             return Optional.empty();
324         }
325
326         @Override
327         public Element saveElement(SessionContext context, ElementContext elementContext, ZusammenElement element,
328                 String message) {
329             if (element.getAction().equals(Action.CREATE) || element.getAction().equals(Action.UPDATE)) {
330                 element.setElementId(new Id(UUID.randomUUID().toString()));
331             }
332             elementMap.put(element.getElementId().getValue(), element);
333             elementId = element.getElementId().getValue();
334             return element;
335         }
336
337         @Override
338         public void resolveElementConflict(SessionContext context, ElementContext elementContext,
339                 ZusammenElement element, Resolution resolution) {
340
341         }
342
343         @Override
344         public void revert(SessionContext sessionContext, Id itemId, Id versionId, Id revisionId) {
345
346         }
347
348         @Override
349         public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId, Id versionId) {
350             return null;
351         }
352
353         @Override
354         public Collection<HealthInfo> checkHealth(SessionContext context) {
355             return null;
356         }
357
358         @Override
359         public String getVersion(SessionContext sessionContext) {
360             return null;
361         }
362
363     }
364
365 }