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.persistence.impl;
19 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
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;
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;
65 @RunWith(SpringJUnit4ClassRunner.class)
66 public class ActivitySpecRepositoryImplTest {
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";
73 private ZusammenAdaptorMock zusammenAdaptor;
74 private ActivitySpecRepositoryImpl daoImpl;
75 private ActivitySpecEntity entity;
80 SessionContextProviderFactory.getInstance().createInterface().create("test", tenant);
81 zusammenAdaptor = new ZusammenAdaptorMock();
82 daoImpl = new ActivitySpecRepositoryImpl(zusammenAdaptor);
83 entity = new ActivitySpecEntity();
84 entity = new ActivitySpecEntity();
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);
101 public void tearDown() {
102 SessionContextProviderFactory.getInstance().createInterface().close();
106 public void testCreate() {
107 ItemVersion itemVersionmock = new ItemVersion();
108 itemVersionmock.setId(new Id());
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()),
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());
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());
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());
151 private class ZusammenAdaptorMock implements ZusammenAdaptor {
153 private final Map<String, Element> elementMap = new HashMap<>();
155 private ItemVersion itemVersion;
158 public Collection<Item> listItems(SessionContext context) {
163 public Item getItem(SessionContext context, Id itemId) {
168 public void deleteItem(SessionContext context, Id itemId) {
173 public Id createItem(SessionContext context, Info info) {
178 public void updateItem(SessionContext context, Id itemId, Info info) {
183 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
185 return Optional.ofNullable(itemVersion);
189 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
194 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
199 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId, ItemVersionData itemVersionData) {
204 public void updateVersion(SessionContext context, Id itemId, Id versionId, ItemVersionData itemVersionData) {
209 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
214 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
219 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
224 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
229 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef) {
234 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
239 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
244 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
249 public void cleanVersion(SessionContext sessionContext, Id itemId, Id versionId) {
254 public Optional<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext,
256 return Optional.empty();
260 public Optional<Element> getElement(SessionContext context, ElementContext elementContext, String elementId) {
261 return Optional.of(elementMap.get(elementId));
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);
279 public Collection<ElementInfo> listElements(SessionContext context, ElementContext elementContext,
280 Id parentElementId) {
285 public Collection<Element> listElementData(SessionContext context, ElementContext elementContext,
286 Id parentElementId) {
287 return elementMap.values();
291 public Collection<ElementInfo> listElementsByName(SessionContext context, ElementContext elementContext,
292 Id parentElementId, String elementName) {
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());
300 }).collect(Collectors.toList());
305 public Optional<ElementInfo> getElementInfoByName(SessionContext context, ElementContext elementContext,
306 Id parentElementId, String elementName) {
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());
321 public Optional<ElementConflict> getElementConflict(SessionContext context, ElementContext elementContext,
323 return Optional.empty();
327 public Element saveElement(SessionContext context, ElementContext elementContext, ZusammenElement element,
329 if (element.getAction().equals(Action.CREATE) || element.getAction().equals(Action.UPDATE)) {
330 element.setElementId(new Id(UUID.randomUUID().toString()));
332 elementMap.put(element.getElementId().getValue(), element);
333 elementId = element.getElementId().getValue();
338 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
339 ZusammenElement element, Resolution resolution) {
344 public void revert(SessionContext sessionContext, Id itemId, Id versionId, Id revisionId) {
349 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId, Id versionId) {
354 public Collection<HealthInfo> checkHealth(SessionContext context) {
359 public String getVersion(SessionContext sessionContext) {