39c14e64fda54a7220b567814c6e815d35abcf45
[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.ElementInfo;
25 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
26 import com.amdocs.zusammen.commons.health.data.HealthInfo;
27 import com.amdocs.zusammen.datatypes.Id;
28 import com.amdocs.zusammen.datatypes.SessionContext;
29 import com.amdocs.zusammen.datatypes.UserInfo;
30 import com.amdocs.zusammen.datatypes.item.ElementContext;
31 import com.amdocs.zusammen.datatypes.item.Info;
32 import com.amdocs.zusammen.datatypes.item.Item;
33 import com.amdocs.zusammen.datatypes.item.ItemVersion;
34 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
35 import com.amdocs.zusammen.datatypes.itemversion.Tag;
36 import org.openecomp.core.utilities.CommonMethods;
37 import org.openecomp.core.utilities.file.FileContentHandler;
38 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
39 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
40 import org.openecomp.sdc.model.impl.zusammen.StructureElement;
41 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
42 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
43 import org.openecomp.sdc.tosca.services.YamlUtil;
44 import org.openecomp.sdc.versioning.dao.types.Version;
45 import org.testng.Assert;
46 import org.testng.annotations.Test;
47
48 import java.io.ByteArrayInputStream;
49 import java.util.ArrayList;
50 import java.util.Collection;
51 import java.util.HashMap;
52 import java.util.Map;
53 import java.util.Optional;
54
55 public class ServiceModelDaoFactoryTest {
56
57   private static final String vspId = CommonMethods.nextUuId();
58   private static final Version version = Version.valueOf("1.0");
59   private static final String baseServiceTemplateName = "baseYaml.yaml";
60   private static String artifact001;
61
62
63   @Test
64   public void storeServiceModelTest() {
65
66     ItemVersion itemVersionmock = new ItemVersion();
67     itemVersionmock.setId(new Id());
68
69     ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
70     ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
71         zusammenAdaptor);
72
73     zusammenAdaptor.setItemVersion(itemVersionmock);
74     ToscaServiceModel model = getToscaServiceModel();
75     serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
76   }
77
78   private SessionContext getSessionContext() {
79     SessionContext context = new SessionContext();
80     context.setUser(new UserInfo("USER_A"));
81     context.setTenant("asdc");
82     return context;
83   }
84
85
86   @Test
87   public void getServiceModelTest() {
88
89     ItemVersion itemVersionmock = new ItemVersion();
90     itemVersionmock.setId(new Id());
91
92     ElementInfo elementInfo = new ElementInfo();
93     Info info = new Info();
94     info.addProperty("base","baseElement");
95     elementInfo.setInfo(info);
96
97     ElementInfo artifactElementInfo = new ElementInfo();
98     artifactElementInfo.setInfo(info);
99     ElementInfo templateElementInfo = new ElementInfo();
100     artifactElementInfo.setInfo(info);
101
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"+StructureElement.ServiceModel.name(),elementInfo);
115     zusammenAdaptor.addElementInfo("null"+StructureElement.Artifacts.name(),artifactElementInfo);
116     zusammenAdaptor.addElementInfo("null"+StructureElement.Templates.name(),templateElementInfo);
117     zusammenAdaptor.addElement(element);
118
119     Object model =
120         serviceModelDaoZusammen.getServiceModel(vspId, version);
121     Assert.assertNotNull(model);
122     Assert.assertTrue(model instanceof ToscaServiceModel);
123     if (model instanceof ToscaServiceModel) {
124
125       setArtifact((ToscaServiceModel) model);
126     }
127   }
128
129   private static void setArtifact(ToscaServiceModel model)
130   {
131     artifact001 =
132             (String) (model).getArtifactFiles().getFileList().toArray()[0];
133   }
134   private ToscaServiceModel getToscaServiceModel() {
135
136     Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
137     FileContentHandler artifacts = getArtifacts();
138     return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
139   }
140
141
142   private Map<String, ServiceTemplate> getServiceTemplates(String base) {
143
144     Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
145
146     serviceTemplates.put(base, getServiceTemplate());
147     serviceTemplates.put("SERV1", getServiceTemplate());
148     serviceTemplates.put("SERV2", getServiceTemplate());
149     serviceTemplates.put("SERV3", getServiceTemplate());
150     serviceTemplates.put("SERV4", getServiceTemplate());
151
152     return serviceTemplates;
153   }
154
155   public FileContentHandler getArtifacts() {
156     Map<String, byte[]> artifacts = new HashMap<>();
157     artifacts.put("art1", "this is art1".getBytes());
158     artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
159     artifacts.put("art2", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
160     artifacts.put("art2", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
161
162     FileContentHandler fileContentHandler = new FileContentHandler();
163     fileContentHandler.putAll(artifacts);
164     return fileContentHandler;
165   }
166
167   public ServiceTemplate getServiceTemplate() {
168     ServiceTemplate serviceTemplate = new ServiceTemplate();
169     serviceTemplate.setTosca_definitions_version("version 1.0");
170     serviceTemplate.setDescription(CommonMethods.nextUuId());
171     return serviceTemplate;
172   }
173
174   private class ZusammenAdaptorMock  implements ZusammenAdaptor
175     {
176
177     private ItemVersion itemVersion;
178     private Map<String,ElementInfo> elementInfoMap = new HashMap();
179       private Collection<Element> elements = new ArrayList<>();
180
181       public void setItemVersion(ItemVersion itemVersion){
182       this.itemVersion = itemVersion;
183     }
184
185     public void addElementInfo(String key,ElementInfo elementInfo){
186       elementInfoMap.put(key,elementInfo);
187     }
188     public void addElement(Element element){
189      elements.add(element);
190     }
191     @Override
192     public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
193
194       return Optional.ofNullable(itemVersion);
195     }
196
197       @Override
198       public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
199                                           String elementId) {
200         return null;
201       }
202
203       @Override
204       public Optional<Element> getElementByName(SessionContext context,
205                                                 ElementContext elementContext,
206                                                 Id parentElementId, String elementName) {
207         return null;
208       }
209
210       @Override
211       public Collection<ElementInfo> listElements(SessionContext context,
212                                                   ElementContext elementContext,
213                                                   Id parentElementId) {
214         return null;
215       }
216
217       @Override
218       public Collection<Element> listElementData(SessionContext context,
219                                                  ElementContext elementContext,
220                                                  Id parentElementId) {
221         return elements;
222       }
223
224       @Override
225       public Collection<ElementInfo> listElementsByName(SessionContext context,
226                                                         ElementContext elementContext,
227                                                         Id parentElementId, String elementName) {
228         return null;
229       }
230
231       @Override
232       public Optional<ElementInfo> getElementInfoByName(SessionContext context,
233                                                         ElementContext elementContext,
234                                                         Id parentElementId, String elementName) {
235         return Optional.ofNullable(elementInfoMap.get(parentElementId+elementName));
236       }
237
238       @Override
239       public Optional<Element> saveElement(SessionContext context, ElementContext elementContext,
240                                            ZusammenElement element, String message) {
241         return null;
242       }
243
244       @Override
245       public Collection<HealthInfo> checkHealth(SessionContext context) {
246         return null;
247       }
248
249       @Override
250       public Id createItem(SessionContext context, Info info) {
251         return null;
252       }
253
254       @Override
255       public void updateItem(SessionContext context, Id itemId, Info info) {
256
257       }
258
259       @Override
260       public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
261                               ItemVersionData itemVersionData) {
262         return null;
263       }
264
265       @Override
266       public void updateVersion(SessionContext context, Id itemId, Id versionId,
267                                 ItemVersionData itemVersionData) {
268
269       }
270
271       @Override
272       public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
273
274       }
275
276       @Override
277       public void resetVersionHistory(SessionContext context, Id itemId, Id versionId, String changeRef) {
278
279       }
280
281       @Override
282       public Optional<ElementInfo> getElementInfo(SessionContext context,
283                                                   ElementContext elementContext,
284                                                   Id elementId) {
285         return null;
286       }
287
288       @Override
289       public String getVersion(SessionContext sessionContext) {
290         return null;
291       }
292
293       @Override
294       public Collection<Item> listItems(SessionContext context) {
295         return null;
296       }
297     }
298 }