From 76845918c0e8a7739444ba8333f1581c33385a54 Mon Sep 17 00:00:00 2001 From: "k.kazak" Date: Tue, 19 Feb 2019 15:39:56 +0100 Subject: fix sonar blocker try-with-resources 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 --- .../onap/so/asdc/installer/bpmn/BpmnInstaller.java | 48 +++++++++--------- .../so/asdc/installer/bpmn/BpmnInstallerTest.java | 57 ++++++++++++++++------ 2 files changed, 66 insertions(+), 39 deletions(-) diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/BpmnInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/BpmnInstaller.java index cd9a121ddb..59030e6c22 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/BpmnInstaller.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/BpmnInstaller.java @@ -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 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 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); diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/BpmnInstallerTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/BpmnInstallerTest.java index c572097103..e780a259ea 100644 --- a/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/BpmnInstallerTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/BpmnInstallerTest.java @@ -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 @@ -21,9 +23,15 @@ 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); } - } -- cgit 1.2.3-korg