2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 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.distribution.engine;
23 import fj.data.Either;
24 import mockit.Deencapsulation;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.InjectMocks;
28 import org.mockito.Mock;
29 import org.mockito.Mockito;
30 import org.mockito.MockitoAnnotations;
31 import org.openecomp.sdc.be.components.BeConfDependentTest;
32 import org.openecomp.sdc.be.model.ArtifactDefinition;
33 import org.openecomp.sdc.be.model.ComponentInstance;
34 import org.openecomp.sdc.be.model.ComponentParametersView;
35 import org.openecomp.sdc.be.model.Resource;
36 import org.openecomp.sdc.be.model.Service;
37 import org.openecomp.sdc.be.model.category.CategoryDefinition;
38 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
39 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
40 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
42 import java.util.Arrays;
43 import java.util.HashMap;
44 import java.util.LinkedList;
45 import java.util.List;
48 import static org.assertj.core.api.Assertions.assertThat;
49 import static org.mockito.Mockito.when;
51 public class ServiceDistributionArtifactsBuilderTest extends BeConfDependentTest {
54 private ServiceDistributionArtifactsBuilder testInstance;
57 ToscaOperationFacade toscaOperationFacade;
59 private ServiceDistributionArtifactsBuilder createTestSubject() {
64 public void setUpMock() throws Exception {
65 MockitoAnnotations.initMocks(this);
69 public void testGetInterfaceLifecycleOperation() throws Exception {
70 ServiceDistributionArtifactsBuilder testSubject;
71 InterfaceLifecycleOperation result;
74 testSubject = createTestSubject();
75 result = testSubject.getInterfaceLifecycleOperation();
79 public void testSetInterfaceLifecycleOperation() throws Exception {
80 ServiceDistributionArtifactsBuilder testSubject;
81 InterfaceLifecycleOperation interfaceLifecycleOperation = null;
84 testSubject = createTestSubject();
85 testSubject.setInterfaceLifecycleOperation(interfaceLifecycleOperation);
89 public void testResolveWorkloadContext() throws Exception {
90 ServiceDistributionArtifactsBuilder testSubject;
91 String workloadContext = "";
95 testSubject = createTestSubject();
96 result = Deencapsulation.invoke(testSubject, "resolveWorkloadContext", new Object[] { workloadContext });
100 public void testBuildResourceInstanceForDistribution() throws Exception {
101 ServiceDistributionArtifactsBuilder testSubject;
102 Service service = new Service();
103 String distributionId = "";
104 String workloadContext = "";
105 INotificationData result;
108 testSubject = createTestSubject();
109 workloadContext = "mock";
110 result = testSubject.buildResourceInstanceForDistribution(service, distributionId, workloadContext);
113 testSubject = createTestSubject();
114 workloadContext = null;
115 result = testSubject.buildResourceInstanceForDistribution(service, distributionId, workloadContext);
119 public void testBuildResourceInstanceForDistributionArtifactsTimeout() throws Exception {
120 Service service = new Service();
121 int deploymentArtifactTimeout = 60;
122 ComponentInstance ci = createComponentInstance("ci");
123 ci.setDeploymentArtifacts(createDeploymentArtifactList(deploymentArtifactTimeout));
124 service.setComponentInstances(Arrays.asList(ci));
126 when(toscaOperationFacade.getToscaElement(Mockito.eq(ci.getComponentUid()), Mockito.any(ComponentParametersView.class)))
127 .thenReturn(Either.left(createDefaultResource()));
129 INotificationData notificationData = testInstance.buildResourceInstanceForDistribution(service, "did", "workload");
130 assertThat(notificationData.getResources().get(0).getArtifacts().get(0).getArtifactTimeout())
131 .isEqualTo(deploymentArtifactTimeout);
134 private Map<String, ArtifactDefinition> createDeploymentArtifactList(int timeout) {
135 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
136 deploymentArtifacts.put("label", createArtifactDefinition("1", timeout));
137 return deploymentArtifacts;
140 private Resource createDefaultResource() {
141 Resource ciResource = new Resource();
142 ciResource.setInvariantUUID("res");
146 private ComponentInstance createComponentInstance(String cuid) {
147 ComponentInstance ci = new ComponentInstance();
148 ci.setComponentUid(cuid);
152 private ArtifactDefinition createArtifactDefinition(String id, int timeout) {
153 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
154 artifactDefinition.setTimeout(60);
155 artifactDefinition.setUniqueId(id);
156 artifactDefinition.setEsId(id);
157 return artifactDefinition;
161 public void testBuildServiceForDistribution() throws Exception {
162 ServiceDistributionArtifactsBuilder testSubject;
163 INotificationData notificationData = new INotificationDataMock();
164 Service service = new Service();
165 service.setDeploymentArtifacts(new HashMap<>());
166 service.setToscaArtifacts(new HashMap<>());
167 INotificationData result;
170 testSubject = createTestSubject();
171 result = testSubject.buildServiceForDistribution(notificationData, service);
174 @Test(expected = NullPointerException.class)
175 public void testConvertServiceArtifactsToArtifactInfo() throws Exception {
176 ServiceDistributionArtifactsBuilder testSubject;
177 Service service = new Service();
178 service.setDeploymentArtifacts(new HashMap<>());
179 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
180 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
181 ArtifactDefinition artifactDefinition2 = new ArtifactDefinition();
182 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
183 artifactDefinition2.setArtifactType(ArtifactTypeEnum.TOSCA_CSAR.getType());
184 toscaArtifacts.put("mock", artifactDefinition);
185 toscaArtifacts.put("mock2", artifactDefinition2);
186 service.setToscaArtifacts(new HashMap<>());
187 List<ArtifactInfoImpl> result;
190 testSubject = createTestSubject();
191 result = Deencapsulation.invoke(testSubject, "convertServiceArtifactsToArtifactInfo", service);
192 service.setToscaArtifacts(toscaArtifacts);
193 result = Deencapsulation.invoke(testSubject, "convertServiceArtifactsToArtifactInfo", service);
196 @Test(expected=NullPointerException.class)
197 public void testConvertRIsToJsonContanier() throws Exception {
198 ServiceDistributionArtifactsBuilder testSubject;
199 Service service = new Service();
200 List<ComponentInstance> resourceInstances = new LinkedList<>();
201 List<JsonContainerResourceInstance> result;
204 testSubject = createTestSubject();
205 result = Deencapsulation.invoke(testSubject, "convertRIsToJsonContanier", service);
207 resourceInstances.add(new ComponentInstance());
208 service.setComponentInstances(resourceInstances);
209 result = Deencapsulation.invoke(testSubject, "convertRIsToJsonContanier", service);
213 public void testFillJsonContainer() throws Exception {
214 ServiceDistributionArtifactsBuilder testSubject;
215 JsonContainerResourceInstance jsonContainer = new JsonContainerResourceInstance(new ComponentInstance(),
217 Resource resource = new Resource();
220 testSubject = createTestSubject();
221 Deencapsulation.invoke(testSubject, "fillJsonContainer", jsonContainer, resource);
225 public void testConvertToArtifactsInfoImpl() throws Exception {
226 ServiceDistributionArtifactsBuilder testSubject;
227 Service service = new Service();
228 ComponentInstance resourceInstance = new ComponentInstance();
229 List<ArtifactInfoImpl> result;
232 testSubject = createTestSubject();
233 result = Deencapsulation.invoke(testSubject, "convertToArtifactsInfoImpl", service, resourceInstance);
237 public void testSetCategories() throws Exception {
238 ServiceDistributionArtifactsBuilder testSubject;
239 JsonContainerResourceInstance jsonContainer = null;
240 List<CategoryDefinition> categories = null;
243 testSubject = createTestSubject();
245 Deencapsulation.invoke(testSubject, "setCategories",
246 new Object[] { JsonContainerResourceInstance.class, List.class });
250 public void testGetArtifactsWithPayload() throws Exception {
251 ServiceDistributionArtifactsBuilder testSubject;
252 ComponentInstance resourceInstance = new ComponentInstance();
253 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
254 resourceInstance.setDeploymentArtifacts(deploymentArtifacts);
255 List<ArtifactDefinition> result;
258 testSubject = createTestSubject();
259 result = Deencapsulation.invoke(testSubject, "getArtifactsWithPayload", resourceInstance);
260 deploymentArtifacts.put("mock", new ArtifactDefinition());
261 result = Deencapsulation.invoke(testSubject, "getArtifactsWithPayload", resourceInstance);
265 public void testBuildResourceInstanceArtifactUrl() throws Exception {
266 Service service = new Service();
267 service.setSystemName("mock");
268 service.setVersion("mock");
269 ComponentInstance resourceInstance = new ComponentInstance();
270 resourceInstance.setNormalizedName("mock");
271 String artifactName = "mock";
275 result = ServiceDistributionArtifactsBuilder.buildResourceInstanceArtifactUrl(service, resourceInstance,
280 public void testBuildServiceArtifactUrl() throws Exception {
281 Service service = new Service();
282 String artifactName = "mock";
286 result = ServiceDistributionArtifactsBuilder.buildServiceArtifactUrl(service, artifactName);
290 public void testVerifyServiceContainsDeploymentArtifacts() throws Exception {
291 ServiceDistributionArtifactsBuilder testSubject;
292 Service service = new Service();
296 testSubject = createTestSubject();
297 result = testSubject.verifyServiceContainsDeploymentArtifacts(service);
298 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
299 deploymentArtifacts.put("mock", new ArtifactDefinition());
300 service.setDeploymentArtifacts(deploymentArtifacts);
301 result = testSubject.verifyServiceContainsDeploymentArtifacts(service);
302 List<ComponentInstance> resourceInstances = new LinkedList<>();
303 resourceInstances.add(new ComponentInstance());
304 service.setComponentInstances(resourceInstances);
305 service.setDeploymentArtifacts(null);
306 result = testSubject.verifyServiceContainsDeploymentArtifacts(service);
310 public void testIsContainsPayload() throws Exception {
311 ServiceDistributionArtifactsBuilder testSubject;
312 Map<String, ArtifactDefinition> deploymentArtifacts = null;
316 testSubject = createTestSubject();
317 result = Deencapsulation.invoke(testSubject, "isContainsPayload", new Object[] { Map.class });
320 private class INotificationDataMock implements INotificationData {
323 public String getDistributionID() {
324 // TODO Auto-generated method stub
329 public String getServiceName() {
330 // TODO Auto-generated method stub
335 public String getServiceVersion() {
336 // TODO Auto-generated method stub
341 public String getServiceUUID() {
342 // TODO Auto-generated method stub
347 public String getServiceDescription() {
348 // TODO Auto-generated method stub
353 public String getServiceInvariantUUID() {
354 // TODO Auto-generated method stub
359 public List<JsonContainerResourceInstance> getResources() {
360 // TODO Auto-generated method stub
365 public List<ArtifactInfoImpl> getServiceArtifacts() {
366 // TODO Auto-generated method stub
371 public String getWorkloadContext() {
372 // TODO Auto-generated method stub
377 public void setDistributionID(String distributionId) {
378 // TODO Auto-generated method stub
383 public void setServiceName(String serviceName) {
384 // TODO Auto-generated method stub
389 public void setServiceVersion(String serviceVersion) {
390 // TODO Auto-generated method stub
395 public void setServiceUUID(String serviceUUID) {
396 // TODO Auto-generated method stub
401 public void setServiceDescription(String serviceDescription) {
402 // TODO Auto-generated method stub
407 public void setServiceInvariantUUID(String serviceInvariantUuid) {
408 // TODO Auto-generated method stub
413 public void setResources(List<JsonContainerResourceInstance> resource) {
414 // TODO Auto-generated method stub
419 public void setServiceArtifacts(List<ArtifactInfoImpl> artifacts) {
420 // TODO Auto-generated method stub
425 public void setWorkloadContext(String workloadContext) {
426 // TODO Auto-generated method stub