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