a7d1c570a48d079168b3ddd3846774a7936c28df
[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.ElementConflict;
25 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
26 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict;
27 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
28 import com.amdocs.zusammen.commons.health.data.HealthInfo;
29 import com.amdocs.zusammen.datatypes.Id;
30 import com.amdocs.zusammen.datatypes.SessionContext;
31 import com.amdocs.zusammen.datatypes.item.ElementContext;
32 import com.amdocs.zusammen.datatypes.item.Info;
33 import com.amdocs.zusammen.datatypes.item.Item;
34 import com.amdocs.zusammen.datatypes.item.ItemVersion;
35 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
36 import com.amdocs.zusammen.datatypes.item.ItemVersionStatus;
37 import com.amdocs.zusammen.datatypes.item.Resolution;
38 import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions;
39 import com.amdocs.zusammen.datatypes.itemversion.Tag;
40 import org.openecomp.core.utilities.CommonMethods;
41 import org.openecomp.core.utilities.file.FileContentHandler;
42 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
43 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
44 import org.openecomp.sdc.datatypes.model.ElementType;
45 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
46 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
47 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
48 import org.openecomp.sdc.tosca.services.YamlUtil;
49 import org.openecomp.sdc.versioning.dao.types.Version;
50 import org.testng.Assert;
51 import org.testng.annotations.AfterMethod;
52 import org.testng.annotations.BeforeMethod;
53 import org.testng.annotations.Test;
54
55 import java.io.ByteArrayInputStream;
56 import java.util.ArrayList;
57 import java.util.Collection;
58 import java.util.HashMap;
59 import java.util.Map;
60 import java.util.Optional;
61
62 public class ServiceModelDaoFactoryTest {
63
64   private static final String vspId = CommonMethods.nextUuId();
65   private static final Version version = Version.valueOf("1.0");
66   private static final String baseServiceTemplateName = "baseYaml.yaml";
67   private static String artifact001;
68   private static final String tenant = "dox";
69
70   @BeforeMethod
71   public void setUp(){
72     SessionContextProviderFactory.getInstance().createInterface().create("test", tenant);
73   }
74
75   @AfterMethod
76   public void tearDaown(){
77     SessionContextProviderFactory.getInstance().createInterface().close();
78   }
79
80   @Test
81   public void storeServiceModelTest() {
82
83     ItemVersion itemVersionmock = new ItemVersion();
84     itemVersionmock.setId(new Id());
85
86     ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
87     ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
88         zusammenAdaptor);
89
90     zusammenAdaptor.setItemVersion(itemVersionmock);
91     ToscaServiceModel model = getToscaServiceModel();
92     serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
93   }
94
95   @Test
96   public void getServiceModelTest() {
97
98     ItemVersion itemVersionmock = new ItemVersion();
99     itemVersionmock.setId(new Id());
100
101     ElementInfo elementInfo = new ElementInfo();
102     Info info = new Info();
103     info.addProperty("base", "baseElement");
104     elementInfo.setInfo(info);
105
106     ElementInfo artifactElementInfo = new ElementInfo();
107     artifactElementInfo.setInfo(new Info());
108     artifactElementInfo.getInfo().setName(ElementType.Artifacts.name());
109     ElementInfo templateElementInfo = new ElementInfo();
110     templateElementInfo.setInfo(new Info());
111     templateElementInfo.getInfo().setName(ElementType.Templates.name());
112
113     ElementInfo serviceModelElementInfo = new ElementInfo();
114     serviceModelElementInfo.setInfo(new Info());
115     serviceModelElementInfo.getInfo().setName(ElementType.ServiceModel.name());
116     ZusammenElement element = new ZusammenElement();
117     ServiceTemplate serviceTemplate = new ServiceTemplate();
118     YamlUtil yamlUtil = new YamlUtil();
119     element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
120     info = new Info();
121     info.setName("dataFileName");
122     element.setInfo(info);
123     ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
124     ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
125         zusammenAdaptor);
126
127     zusammenAdaptor.setItemVersion(itemVersionmock);
128     zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(), elementInfo);
129     zusammenAdaptor.addElementInfo("null" + ElementType.Artifacts.name(), artifactElementInfo);
130     zusammenAdaptor.addElementInfo("null" + ElementType.Templates.name(), templateElementInfo);
131     zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(),
132         serviceModelElementInfo);
133     zusammenAdaptor.addElement(element);
134
135     ToscaServiceModel model =
136         serviceModelDaoZusammen.getServiceModel(vspId, version);
137     Assert.assertNotNull(model);
138
139     setArtifact(model);
140     Assert.assertEquals(artifact001,"dataFileName");
141
142   }
143
144   private static void setArtifact(ToscaServiceModel model) {
145     artifact001 =
146         (String) (model).getArtifactFiles().getFileList().toArray()[0];
147   }
148
149   private ToscaServiceModel getToscaServiceModel() {
150
151     Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
152     FileContentHandler artifacts = getArtifacts();
153     return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
154   }
155
156
157   private Map<String, ServiceTemplate> getServiceTemplates(String base) {
158
159     Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
160
161     serviceTemplates.put(base, getServiceTemplate());
162     serviceTemplates.put("SERV1", getServiceTemplate());
163     serviceTemplates.put("SERV2", getServiceTemplate());
164     serviceTemplates.put("SERV3", getServiceTemplate());
165     serviceTemplates.put("SERV4", getServiceTemplate());
166
167     return serviceTemplates;
168   }
169
170   public FileContentHandler getArtifacts() {
171     Map<String, byte[]> artifacts = new HashMap<>();
172     artifacts.put("art1", "this is art1".getBytes());
173     artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
174     artifacts.put("art3", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
175     artifacts.put("art4", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
176
177     FileContentHandler fileContentHandler = new FileContentHandler();
178     fileContentHandler.putAll(artifacts);
179     return fileContentHandler;
180   }
181
182   private ServiceTemplate getServiceTemplate() {
183     ServiceTemplate serviceTemplate = new ServiceTemplate();
184     serviceTemplate.setTosca_definitions_version("version 1.0");
185     serviceTemplate.setDescription(CommonMethods.nextUuId());
186     return serviceTemplate;
187   }
188
189   private class ZusammenAdaptorMock implements ZusammenAdaptor {
190
191     private ItemVersion itemVersion;
192     private Map<String, ElementInfo> elementInfoMap = new HashMap<>();
193     private Collection<Element> elements = new ArrayList<>();
194
195     private void setItemVersion(ItemVersion itemVersion) {
196       this.itemVersion = itemVersion;
197     }
198
199     private void addElementInfo(String key, ElementInfo elementInfo) {
200       elementInfoMap.put(key, elementInfo);
201     }
202
203     private void addElement(Element element) {
204       elements.add(element);
205     }
206
207     @Override
208     public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
209
210       return Optional.ofNullable(itemVersion);
211     }
212
213     @Override
214     public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
215       return null;
216     }
217
218     @Override
219     public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
220       return null;
221     }
222
223     @Override
224     public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
225                                         String elementId) {
226       return Optional.empty();
227     }
228
229     @Override
230     public Optional<Element> getElementByName(SessionContext context,
231                                               ElementContext elementContext,
232                                               Id parentElementId, String elementName) {
233       return Optional.empty();
234     }
235
236     @Override
237     public Collection<ElementInfo> listElements(SessionContext context,
238                                                 ElementContext elementContext,
239                                                 Id parentElementId) {
240       return null;
241     }
242
243     @Override
244     public Collection<Element> listElementData(SessionContext context,
245                                                ElementContext elementContext,
246                                                Id parentElementId) {
247       return elements;
248     }
249
250     @Override
251     public Collection<ElementInfo> listElementsByName(SessionContext context,
252                                                       ElementContext elementContext,
253                                                       Id parentElementId, String elementName) {
254
255       if (elementName.equals(ElementType.VspModel.name())) {
256         return elementInfoMap.values();
257       }
258
259       return null;
260     }
261
262     @Override
263     public Optional<ElementInfo> getElementInfoByName(SessionContext context,
264                                                       ElementContext elementContext,
265                                                       Id parentElementId, String elementName) {
266
267       if (elementName.equals(ElementType.Templates.name())) {
268         return Optional.ofNullable(elementInfoMap.get("null" + elementName));
269       } else if (elementName.equals(ElementType.Artifacts.name())) {
270         return Optional.ofNullable(elementInfoMap.get("null" + elementName));
271       }
272
273       return Optional.empty();
274     }
275
276     @Override
277     public Element saveElement(SessionContext context, ElementContext elementContext,
278                                ZusammenElement element, String message) {
279       return null;
280     }
281
282     @Override
283     public void resolveElementConflict(SessionContext context, ElementContext elementContext,
284                                        ZusammenElement element, Resolution resolution) {
285
286     }
287
288     @Override
289     public Collection<HealthInfo> checkHealth(SessionContext context) {
290       return null;
291     }
292
293     @Override
294     public Id createItem(SessionContext context, Info info) {
295       return null;
296     }
297
298     @Override
299     public void updateItem(SessionContext context, Id itemId, Info info) {
300
301     }
302
303     @Override
304     public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
305                             ItemVersionData itemVersionData) {
306       return null;
307     }
308
309     @Override
310     public void updateVersion(SessionContext context, Id itemId, Id versionId,
311                               ItemVersionData itemVersionData) {
312
313     }
314
315     @Override
316     public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
317       return null;
318     }
319
320     @Override
321     public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
322       return null;
323     }
324
325     @Override
326     public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
327       return null;
328     }
329
330     @Override
331     public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
332
333     }
334
335     @Override
336     public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
337                                     String changeRef) {
338
339
340     }
341
342     /*@Override
343     public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
344                                         Id revisionId) {
345
346     }
347
348     @Override
349     public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
350                                                      Id versionId) {
351       return null;
352     }*/
353
354     @Override
355     public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
356
357     }
358
359     @Override
360     public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
361
362     }
363
364     @Override
365     public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
366
367     }
368
369     @Override
370     public Optional<ElementInfo> getElementInfo(SessionContext context,
371                                                 ElementContext elementContext,
372                                                 Id elementId) {
373       return Optional.empty();
374     }
375
376     @Override
377     public String getVersion(SessionContext sessionContext) {
378       return null;
379     }
380
381     @Override
382     public void revert(SessionContext sessionContext, Id itemId, Id versionId,
383                        Id revisionId) {
384
385     }
386
387     @Override
388     public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId,
389                                               Id versionId) {
390       return null;
391     }
392
393     @Override
394     public Optional<ElementConflict> getElementConflict(SessionContext context,
395                                                         ElementContext elementContext,
396                                                         Id id) {
397       return Optional.empty();
398     }
399
400     @Override
401     public Collection<Item> listItems(SessionContext context) {
402       return null;
403     }
404
405     @Override
406     public Item getItem(SessionContext context, Id itemId) {
407       return null;
408     }
409
410     @Override
411     public void deleteItem(SessionContext context, Id itemId) {
412
413     }
414   }
415 }