CsarHandler rework
[clamp.git] / src / test / java / org / onap / clamp / clds / sdc / controller / installer / CsarHandlerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2018 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  */
23
24 package org.onap.clamp.clds.sdc.controller.installer;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertTrue;
29 import static org.junit.Assert.fail;
30
31 import com.att.aft.dme2.internal.apache.commons.io.IOUtils;
32
33 import java.io.File;
34 import java.io.IOException;
35 import java.nio.file.Files;
36 import java.nio.file.Path;
37 import java.nio.file.Paths;
38 import java.util.ArrayList;
39 import java.util.List;
40
41 import org.junit.Test;
42 import org.mockito.Mockito;
43 import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException;
44 import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException;
45 import org.onap.clamp.clds.util.ResourceFileUtil;
46 import org.openecomp.sdc.api.notification.IArtifactInfo;
47 import org.openecomp.sdc.api.notification.INotificationData;
48 import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;
49 import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
50
51 public class CsarHandlerTest {
52
53     private static final String sdcFolder = "/tmp/csar-handler-tests";
54     private static final String csarArtifactName = "testArtifact.csar";
55
56     @Test
57     public void testConstructor() throws CsarHandlerException {
58         IArtifactInfo serviceArtifact = Mockito.mock(IArtifactInfo.class);
59         Mockito.when(serviceArtifact.getArtifactType()).thenReturn(CsarHandler.CSAR_TYPE);
60         Mockito.when(serviceArtifact.getArtifactName()).thenReturn(csarArtifactName);
61         List<IArtifactInfo> servicesList = new ArrayList<>();
62         servicesList.add(serviceArtifact);
63         INotificationData notifData = Mockito.mock(INotificationData.class);
64         Mockito.when(notifData.getServiceArtifacts()).thenReturn(servicesList);
65         CsarHandler csar = new CsarHandler(notifData, "test-controller", sdcFolder);
66         assertEquals(sdcFolder + "/test-controller" + "/" + csarArtifactName, csar.getFilePath());
67     }
68
69     @Test(expected = CsarHandlerException.class)
70     public void testFailingConstructor() throws CsarHandlerException {
71         INotificationData notifData = Mockito.mock(INotificationData.class);
72         Mockito.when(notifData.getServiceArtifacts()).thenReturn(new ArrayList<>());
73         new CsarHandler(notifData, "test-controller", "/tmp/csar-handler-tests");
74         fail("Exception should have been raised");
75     }
76
77     @Test
78     public void testSave()
79             throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException {
80         IArtifactInfo serviceArtifact = Mockito.mock(IArtifactInfo.class);
81         Mockito.when(serviceArtifact.getArtifactType()).thenReturn(CsarHandler.CSAR_TYPE);
82         Mockito.when(serviceArtifact.getArtifactName()).thenReturn(csarArtifactName);
83         List<IArtifactInfo> servicesList = new ArrayList<>();
84         servicesList.add(serviceArtifact);
85         INotificationData notifData = Mockito.mock(INotificationData.class);
86         Mockito.when(notifData.getServiceArtifacts()).thenReturn(servicesList);
87         CsarHandler csar = new CsarHandler(notifData, "test-controller", "/tmp/csar-handler-tests");
88         IDistributionClientDownloadResult resultArtifact = Mockito.mock(IDistributionClientDownloadResult.class);
89         Mockito.when(resultArtifact.getArtifactPayload()).thenReturn(
90                 IOUtils.toByteArray(ResourceFileUtil.getResourceAsStream("example/sdc/service-Simsfoimap0112.csar")));
91         // Test the save
92         csar.save(resultArtifact);
93         assertTrue((new File(sdcFolder + "/test-controller/" + csarArtifactName)).exists());
94         assertEquals(csarArtifactName, csar.getArtifactElement().getArtifactName());
95         assertNotNull(csar.getSdcCsarHelper());
96         // Test dcaeBlueprint
97         String blueprint = csar.getDcaeBlueprint();
98         assertNotNull(blueprint);
99         assertTrue(!blueprint.isEmpty());
100         assertTrue(blueprint.contains("DCAE-VES-PM-EVENT-v1"));
101         // Do some cleanup
102         Path path = Paths.get(sdcFolder + "/test-controller/" + csarArtifactName);
103         Files.deleteIfExists(path);
104     }
105 }