2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct.dao;
23 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
24 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
25 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
26 import com.amdocs.zusammen.datatypes.Id;
27 import com.amdocs.zusammen.datatypes.SessionContext;
28 import com.amdocs.zusammen.datatypes.UserInfo;
29 import com.amdocs.zusammen.datatypes.item.ElementContext;
30 import com.amdocs.zusammen.datatypes.item.Info;
31 import com.amdocs.zusammen.datatypes.item.Item;
32 import com.amdocs.zusammen.datatypes.item.ItemVersion;
33 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
34 import com.amdocs.zusammen.datatypes.itemversion.Tag;
35 import org.apache.commons.lang3.tuple.ImmutablePair;
36 import org.openecomp.core.utilities.CommonMethods;
37 import org.openecomp.core.utilities.file.FileContentHandler;
38 import org.openecomp.core.utilities.yaml.YamlUtil;
39 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
40 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
41 import org.openecomp.sdc.model.impl.zusammen.StructureElement;
42 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
43 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
44 import org.openecomp.sdc.versioning.dao.types.Version;
45 import org.testng.Assert;
46 import org.testng.annotations.Test;
48 import java.io.ByteArrayInputStream;
49 import java.util.ArrayList;
50 import java.util.Collection;
51 import java.util.HashMap;
53 import java.util.Optional;
55 public class ServiceModelDaoFactoryTest {
57 private static final String vspId = CommonMethods.nextUuId();
58 private static final Version version = Version.valueOf("1.0");
59 private static final String baseServiceTemplateName = "baseYaml.yaml";
60 private static String artifact001;
64 public void storeServiceModelTest() {
66 ItemVersion itemVersionmock = new ItemVersion();
67 itemVersionmock.setId(new Id());
69 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
70 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
73 zusammenAdaptor.setItemVersion(itemVersionmock);
74 ToscaServiceModel model = getToscaServiceModel();
75 serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
78 private SessionContext getSessionContext() {
79 SessionContext context = new SessionContext();
80 context.setUser(new UserInfo("USER_A"));
81 context.setTenant("asdc");
87 public void getServiceModelTest() {
89 ItemVersion itemVersionmock = new ItemVersion();
90 itemVersionmock.setId(new Id());
92 ElementInfo elementInfo = new ElementInfo();
93 Info info = new Info();
94 info.addProperty("base","baseElement");
95 elementInfo.setInfo(info);
97 ElementInfo artifactElementInfo = new ElementInfo();
98 artifactElementInfo.setInfo(info);
99 ElementInfo templateElementInfo = new ElementInfo();
100 artifactElementInfo.setInfo(info);
102 ZusammenElement element = new ZusammenElement();
103 ServiceTemplate serviceTemplate = new ServiceTemplate();
104 YamlUtil yamlUtil = new YamlUtil();
105 element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
107 info.setName("dataFileName");
108 element.setInfo(info);
109 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
110 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
113 zusammenAdaptor.setItemVersion(itemVersionmock);
114 zusammenAdaptor.addElementInfo("null"+StructureElement.ServiceModel.name(),elementInfo);
115 zusammenAdaptor.addElementInfo("null"+StructureElement.Artifacts.name(),artifactElementInfo);
116 zusammenAdaptor.addElementInfo("null"+StructureElement.Templates.name(),templateElementInfo);
117 zusammenAdaptor.addElement(element);
120 serviceModelDaoZusammen.getServiceModel(vspId, version);
121 Assert.assertNotNull(model);
122 Assert.assertTrue(model instanceof ToscaServiceModel);
123 if (model instanceof ToscaServiceModel) {
126 (String) ((ToscaServiceModel) model).getArtifactFiles().getFileList().toArray()[0];
131 private ToscaServiceModel getToscaServiceModel() {
133 Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
134 FileContentHandler artifacts = getArtifacts();
135 return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
139 private Map<String, ServiceTemplate> getServiceTemplates(String base) {
141 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
143 serviceTemplates.put(base, getServiceTemplate());
144 serviceTemplates.put("SERV1", getServiceTemplate());
145 serviceTemplates.put("SERV2", getServiceTemplate());
146 serviceTemplates.put("SERV3", getServiceTemplate());
147 serviceTemplates.put("SERV4", getServiceTemplate());
149 return serviceTemplates;
152 public FileContentHandler getArtifacts() {
153 Map<String, byte[]> artifacts = new HashMap<>();
154 artifacts.put("art1", "this is art1".getBytes());
155 artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
156 artifacts.put("art2", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
157 artifacts.put("art2", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
159 FileContentHandler fileContentHandler = new FileContentHandler();
160 fileContentHandler.putAll(artifacts);
161 return fileContentHandler;
164 public ServiceTemplate getServiceTemplate() {
165 ServiceTemplate serviceTemplate = new ServiceTemplate();
166 serviceTemplate.setTosca_definitions_version("version 1.0");
167 serviceTemplate.setDescription(CommonMethods.nextUuId());
168 return serviceTemplate;
171 private class ZusammenAdaptorMock implements ZusammenAdaptor
174 private ItemVersion itemVersion;
175 private Map<String,ElementInfo> elementInfoMap = new HashMap();
176 private Collection<Element> elements = new ArrayList<>();
178 public void setItemVersion(ItemVersion itemVersion){
179 this.itemVersion = itemVersion;
182 public void addElementInfo(String key,ElementInfo elementInfo){
183 elementInfoMap.put(key,elementInfo);
185 public void addElement(Element element){
186 elements.add(element);
189 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
191 return Optional.ofNullable(itemVersion);
195 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
201 public Optional<Element> getElementByName(SessionContext context,
202 ElementContext elementContext,
203 Id parentElementId, String elementName) {
208 public Collection<ElementInfo> listElements(SessionContext context,
209 ElementContext elementContext,
210 Id parentElementId) {
215 public Collection<Element> listElementData(SessionContext context,
216 ElementContext elementContext,
217 Id parentElementId) {
222 public Collection<ElementInfo> listElementsByName(SessionContext context,
223 ElementContext elementContext,
224 Id parentElementId, String elementName) {
229 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
230 ElementContext elementContext,
231 Id parentElementId, String elementName) {
232 return Optional.ofNullable(elementInfoMap.get(parentElementId+elementName));
236 public Optional<Element> saveElement(SessionContext context, ElementContext elementContext,
237 ZusammenElement element, String message) {
242 public Id createItem(SessionContext context, Info info) {
247 public void updateItem(SessionContext context, Id itemId, Info info) {
252 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
253 ItemVersionData itemVersionData) {
258 public void updateVersion(SessionContext context, Id itemId, Id versionId,
259 ItemVersionData itemVersionData) {
264 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
269 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef) {
274 public Optional<ElementInfo> getElementInfo(SessionContext context,
275 ElementContext elementContext,
281 public Collection<Item> listItems(SessionContext context) {