fix sonar blocker try-with-resources 63/78763/1
authork.kazak <k.kazak@samsung.com>
Tue, 19 Feb 2019 14:39:56 +0000 (15:39 +0100)
committerk.kazak <k.kazak@samsung.com>
Tue, 19 Feb 2019 14:39:56 +0000 (15:39 +0100)
BpmnInstaller: use try-with-resources in containsWorkflows
remove unnecessary type casting to ZipEntry
BpmnInstallerTest: add tests for containsWorkflows
fix test for installBpmn (was silently failing with file not found)

Change-Id: I3122bcd19204bf498fe1a9b10630076e2df9d70b
Issue-ID: SO-1516
Signed-off-by: k.kazak <k.kazak@samsung.com>
asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/BpmnInstaller.java
asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/BpmnInstallerTest.java

index cd9a121..59030e6 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -31,7 +33,6 @@ import java.util.Enumeration;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 import java.util.zip.ZipInputStream;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
@@ -110,32 +111,29 @@ public class BpmnInstaller {
                                ex.getMessage(), "", "", MsoLogger.ErrorCode.DataError, "ASDC reading CSAR with workflows failed");
                }
                return;
-       }       
+       }
 
-       public boolean containsWorkflows(String csarFilePath) {
-               boolean workflowsInCsar = false;
-               try {
-                       ZipFile zipFile = new ZipFile(csarFilePath);
-                       Enumeration<? extends ZipEntry> zipEntries = zipFile.entries();
-                       while (zipEntries.hasMoreElements()) {
-                               String fileName = ((ZipEntry) zipEntries.nextElement()).getName();
-                               if (fileName.endsWith(BPMN_SUFFIX)) {
-                                       workflowsInCsar = true;
-                                       break;
-                               }                               
-                       }
-               }
-               catch (Exception e) {
-                       LOGGER.debug("Exception :",e);
+    public boolean containsWorkflows(String csarFilePath) {
+        boolean workflowsInCsar = false;
+        try (ZipFile zipFile = new ZipFile(csarFilePath)) {
+            Enumeration<? extends ZipEntry> zipEntries = zipFile.entries();
+            while (zipEntries.hasMoreElements()) {
+                String fileName = zipEntries.nextElement().getName();
+                if (fileName.endsWith(BPMN_SUFFIX)) {
+                    workflowsInCsar = true;
+                    break;
+                }
+            }
+        } catch (Exception e) {
+            LOGGER.debug("Exception :", e);
             LOGGER.error(MessageEnum.ASDC_ARTIFACT_CHECK_EXC,
-                               csarFilePath,
-                               "",
-                               "",
-                               e.getMessage(), "", "", MsoLogger.ErrorCode.DataError, "ASDC Unable to check CSAR entries"); 
-               }
-               return workflowsInCsar;
-       }
-       
+                csarFilePath,"","",
+                e.getMessage(), "", "",
+                MsoLogger.ErrorCode.DataError, "ASDC Unable to check CSAR entries");
+        }
+        return workflowsInCsar;
+    }
+
        protected HttpResponse sendDeploymentRequest(String bpmnFileName) throws Exception {
                HttpClient client = HttpClientBuilder.create().build(); 
                URI deploymentUri = new URI(this.env.getProperty(CAMUNDA_URL) + CREATE_DEPLOYMENT_PATH);
index c572097..e780a25 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
 package org.onap.so.asdc.installer.bpmn;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -31,9 +39,7 @@ import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-
 import javax.transaction.Transactional;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
@@ -42,6 +48,7 @@ import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.message.BasicHttpResponse;
 import org.apache.http.message.BasicStatusLine;
+import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -49,22 +56,31 @@ import org.junit.rules.TemporaryFolder;
 
 @Transactional
 public class BpmnInstallerTest {
-       
+
     private BpmnInstaller bpmnInstaller = new BpmnInstaller();
-    
+
+    private static final String TEST_CSAR = "src/test/resources/resource-examples/WorkflowBpmn/service-CxSvc-csar.csar";
+    private Path tempDirectoryPath;
+
     @Rule
-       public TemporaryFolder folder= new TemporaryFolder();
+    public TemporaryFolder folder = new TemporaryFolder();
 
     @Before
     public void init() throws Exception {
-       System.setProperty("mso.config.path", folder.getRoot().toString());
+        System.setProperty("mso.config.path", folder.getRoot().toString());
+        // we need to have this directory created for InstallBPMN test success
+        tempDirectoryPath = Paths.get(folder.getRoot().toString(), "ASDC");
+        Files.createDirectories(tempDirectoryPath);
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        System.clearProperty("mso.config.path");
     }
     
     @Test
     public void buildMimeMultiPart_Test() throws Exception {
-       Path tempDirectoryPath = Paths.get(folder.getRoot().toString(), "ASDC");
        Path tempFilePath = Paths.get(tempDirectoryPath.toAbsolutePath().toString(), "TestBB.bpmn");
-       Files.createDirectories(tempDirectoryPath);
        Files.createFile(tempFilePath);
        HttpEntity entity = bpmnInstaller.buildMimeMultipart("TestBB.bpmn");            
        String mimeMultipartBodyFilePath = "src/test/resources" + "/mime-multipart-body.txt";
@@ -79,11 +95,24 @@ public class BpmnInstallerTest {
 
     @Test
     public void installBpmn_Test() throws Exception {
-       HttpResponse response = new BasicHttpResponse(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, ""));
-       HttpClient httpClient = mock(HttpClient.class);
-       String csarPath = "src/test/resources" + "/resource-examples/WorkflowBpmn/service-CxSvc-csar.csar";
-       doReturn(response).when(httpClient).execute(any(HttpPost.class));
-       bpmnInstaller.installBpmn(csarPath);
+        BpmnInstaller bpmnInstallerSpy = spy(bpmnInstaller);
+        HttpResponse response = new BasicHttpResponse(
+            new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, ""));
+        HttpClient httpClient = mock(HttpClient.class);
+        doReturn(response).when(httpClient).execute(any(HttpPost.class));
+        bpmnInstallerSpy.installBpmn(TEST_CSAR);
+        verify(bpmnInstallerSpy, times(1)).sendDeploymentRequest(anyString());
+    }
+
+    @Test
+    public void containsWorkflowsSuccess() {
+        boolean result = bpmnInstaller.containsWorkflows(TEST_CSAR);
+        assertTrue(result);
+    }
+
+    @Test
+    public void containsWorkflowsFailure() {
+        boolean result = bpmnInstaller.containsWorkflows("DOESNOTEXIST.csar");
+        assertFalse(result);
     }
-   
 }