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