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.commons.health.data.HealthInfo;
27 import com.amdocs.zusammen.datatypes.Id;
28 import com.amdocs.zusammen.datatypes.SessionContext;
29 import com.amdocs.zusammen.datatypes.UserInfo;
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.itemversion.Tag;
36 import org.openecomp.core.utilities.CommonMethods;
37 import org.openecomp.core.utilities.file.FileContentHandler;
38 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
39 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
40 import org.openecomp.sdc.model.impl.zusammen.StructureElement;
41 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
42 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
43 import org.openecomp.sdc.tosca.services.YamlUtil;
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) {
125 setArtifact((ToscaServiceModel) model);
129 private static void setArtifact(ToscaServiceModel model)
132 (String) (model).getArtifactFiles().getFileList().toArray()[0];
134 private ToscaServiceModel getToscaServiceModel() {
136 Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
137 FileContentHandler artifacts = getArtifacts();
138 return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
142 private Map<String, ServiceTemplate> getServiceTemplates(String base) {
144 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
146 serviceTemplates.put(base, getServiceTemplate());
147 serviceTemplates.put("SERV1", getServiceTemplate());
148 serviceTemplates.put("SERV2", getServiceTemplate());
149 serviceTemplates.put("SERV3", getServiceTemplate());
150 serviceTemplates.put("SERV4", getServiceTemplate());
152 return serviceTemplates;
155 public FileContentHandler getArtifacts() {
156 Map<String, byte[]> artifacts = new HashMap<>();
157 artifacts.put("art1", "this is art1".getBytes());
158 artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
159 artifacts.put("art2", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
160 artifacts.put("art2", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
162 FileContentHandler fileContentHandler = new FileContentHandler();
163 fileContentHandler.putAll(artifacts);
164 return fileContentHandler;
167 public ServiceTemplate getServiceTemplate() {
168 ServiceTemplate serviceTemplate = new ServiceTemplate();
169 serviceTemplate.setTosca_definitions_version("version 1.0");
170 serviceTemplate.setDescription(CommonMethods.nextUuId());
171 return serviceTemplate;
174 private class ZusammenAdaptorMock implements ZusammenAdaptor
177 private ItemVersion itemVersion;
178 private Map<String,ElementInfo> elementInfoMap = new HashMap();
179 private Collection<Element> elements = new ArrayList<>();
181 public void setItemVersion(ItemVersion itemVersion){
182 this.itemVersion = itemVersion;
185 public void addElementInfo(String key,ElementInfo elementInfo){
186 elementInfoMap.put(key,elementInfo);
188 public void addElement(Element element){
189 elements.add(element);
192 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
194 return Optional.ofNullable(itemVersion);
198 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
204 public Optional<Element> getElementByName(SessionContext context,
205 ElementContext elementContext,
206 Id parentElementId, String elementName) {
211 public Collection<ElementInfo> listElements(SessionContext context,
212 ElementContext elementContext,
213 Id parentElementId) {
218 public Collection<Element> listElementData(SessionContext context,
219 ElementContext elementContext,
220 Id parentElementId) {
225 public Collection<ElementInfo> listElementsByName(SessionContext context,
226 ElementContext elementContext,
227 Id parentElementId, String elementName) {
232 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
233 ElementContext elementContext,
234 Id parentElementId, String elementName) {
235 return Optional.ofNullable(elementInfoMap.get(parentElementId+elementName));
239 public Optional<Element> saveElement(SessionContext context, ElementContext elementContext,
240 ZusammenElement element, String message) {
245 public Collection<HealthInfo> checkHealth(SessionContext context) {
250 public Id createItem(SessionContext context, Info info) {
255 public void updateItem(SessionContext context, Id itemId, Info info) {
260 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
261 ItemVersionData itemVersionData) {
266 public void updateVersion(SessionContext context, Id itemId, Id versionId,
267 ItemVersionData itemVersionData) {
272 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
277 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef) {
282 public Optional<ElementInfo> getElementInfo(SessionContext context,
283 ElementContext elementContext,
289 public String getVersion(SessionContext sessionContext) {
294 public Collection<Item> listItems(SessionContext context) {