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