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.activityspec.be.dao.impl;
19 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
20 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflict;
21 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
22 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict;
23 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
24 import com.amdocs.zusammen.commons.health.data.HealthInfo;
25 import com.amdocs.zusammen.datatypes.Id;
26 import com.amdocs.zusammen.datatypes.SessionContext;
27 import com.amdocs.zusammen.datatypes.item.Action;
28 import com.amdocs.zusammen.datatypes.item.ElementContext;
29 import com.amdocs.zusammen.datatypes.item.Info;
30 import com.amdocs.zusammen.datatypes.item.Item;
31 import com.amdocs.zusammen.datatypes.item.ItemVersion;
32 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
33 import com.amdocs.zusammen.datatypes.item.ItemVersionStatus;
34 import com.amdocs.zusammen.datatypes.item.Resolution;
35 import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions;
36 import com.amdocs.zusammen.datatypes.itemversion.Tag;
38 import java.io.InputStream;
40 import org.onap.sdc.activityspec.be.dao.impl.ActivitySpecDaoZusammenImpl.InfoPropertyName;
41 import org.onap.sdc.activityspec.be.dao.types.ActivitySpecEntity;
42 import org.onap.sdc.activityspec.be.datatypes.ActivitySpecData;
43 import org.onap.sdc.activityspec.be.datatypes.ActivitySpecParameter;
44 import org.onap.sdc.activityspec.be.datatypes.ElementType;
45 import org.openecomp.core.utilities.json.JsonUtil;
46 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
47 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
48 import org.openecomp.sdc.versioning.dao.types.Version;
49 import org.openecomp.types.ElementPropertyName;
50 import org.testng.Assert;
51 import org.testng.annotations.AfterMethod;
52 import org.testng.annotations.BeforeMethod;
53 import org.testng.annotations.Test;
55 import java.util.ArrayList;
56 import java.util.Collection;
57 import java.util.HashMap;
58 import java.util.List;
60 import java.util.Optional;
61 import java.util.UUID;
62 import java.util.stream.Collectors;
64 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
66 public class ActivitySpecZusammenDaoImplTest {
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 ActivitySpecDaoZusammenImpl daoImpl;
75 private ActivitySpecEntity entity;
80 SessionContextProviderFactory.getInstance().createInterface().create("test", tenant);
81 zusammenAdaptor = new ZusammenAdaptorMock();
82 daoImpl = new ActivitySpecDaoZusammenImpl(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");
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 =
114 zusammenAdaptor.getElementInfoByName(context, elementContext, Id.ZERO, ElementType.ACTIVITYSPEC.name());
115 Assert.assertTrue(testElementInfo.isPresent());
116 Assert.assertEquals(testElementInfo.get().getInfo().getName(), ElementType.ACTIVITYSPEC.name());
117 Assert.assertEquals(testElementInfo.get().getInfo().getProperty(
118 ActivitySpecDaoZusammenImpl.InfoPropertyName.DESCRIPTION.getValue()), entity.getDescription());
119 Assert.assertEquals(testElementInfo.get().getInfo().getProperty(InfoPropertyName.CATEGORY.getValue()),
120 entity.getCategoryList());
121 Assert.assertEquals(testElementInfo.get().getInfo()
122 .getProperty(ActivitySpecDaoZusammenImpl.InfoPropertyName.NAME.getValue()),
125 final Optional<Element> testElement =
126 zusammenAdaptor.getElement(context, elementContext, zusammenAdaptor.elementId);
127 final InputStream data = testElement.get().getData();
128 final ActivitySpecData activitySpecData = JsonUtil.json2Object(data, ActivitySpecData.class);
129 Assert.assertEquals(activitySpecData.getInputs().get(0).getName(), entity.getInputs().get(0).getName());
133 public void testGet() {
134 final ActivitySpecEntity retrieved = daoImpl.get(entity);
135 Assert.assertEquals(retrieved.getName(), entity.getName());
136 Assert.assertEquals(retrieved.getDescription(), entity.getDescription());
137 Assert.assertEquals(retrieved.getCategoryList(), entity.getCategoryList());
141 public void testUpdate() {
142 entity.setDescription("Update AS version1");
143 daoImpl.update(entity);
144 final ActivitySpecEntity retrieved = daoImpl.get(entity);
145 Assert.assertEquals(retrieved.getName(), entity.getName());
146 Assert.assertEquals(retrieved.getDescription(), entity.getDescription());
147 Assert.assertEquals(retrieved.getCategoryList(), entity.getCategoryList());
150 private class ZusammenAdaptorMock implements ZusammenAdaptor {
152 private ItemVersion itemVersion;
153 private final Map<String, Element> elementMap = new HashMap<>();
157 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
159 return Optional.ofNullable(itemVersion);
163 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
168 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
173 public Optional<Element> getElement(SessionContext context, ElementContext elementContext, String elementId) {
174 return Optional.of(elementMap.get(elementId));
178 public Optional<Element> getElementByName(SessionContext context, ElementContext elementContext,
179 Id parentElementId, String elementName) {
180 //return Optional.empty();
181 ZusammenElement element = new ZusammenElement();
182 Info info = new Info();
183 element.setElementId(Id.ZERO);
184 info.addProperty("name", entity.getName());
185 info.addProperty("description", entity.getDescription());
186 info.addProperty("category", entity.getCategoryList());
187 element.setInfo(info);
188 return Optional.ofNullable(element);
192 public Collection<ElementInfo> listElements(SessionContext context, ElementContext elementContext,
193 Id parentElementId) {
198 public Collection<Element> listElementData(SessionContext context, ElementContext elementContext,
199 Id parentElementId) {
200 return elementMap.values();
204 public Collection<ElementInfo> listElementsByName(SessionContext context, ElementContext elementContext,
205 Id parentElementId, String elementName) {
207 return elementMap.values().stream()
208 .filter(element -> elementName.equals(element.getInfo()
210 ElementPropertyName.elementType
213 ElementInfo elementInfo = new ElementInfo();
214 elementInfo.setId(element.getElementId());
215 elementInfo.setInfo(element.getInfo());
217 }).collect(Collectors.toList());
222 public Optional<ElementInfo> getElementInfoByName(SessionContext context, ElementContext elementContext,
223 Id parentElementId, String elementName) {
226 return elementMap.values().stream()
227 .filter(element -> elementName.equals(element.getInfo()
229 ElementPropertyName.elementType
232 ElementInfo elementInfo = new ElementInfo();
233 elementInfo.setId(element.getElementId());
234 elementInfo.setInfo(element.getInfo());
242 public Element saveElement(SessionContext context, ElementContext elementContext, ZusammenElement element,
244 if (element.getAction().equals(Action.CREATE) || element.getAction().equals(Action.UPDATE)) {
245 element.setElementId(new Id(UUID.randomUUID().toString()));
247 elementMap.put(element.getElementId().getValue(), element);
248 elementId = element.getElementId().getValue();
253 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
254 ZusammenElement element, Resolution resolution) {
259 public Collection<HealthInfo> checkHealth(SessionContext context) {
264 public Id createItem(SessionContext context, Info info) {
269 public void updateItem(SessionContext context, Id itemId, Info info) {
274 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId, ItemVersionData itemVersionData) {
279 public void updateVersion(SessionContext context, Id itemId, Id versionId, ItemVersionData itemVersionData) {
284 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
289 public String getVersion(SessionContext sessionContext) {
294 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
299 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
304 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
309 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef) {
315 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
320 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
325 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
330 public Optional<ElementInfo> getElementInfo(SessionContext context, ElementContext elementContext,
332 return Optional.empty();
336 public void revert(SessionContext sessionContext, Id itemId, Id versionId, Id revisionId) {
341 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId, Id versionId) {
346 public Optional<ElementConflict> getElementConflict(SessionContext context, ElementContext elementContext,
348 return Optional.empty();
352 public Collection<Item> listItems(SessionContext context) {
357 public Item getItem(SessionContext context, Id itemId) {
362 public void deleteItem(SessionContext context, Id itemId) {