2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.components.impl;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.Mockito.when;
28 import java.io.IOException;
29 import java.util.ArrayList;
30 import java.util.HashMap;
31 import java.util.List;
34 import org.apache.cassandra.io.sstable.Component;
35 import org.codehaus.jackson.map.DeserializationConfig;
36 import org.codehaus.jackson.map.ObjectMapper;
37 import org.codehaus.jackson.map.SerializationConfig.Feature;
38 import org.codehaus.jackson.map.annotate.JsonSerialize;
39 import org.junit.Before;
40 import org.junit.BeforeClass;
41 import org.junit.Test;
42 import org.mockito.InjectMocks;
43 import org.mockito.Mock;
44 import org.mockito.Mockito;
45 import org.mockito.MockitoAnnotations;
46 import org.openecomp.sdc.be.components.ArtifactsResolver;
47 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic;
48 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
49 import org.openecomp.sdc.be.config.ConfigurationManager;
50 import org.openecomp.sdc.be.dao.api.ActionStatus;
51 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
52 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
53 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
54 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
55 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
56 import org.openecomp.sdc.be.impl.ComponentsUtils;
57 import org.openecomp.sdc.be.model.ArtifactDefinition;
58 import org.openecomp.sdc.be.model.ArtifactType;
59 import org.openecomp.sdc.be.model.InterfaceDefinition;
60 import org.openecomp.sdc.be.model.Resource;
61 import org.openecomp.sdc.be.model.Service;
62 import org.openecomp.sdc.be.model.User;
63 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
64 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
65 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
66 import org.openecomp.sdc.be.model.operations.api.IUserAdminOperation;
67 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
68 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
69 import org.openecomp.sdc.be.model.operations.impl.ServiceOperation;
70 import org.openecomp.sdc.be.resources.data.ESArtifactData;
71 import org.openecomp.sdc.be.servlets.RepresentationUtils;
72 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
73 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
74 import org.openecomp.sdc.common.api.ConfigurationSource;
75 import org.openecomp.sdc.common.impl.ExternalConfiguration;
76 import org.openecomp.sdc.common.impl.FSConfigurationSource;
77 import org.openecomp.sdc.exception.ResponseFormat;
79 import com.google.gson.Gson;
80 import com.google.gson.GsonBuilder;
81 import com.google.gson.JsonElement;
83 import fj.data.Either;
85 public class ArtifactBusinessLogicTest {
87 static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
88 static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
91 static ArtifactsBusinessLogic artifactBL = new ArtifactsBusinessLogic();
93 public static final ArtifactOperation artifactOperation = Mockito.mock(ArtifactOperation.class);
94 public static final ComponentsUtils componentsUtils = Mockito.mock(ComponentsUtils.class);
95 public static final IInterfaceLifecycleOperation lifecycleOperation = Mockito.mock(IInterfaceLifecycleOperation.class);
96 public static final IUserAdminOperation userOperation = Mockito.mock(IUserAdminOperation.class);
97 public static final IElementOperation elementOperation = Mockito.mock(IElementOperation.class);
98 public static final ServiceOperation serviceOperation = Mockito.mock(ServiceOperation.class);
99 public static final ArtifactCassandraDao artifactCassandraDao = Mockito.mock(ArtifactCassandraDao.class);
100 public static final ToscaOperationFacade toscaOperationFacade = Mockito.mock(ToscaOperationFacade.class);
102 // public static final InformationDeployedArtifactsBusinessLogic
103 // informationDeployedArtifactsBusinessLogic =
104 // Mockito.mock(InformationDeployedArtifactsBusinessLogic.class);
106 public static final Resource resource = Mockito.mock(Resource.class);
107 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
110 public static void setup() {
112 Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either.right(StorageOperationStatus.NOT_FOUND);
113 when(artifactOperation.getArtifactById(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(NotFoundResult);
115 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either.right(StorageOperationStatus.NOT_FOUND);
116 when(artifactOperation.getArtifacts(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Service), Mockito.anyBoolean())).thenReturn(NotFoundResult2);
117 when(artifactOperation.getArtifacts(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Resource), Mockito.anyBoolean())).thenReturn(NotFoundResult2);
119 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either.right(StorageOperationStatus.NOT_FOUND);
120 when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(notFoundInterfaces);
122 User userJH = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis());
123 Either<User, ActionStatus> getUserResult = Either.left(userJH);
125 when(userOperation.getUserData("jh0003", false)).thenReturn(getUserResult);
127 Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
128 when(elementOperation.getAllArtifactTypes()).thenReturn(getType);
130 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
131 // when(informationDeployedArtifactsBusinessLogic.getAllDeployableArtifacts(Mockito.any(Resource.class))).thenReturn(new
132 // ArrayList<ArtifactDefinition>());
135 private static List<ArtifactType> getAllTypes() {
136 List<ArtifactType> artifactTypes = new ArrayList<ArtifactType>();
137 List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration().getArtifactTypes();
138 for (String artifactType : artifactTypesList) {
139 ArtifactType artifactT = new ArtifactType();
140 artifactT.setName(artifactType);
141 artifactTypes.add(artifactT);
143 return artifactTypes;
147 public void initMocks() {
148 MockitoAnnotations.initMocks(this);
152 public void testValidJson() {
153 ArtifactDefinition ad = createArtifactDef();
155 String jsonArtifact = "";
157 ObjectMapper mapper = new ObjectMapper();
158 mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
159 mapper.configure(Feature.FAIL_ON_EMPTY_BEANS, false);
160 mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
163 jsonArtifact = mapper.writeValueAsString(ad);
164 } catch (IOException e) {
165 // TODO Auto-generated catch block
169 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class);
170 assertEquals(ad, afterConvert);
173 private ArtifactDefinition createArtifactDef() {
174 ArtifactDefinition ad = new ArtifactDefinition();
175 ad.setArtifactName("artifact1.yaml");
176 ad.setArtifactLabel("label1");
177 ad.setDescription("description");
178 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
179 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
180 ad.setCreationDate(System.currentTimeMillis());
181 ad.setMandatory(false);
187 public void testInvalidStringGroupType() {
188 ArtifactDefinition ad = new ArtifactDefinition();
189 ad.setArtifactName("artifact1");
190 ad.setCreationDate(System.currentTimeMillis());
191 ad.setMandatory(false);
194 JsonElement jsonArtifact = gson.toJsonTree(ad);
195 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
197 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
198 assertNull(afterConvert);
202 public void testInvalidNumberGroupType() {
203 ArtifactDefinition ad = new ArtifactDefinition();
204 ad.setArtifactName("artifact1");
205 ad.setCreationDate(System.currentTimeMillis());
206 ad.setMandatory(false);
209 JsonElement jsonArtifact = gson.toJsonTree(ad);
210 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
212 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
213 assertNull(afterConvert);
217 public void testInvalidGroupTypeWithSpace() {
218 ArtifactDefinition ad = new ArtifactDefinition();
219 ad.setArtifactName("artifact1");
220 ad.setCreationDate(System.currentTimeMillis());
221 ad.setMandatory(false);
224 JsonElement jsonArtifact = gson.toJsonTree(ad);
225 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
227 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
228 assertNull(afterConvert);
232 public void testInvalidTimeoutWithSpace() {
233 ArtifactDefinition ad = new ArtifactDefinition();
234 ad.setArtifactName("artifact1");
235 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
236 ad.setCreationDate(System.currentTimeMillis());
237 ad.setMandatory(false);
239 JsonElement jsonArtifact = gson.toJsonTree(ad);
240 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
242 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
243 assertNull(afterConvert);
247 public void testValidMibAritactsConfiguration() {
248 Map<String, ArtifactTypeConfig> componentDeploymentArtifacts =
249 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceDeploymentArtifacts();
250 Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts =
251 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
252 assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
253 assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
254 assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
255 assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
259 public void testDownloadServiceArtifactByNames() {
260 Service service = new Service();
261 String serviceName = "myService";
262 String serviceVersion = "1.0";
263 String serviceId = "serviceId";
264 service.setName(serviceName);
265 service.setVersion(serviceVersion);
266 service.setUniqueId(serviceId);
268 String artifactName = "service-Myservice-template.yml";
269 String artifactLabel = "assettoscatemplate";
270 String esArtifactId = "123123dfgdfgd0";
271 byte[] payload = "some payload".getBytes();
272 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
273 toscaTemplateArtifact.setArtifactName(artifactName);
274 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
275 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
276 toscaTemplateArtifact.setEsId(esArtifactId);
277 toscaTemplateArtifact.setPayload(payload);
279 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
280 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
281 service.setToscaArtifacts(toscaArtifacts);
283 ESArtifactData esArtifactData =new ESArtifactData(esArtifactId);
284 esArtifactData.setDataAsArray(payload);
285 Either<ESArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(esArtifactData);
286 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
287 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
288 serviceList.add(service);
289 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either.left(serviceList);
290 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
291 Either<byte[], ResponseFormat> downloadServiceArtifactByNamesRes =
292 artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
293 assertTrue(downloadServiceArtifactByNamesRes.isLeft());
294 assertTrue(downloadServiceArtifactByNamesRes.left().value() !=null && downloadServiceArtifactByNamesRes.left().value().length == payload.length);
299 // public void convertAndValidateDeploymentArtifactNonHeatSuccess(){
300 // ArtifactDefinition createArtifactDef = createArtifactDef();
301 // createArtifactDef.setArtifactType(ArtifactTypeEnum.YANG_XML.getType());
303 // Either<ArtifactDefinition, ResponseFormat> validateResult = artifactBL
305 // assertTrue(validateResult.isLeft());
306 // ArtifactDefinition validatedArtifact = validateResult.left().value();
308 // assertEquals(createArtifactDef.getArtifactGroupType(),
309 // validatedArtifact.getArtifactGroupType());
310 // assertEquals(new Integer(0), validatedArtifact.getTimeout());
311 // assertFalse(validatedArtifact.getMandatory());
312 // assertFalse(validatedArtifact.getServiceApi());