Add new unit test for CsarBusinessLogic. 53/88753/4
authork.kedron <k.kedron@partner.samsung.com>
Wed, 29 May 2019 11:32:01 +0000 (13:32 +0200)
committerOfir Sonsino <ofir.sonsino@intl.att.com>
Sun, 2 Jun 2019 11:02:22 +0000 (11:02 +0000)
Issue-ID: SDC-2327
Signed-off-by: Krystian Kedron <k.kedron@partner.samsung.com>
Change-Id: I9f0951a83545f53e75b9bd3ac17703d7331ec4ca

catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/CsarBusinessLogicTest.java

index 8172c8c..fdaedbb 100644 (file)
@@ -2,7 +2,7 @@
 
  * Copyright (c) 2018 Huawei Intellectual Property.
 
- *
+ * Modifications Copyright (c) 2019 Samsung
 
  * Licensed under the Apache License, Version 2.0 (the "License");
 
  * limitations under the License.
 
  */
+
 package org.openecomp.sdc.be.components.csar;
 
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import fj.data.Either;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
+
 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.impl.ComponentsUtils;
@@ -41,18 +61,20 @@ import org.openecomp.sdc.be.model.Resource;
 import org.openecomp.sdc.be.model.User;
 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
+import org.openecomp.sdc.be.model.operations.impl.CsarOperation;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
+import org.openecomp.sdc.common.util.ZipUtil;
 import org.openecomp.sdc.exception.ResponseFormat;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.when;
-
 @RunWith(MockitoJUnitRunner.class)
 public class CsarBusinessLogicTest {
 
     @InjectMocks
     private CsarBusinessLogic test;
 
+    @Mock
+    private CsarOperation csarOperation;
+
     @Mock
     private ToscaOperationFacade toscaOperationFacade;
 
@@ -62,32 +84,109 @@ public class CsarBusinessLogicTest {
     @Mock
     private User user;
 
+    private static final String CSAR_UUID = "csarUUID";
+    private static final String CSAR_ENTRY = "Definitions/tosca_mock_vf.yaml";
+    private static final String CSAR_METADATA = "TOSCA-Metadata/TOSCA.meta";
+    private static final String CSAR_METADATA_CONTENT = "TOSCA-Meta-File-Version: 1.0\n" +
+            "CSAR-Version: 1.1\n" +
+            "Created-By: OASIS TOSCA TC\n" +
+            "Entry-Definitions:" + CSAR_ENTRY;
+    private static final String CSAR_ENTRY_CONTENT = "tosca_definitions_version: tosca_simple_yaml_1_0\n";
+
+    private static final String RESOURCE_NAME = "resourceName";
+    private static final String PAYLOAD_NAME = "mock_vf.csar";
+
+    @Test()
+    public void testGetCsarInfo() {
+        // given
+        Resource resource = new Resource();
+        resource.setName(RESOURCE_NAME);
+
+        Map<String, byte[]> csar_data = new HashMap<>();
+        csar_data.put(CSAR_METADATA, CSAR_METADATA_CONTENT.getBytes());
+        csar_data.put(CSAR_ENTRY, CSAR_ENTRY_CONTENT.getBytes());
+        when(csarOperation.getCsar(anyString(), any(User.class))).thenReturn(Either.left(csar_data));
+
+        // when
+        CsarInfo csarInfo = test.getCsarInfo(resource, null, user, null, CSAR_UUID);
+
+        // then
+        assertNotNull(csarInfo);
+
+        assertEquals(CSAR_UUID, csarInfo.getCsarUUID());
+        assertEquals(CSAR_ENTRY, csarInfo.getMainTemplateName());
+        assertEquals(RESOURCE_NAME, csarInfo.getVfResourceName());
+
+        assertEquals(CSAR_ENTRY_CONTENT, csarInfo.getMainTemplateContent());
+        assertTrue(csarInfo.getCsar().keySet().containsAll(Arrays.asList(CSAR_ENTRY, CSAR_METADATA)));
+    }
+
+    @Test()
+    public void testGetCsarInfoWithPayload() throws IOException, URISyntaxException {
+        // given
+        Resource resource = new Resource();
+        resource.setName(RESOURCE_NAME);
+
+        Map<String, byte[]> payload = loadPayload(PAYLOAD_NAME);
+
+        // when
+        CsarInfo csarInfo = test.getCsarInfo(resource, null, user, payload, CSAR_UUID);
+
+        // then
+        assertNotNull(csarInfo);
+
+        assertEquals(CSAR_UUID, csarInfo.getCsarUUID());
+        assertEquals(CSAR_ENTRY, csarInfo.getMainTemplateName());
+        assertEquals(RESOURCE_NAME, csarInfo.getVfResourceName());
+
+        assertTrue(csarInfo.getMainTemplateContent().startsWith(CSAR_ENTRY_CONTENT));
+        assertTrue(csarInfo.getCsar().keySet().containsAll(Arrays.asList(CSAR_ENTRY, CSAR_METADATA)));
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testGetCsarInfoWithBadData(){
+        // given
+        Resource resource = new Resource();
+        resource.setName(RESOURCE_NAME);
+
+        Map<String, byte[]> csar_data = new HashMap<>();
+        when(csarOperation.getCsar(anyString(), any(User.class))).thenReturn(Either.left(csar_data));
+
+        // when
+        test.getCsarInfo(resource, null, user, null, CSAR_UUID);
+    }
+
     @Test
     public void testValidateCsarBeforeCreate() {
         Resource resource = new Resource();
-        String csarUUID = "csarUUID";
         StorageOperationStatus status = StorageOperationStatus.OK;
-        when(toscaOperationFacade.validateCsarUuidUniqueness(csarUUID)).thenReturn(status);
-        test.validateCsarBeforeCreate(resource, AuditingActionEnum.ARTIFACT_DOWNLOAD, user, "csarUUID");
-        assertEquals(StorageOperationStatus.OK, status);
+        when(toscaOperationFacade.validateCsarUuidUniqueness(CSAR_UUID)).thenReturn(status);
+        test.validateCsarBeforeCreate(resource, AuditingActionEnum.ARTIFACT_DOWNLOAD, user, CSAR_UUID);
     }
 
     @Test(expected = ComponentException.class)
     public void testValidateCsarBeforeCreate_Exists() {
         Resource resource = new Resource();
-        String csarUUID = "csarUUID";
         ResponseFormat responseFormat = new ResponseFormat();
         StorageOperationStatus status = StorageOperationStatus.ENTITY_ALREADY_EXISTS;
-        when(toscaOperationFacade.validateCsarUuidUniqueness(csarUUID)).thenReturn(status);
-        when(componentsUtils.getResponseFormat(ActionStatus.VSP_ALREADY_EXISTS, csarUUID)).thenReturn(responseFormat);
+        when(toscaOperationFacade.validateCsarUuidUniqueness(CSAR_UUID)).thenReturn(status);
+        when(componentsUtils.getResponseFormat(ActionStatus.VSP_ALREADY_EXISTS, CSAR_UUID)).thenReturn(responseFormat);
         test.validateCsarBeforeCreate(resource, AuditingActionEnum.ARTIFACT_DOWNLOAD, user, "csarUUID");
     }
 
     @Test(expected = ComponentException.class)
     public void testValidateCsarBeforeCreate_Fail() {
         Resource resource = new Resource();
-        String csarUUID = "csarUUID";
-        when(toscaOperationFacade.validateCsarUuidUniqueness(csarUUID)).thenReturn(StorageOperationStatus.EXEUCTION_FAILED);
+
+        when(toscaOperationFacade.validateCsarUuidUniqueness(CSAR_UUID)).thenReturn(StorageOperationStatus.EXEUCTION_FAILED);
         test.validateCsarBeforeCreate(resource, AuditingActionEnum.ARTIFACT_DOWNLOAD, user, "csarUUID");
     }
+
+    public Map<String, byte[]> loadPayload(String payloadName) throws IOException, URISyntaxException {
+
+        Path path = Paths.get(getClass().getResource("/" + payloadName).toURI());
+        byte[] data = Files.readAllBytes(path);
+
+        return ZipUtil.readZip(data);
+    }
 }