5cfe33ba9012da65d2c91363a4f1e4a2cf343440
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-software-product-lib / openecomp-sdc-vendor-software-product-core / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / dao / ServiceModelDaoFactoryTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.vendorsoftwareproduct.dao;
22
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;
47
48 import java.io.ByteArrayInputStream;
49 import java.util.ArrayList;
50 import java.util.Collection;
51 import java.util.HashMap;
52 import java.util.Map;
53 import java.util.Optional;
54
55 public class ServiceModelDaoFactoryTest {
56
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;
61
62
63   @Test
64   public void storeServiceModelTest() {
65
66     ItemVersion itemVersionmock = new ItemVersion();
67     itemVersionmock.setId(new Id());
68
69     ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
70     ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
71         zusammenAdaptor);
72
73     zusammenAdaptor.setItemVersion(itemVersionmock);
74     ToscaServiceModel model = getToscaServiceModel();
75     serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
76   }
77
78   private SessionContext getSessionContext() {
79     SessionContext context = new SessionContext();
80     context.setUser(new UserInfo("USER_A"));
81     context.setTenant("asdc");
82     return context;
83   }
84
85
86   @Test
87   public void getServiceModelTest() {
88
89     ItemVersion itemVersionmock = new ItemVersion();
90     itemVersionmock.setId(new Id());
91
92     ElementInfo elementInfo = new ElementInfo();
93     Info info = new Info();
94     info.addProperty("base","baseElement");
95     elementInfo.setInfo(info);
96
97     ElementInfo artifactElementInfo = new ElementInfo();
98     artifactElementInfo.setInfo(info);
99     ElementInfo templateElementInfo = new ElementInfo();
100     artifactElementInfo.setInfo(info);
101
102     ZusammenElement element = new ZusammenElement();
103     ServiceTemplate serviceTemplate = new ServiceTemplate();
104     YamlUtil yamlUtil = new YamlUtil();
105     element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
106     info = new Info();
107     info.setName("dataFileName");
108     element.setInfo(info);
109     ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
110     ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
111         zusammenAdaptor);
112
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);
118
119     Object model =
120         serviceModelDaoZusammen.getServiceModel(vspId, version);
121     Assert.assertNotNull(model);
122     Assert.assertTrue(model instanceof ToscaServiceModel);
123     if (model instanceof ToscaServiceModel) {
124
125       artifact001 =
126           (String) ((ToscaServiceModel) model).getArtifactFiles().getFileList().toArray()[0];
127     }
128   }
129
130
131   private ToscaServiceModel getToscaServiceModel() {
132
133     Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
134     FileContentHandler artifacts = getArtifacts();
135     return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
136   }
137
138
139   private Map<String, ServiceTemplate> getServiceTemplates(String base) {
140
141     Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
142
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());
148
149     return serviceTemplates;
150   }
151
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());
158
159     FileContentHandler fileContentHandler = new FileContentHandler();
160     fileContentHandler.putAll(artifacts);
161     return fileContentHandler;
162   }
163
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;
169   }
170
171   private class ZusammenAdaptorMock  implements ZusammenAdaptor
172     {
173
174     private ItemVersion itemVersion;
175     private Map<String,ElementInfo> elementInfoMap = new HashMap();
176       private Collection<Element> elements = new ArrayList<>();
177
178       public void setItemVersion(ItemVersion itemVersion){
179       this.itemVersion = itemVersion;
180     }
181
182     public void addElementInfo(String key,ElementInfo elementInfo){
183       elementInfoMap.put(key,elementInfo);
184     }
185     public void addElement(Element element){
186      elements.add(element);
187     }
188     @Override
189     public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
190
191       return Optional.ofNullable(itemVersion);
192     }
193
194       @Override
195       public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
196                                           String elementId) {
197         return null;
198       }
199
200       @Override
201       public Optional<Element> getElementByName(SessionContext context,
202                                                 ElementContext elementContext,
203                                                 Id parentElementId, String elementName) {
204         return null;
205       }
206
207       @Override
208       public Collection<ElementInfo> listElements(SessionContext context,
209                                                   ElementContext elementContext,
210                                                   Id parentElementId) {
211         return null;
212       }
213
214       @Override
215       public Collection<Element> listElementData(SessionContext context,
216                                                  ElementContext elementContext,
217                                                  Id parentElementId) {
218         return elements;
219       }
220
221       @Override
222       public Collection<ElementInfo> listElementsByName(SessionContext context,
223                                                         ElementContext elementContext,
224                                                         Id parentElementId, String elementName) {
225         return null;
226       }
227
228       @Override
229       public Optional<ElementInfo> getElementInfoByName(SessionContext context,
230                                                         ElementContext elementContext,
231                                                         Id parentElementId, String elementName) {
232         return Optional.ofNullable(elementInfoMap.get(parentElementId+elementName));
233       }
234
235       @Override
236       public Optional<Element> saveElement(SessionContext context, ElementContext elementContext,
237                                            ZusammenElement element, String message) {
238         return null;
239       }
240
241       @Override
242       public Id createItem(SessionContext context, Info info) {
243         return null;
244       }
245
246       @Override
247       public void updateItem(SessionContext context, Id itemId, Info info) {
248
249       }
250
251       @Override
252       public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
253                               ItemVersionData itemVersionData) {
254         return null;
255       }
256
257       @Override
258       public void updateVersion(SessionContext context, Id itemId, Id versionId,
259                                 ItemVersionData itemVersionData) {
260
261       }
262
263       @Override
264       public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
265
266       }
267
268       @Override
269       public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef) {
270
271       }
272
273       @Override
274       public Optional<ElementInfo> getElementInfo(SessionContext context,
275                                                   ElementContext elementContext,
276                                                   Id elementId) {
277         return null;
278       }
279
280       @Override
281       public Collection<Item> listItems(SessionContext context) {
282         return null;
283       }
284     }
285 }