Fix the ssl config
[clamp.git] / src / test / java / org / onap / clamp / clds / sdc / controller / installer / CsarHandlerTest.java
index 4c3ab86..f04e3fa 100644 (file)
  * limitations under the License.
  * ============LICENSE_END============================================
  * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
  */
 
 package org.onap.clamp.clds.sdc.controller.installer;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.att.aft.dme2.internal.apache.commons.io.IOUtils;
-
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -38,67 +37,164 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.junit.AfterClass;
+import org.apache.commons.io.IOUtils;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException;
 import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException;
-import org.onap.clamp.clds.util.ResourceFileUtil;
-import org.openecomp.sdc.api.notification.IArtifactInfo;
-import org.openecomp.sdc.api.notification.INotificationData;
-import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;
-import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.onap.clamp.clds.util.ResourceFileUtils;
+import org.onap.sdc.api.notification.IArtifactInfo;
+import org.onap.sdc.api.notification.INotificationData;
+import org.onap.sdc.api.notification.IResourceInstance;
+import org.onap.sdc.api.results.IDistributionClientDownloadResult;
+import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 
 public class CsarHandlerTest {
 
-    private static final String sdcFolder = "/tmp/csar-handler-tests";
-    private static final String csarArtifactName = "testArtifact.csar";
-
-    @AfterClass
-    public static void removeAllFiles() throws IOException {
-        // Do some cleanup
-        Path path = Paths.get(sdcFolder + "/test-controller/" + csarArtifactName);
-        Files.deleteIfExists(path);
-    }
+    private static final String SDC_FOLDER = "/tmp/csar-handler-tests";
+    private static final String CSAR_ARTIFACT_NAME = "testArtifact.csar";
+    private static final String SERVICE_UUID = "serviceUUID";
+    private static final String RESOURCE1_UUID = "resource1UUID";
+    private static final String RESOURCE1_INSTANCE_NAME = "sim-1802 0";
+    private static final String RESOURCE1_INSTANCE_NAME_IN_CSAR = "sim18020";
+    private static final String BLUEPRINT1_NAME = "FOI.Simfoimap223S0112.event_proc_bp.yaml";
+    private static final String BLUEPRINT2_NAME = "FOI.Simfoimap223S0112.event_proc_bp2.yaml";
 
     @Test
     public void testConstructor() throws CsarHandlerException {
         IArtifactInfo serviceArtifact = Mockito.mock(IArtifactInfo.class);
         Mockito.when(serviceArtifact.getArtifactType()).thenReturn(CsarHandler.CSAR_TYPE);
-        Mockito.when(serviceArtifact.getArtifactName()).thenReturn(csarArtifactName);
+        Mockito.when(serviceArtifact.getArtifactName()).thenReturn(CSAR_ARTIFACT_NAME);
         List<IArtifactInfo> servicesList = new ArrayList<>();
         servicesList.add(serviceArtifact);
-        INotificationData iNotifData = Mockito.mock(INotificationData.class);
-        Mockito.when(iNotifData.getServiceArtifacts()).thenReturn(servicesList);
-        CsarHandler csar = new CsarHandler(iNotifData, "test-controller", sdcFolder);
-        assertEquals(sdcFolder + "/test-controller" + "/" + csarArtifactName, csar.getFilePath());
+        INotificationData notifData = Mockito.mock(INotificationData.class);
+        Mockito.when(notifData.getServiceArtifacts()).thenReturn(servicesList);
+        CsarHandler csar = new CsarHandler(notifData, "test-controller", SDC_FOLDER);
+        assertEquals(SDC_FOLDER + "/test-controller" + "/" + CSAR_ARTIFACT_NAME, csar.getFilePath());
     }
 
     @Test(expected = CsarHandlerException.class)
     public void testFailingConstructor() throws CsarHandlerException {
-        INotificationData iNotifData = Mockito.mock(INotificationData.class);
-        Mockito.when(iNotifData.getServiceArtifacts()).thenReturn(new ArrayList<>());
-        new CsarHandler(iNotifData, "test-controller", "/tmp/csar-handler-tests");
+        INotificationData notifData = Mockito.mock(INotificationData.class);
+        Mockito.when(notifData.getServiceArtifacts()).thenReturn(new ArrayList<>());
+        new CsarHandler(notifData, "test-controller", "/tmp/csar-handler-tests");
         fail("Exception should have been raised");
     }
 
-    @Test
-    public void testSave()
-            throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException {
+    private INotificationData buildFakeSdcNotification() {
+        // BUild what is needed for CSAR
         IArtifactInfo serviceArtifact = Mockito.mock(IArtifactInfo.class);
         Mockito.when(serviceArtifact.getArtifactType()).thenReturn(CsarHandler.CSAR_TYPE);
-        Mockito.when(serviceArtifact.getArtifactName()).thenReturn(csarArtifactName);
+        Mockito.when(serviceArtifact.getArtifactName()).thenReturn(CSAR_ARTIFACT_NAME);
         List<IArtifactInfo> servicesList = new ArrayList<>();
         servicesList.add(serviceArtifact);
-        INotificationData iNotifData = Mockito.mock(INotificationData.class);
-        Mockito.when(iNotifData.getServiceArtifacts()).thenReturn(servicesList);
-        CsarHandler csar = new CsarHandler(iNotifData, "test-controller", "/tmp/csar-handler-tests");
+        INotificationData notifData = Mockito.mock(INotificationData.class);
+        Mockito.when(notifData.getServiceArtifacts()).thenReturn(servicesList);
+        // Build what is needed for UUID
+        Mockito.when(notifData.getServiceInvariantUUID()).thenReturn(SERVICE_UUID);
+        // Build fake resource with one artifact BLUEPRINT
+        IResourceInstance resource1 = Mockito.mock(IResourceInstance.class);
+        Mockito.when(resource1.getResourceType()).thenReturn("VF");
+        Mockito.when(resource1.getResourceInvariantUUID()).thenReturn(RESOURCE1_UUID);
+        Mockito.when(resource1.getResourceInstanceName()).thenReturn(RESOURCE1_INSTANCE_NAME);
+        // Create a fake artifact for resource
+        IArtifactInfo blueprintArtifact = Mockito.mock(IArtifactInfo.class);
+        Mockito.when(blueprintArtifact.getArtifactType()).thenReturn(CsarHandler.BLUEPRINT_TYPE);
+        List<IArtifactInfo> artifactsListForResource = new ArrayList<>();
+        artifactsListForResource.add(blueprintArtifact);
+        Mockito.when(resource1.getArtifacts()).thenReturn(artifactsListForResource);
+        List<IResourceInstance> resourcesList = new ArrayList<>();
+        resourcesList.add(resource1);
+        Mockito.when(notifData.getResources()).thenReturn(resourcesList);
+        return notifData;
+    }
+
+    private IDistributionClientDownloadResult buildFakeSdcResut() throws IOException {
+        IDistributionClientDownloadResult resultArtifact = Mockito.mock(IDistributionClientDownloadResult.class);
+        Mockito.when(resultArtifact.getArtifactPayload()).thenReturn(
+            IOUtils.toByteArray(ResourceFileUtils.getResourceAsStream("example/sdc/service-Simsfoimap0112.csar")));
+        return resultArtifact;
+    }
+
+    private IDistributionClientDownloadResult buildFakeSdcResultWithoutPolicyModel() throws IOException {
         IDistributionClientDownloadResult resultArtifact = Mockito.mock(IDistributionClientDownloadResult.class);
         Mockito.when(resultArtifact.getArtifactPayload()).thenReturn(
-                IOUtils.toByteArray(ResourceFileUtil.getResourceAsStream("example/sdc/service-Simsfoimap0112.csar")));
-        csar.save(resultArtifact);
-        assertTrue((new File(sdcFolder + "/test-controller/" + csarArtifactName)).exists());
-        assertEquals(csarArtifactName, csar.getArtifactElement().getArtifactName());
+            IOUtils.toByteArray(ResourceFileUtils.getResourceAsStream("example/sdc/service-without-policy.csar")));
+        return resultArtifact;
+    }
+
+    @Test
+    public void testSave()
+        throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException {
+        CsarHandler csar = new CsarHandler(buildFakeSdcNotification(), "test-controller", "/tmp/csar-handler-tests");
+        // Test the save
+        csar.save(buildFakeSdcResut());
+        assertTrue((new File(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME)).exists());
+        assertEquals(CSAR_ARTIFACT_NAME, csar.getArtifactElement().getArtifactName());
         assertNotNull(csar.getSdcCsarHelper());
+        // Test dcaeBlueprint
+        String blueprint = csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getDcaeBlueprint();
+        assertNotNull(blueprint);
+        assertTrue(!blueprint.isEmpty());
+        assertTrue(blueprint.contains("DCAE-VES-PM-EVENT-v1"));
+        // Test additional properties from Sdc notif
+        assertEquals(BLUEPRINT1_NAME, csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getBlueprintArtifactName());
+        assertEquals(RESOURCE1_UUID,
+            csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getResourceAttached().getResourceInvariantUUID());
+        assertEquals(SERVICE_UUID, csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getBlueprintInvariantServiceUuid());
+
+        // Just check the second one is there as well
+        assertEquals(BLUEPRINT2_NAME, csar.getMapOfBlueprints().get(BLUEPRINT2_NAME).getBlueprintArtifactName());
+        blueprint = csar.getMapOfBlueprints().get(BLUEPRINT2_NAME).getDcaeBlueprint();
+        assertNotNull(blueprint);
+        assertTrue(!blueprint.isEmpty());
+        assertTrue(blueprint.contains("DCAE-VES-PM-EVENT-v1"));
+        // Do some cleanup
+        Path path = Paths.get(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME);
+        Files.deleteIfExists(path);
+
+    }
+
+    @Test
+    public void testLoadingOfPolicyModelFromCsar()
+        throws CsarHandlerException, IOException, SdcArtifactInstallerException, SdcToscaParserException {
+        CsarHandler csar = new CsarHandler(buildFakeSdcNotification(), "test-controller", "/tmp/csar-handler-tests");
+        csar.save(buildFakeSdcResut());
+        String policyModelYaml = csar.getPolicyModelYaml().get();
+        assertTrue(policyModelYaml.contains("tosca_simple_yaml_1_0_0"));
+    }
+
+    @Test
+    public void testLoadingOfNonexistentPolicyModelFromCsar()
+        throws CsarHandlerException, IOException, SdcArtifactInstallerException, SdcToscaParserException {
+        CsarHandler csar = new CsarHandler(buildFakeSdcNotification(), "test-controller", "/tmp/csar-handler-tests");
+        csar.save(buildFakeSdcResultWithoutPolicyModel());
+        assertFalse(csar.getPolicyModelYaml().isPresent());
+    }
+
+    @Test
+    public void testDoubleSave()
+        throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException {
+        CsarHandler csar = new CsarHandler(buildFakeSdcNotification(), "test-controller", "/tmp/csar-handler-tests");
+        // Test the save
+        csar.save(buildFakeSdcResut());
+        assertTrue((new File(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME)).exists());
+        assertEquals(CSAR_ARTIFACT_NAME, csar.getArtifactElement().getArtifactName());
+        assertNotNull(csar.getSdcCsarHelper());
+        // Test dcaeBlueprint
+        String blueprint = csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getDcaeBlueprint();
+        assertNotNull(blueprint);
+        assertTrue(!blueprint.isEmpty());
+        assertTrue(blueprint.contains("DCAE-VES-PM-EVENT-v1"));
+        // Test additional properties from Sdc notif
+        assertEquals(BLUEPRINT1_NAME, csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getBlueprintArtifactName());
+        assertEquals(RESOURCE1_UUID,
+            csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getResourceAttached().getResourceInvariantUUID());
+        assertEquals(SERVICE_UUID, csar.getMapOfBlueprints().get(BLUEPRINT1_NAME).getBlueprintInvariantServiceUuid());
+        Path path = Paths.get(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME);
+        // A double save should simply overwrite the existing
+        csar.save(buildFakeSdcResut());
+        // Do some cleanup
+        Files.deleteIfExists(path);
     }
 }