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