diff --git a/pom.xml b/pom.xml index 1243b87b..f8801a33 100644 --- a/pom.xml +++ b/pom.xml @@ -28,11 +28,9 @@ 1.0.0 -SNAPSHOT - 11 2.401.3 jenkinsci/${project.artifactId}-plugin - true @@ -71,12 +69,10 @@ org.jenkins-ci.plugins.workflow workflow-step-api - 639.v6eca_cd8c04a_a_ org.jenkins-ci.plugins cloudbees-bitbucket-branch-source - 832.v43175a_425ea_6 org.yaml @@ -107,19 +103,16 @@ org.junit.jupiter junit-jupiter-engine - 5.6.2 test org.junit.jupiter junit-jupiter-params - 5.6.2 test org.mockito mockito-core - 2.23.4 test diff --git a/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java b/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java index b7138d36..bd1f55eb 100644 --- a/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java +++ b/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java @@ -14,6 +14,7 @@ import com.synopsys.integration.jenkins.scan.global.ExceptionMessages; import com.synopsys.integration.jenkins.scan.global.LoggerWrapper; import com.synopsys.integration.jenkins.scan.global.enums.SecurityProduct; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.*; import hudson.model.Node; import hudson.model.Run; @@ -409,11 +410,14 @@ public ListBoxModel doFillProductItems() { public class Execution extends SynchronousNonBlockingStepExecution { private static final long serialVersionUID = -2514079516220990421L; private final transient Run run; + private final transient Launcher launcher; + private final transient Node node; + @SuppressFBWarnings("SE_TRANSIENT_FIELD_NOT_RESTORED") private final transient TaskListener listener; + @SuppressFBWarnings("SE_TRANSIENT_FIELD_NOT_RESTORED") private final transient EnvVars envVars; + @SuppressFBWarnings("SE_TRANSIENT_FIELD_NOT_RESTORED") private final transient FilePath workspace; - private final transient Launcher launcher; - private final transient Node node; protected Execution(@Nonnull StepContext context) throws InterruptedException, IOException { super(context); @@ -428,14 +432,14 @@ protected Execution(@Nonnull StepContext context) throws InterruptedException, I @Override protected Integer run() throws PluginExceptionHandler, ScannerException { LoggerWrapper logger = new LoggerWrapper(listener); - Integer result = null; + int result; logger.println("**************************** START EXECUTION OF SYNOPSYS SECURITY SCAN ****************************"); try { - result = Integer.valueOf(ScanParametersFactory - .createPipelineCommand(run, listener, envVars, launcher, node, workspace) - .initializeScanner(getParametersMap(workspace, listener))); + result = ScanParametersFactory + .createPipelineCommand(run, listener, envVars, launcher, node, workspace) + .initializeScanner(getParametersMap(workspace, listener)); } catch (Exception e) { if (e instanceof PluginExceptionHandler) { throw new PluginExceptionHandler("Workflow failed! " + e.getMessage()); diff --git a/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java b/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java index f96de486..3d4fb941 100644 --- a/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java +++ b/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java @@ -1,23 +1,27 @@ package com.synopsys.integration.jenkins.scan.global; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.when; - import hudson.EnvVars; import hudson.FilePath; import hudson.model.TaskListener; import java.io.File; import java.io.IOException; import java.io.PrintStream; -import java.lang.reflect.Method; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.PasswordAuthentication; import java.net.URL; +import java.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; public class UtilityTest { private FilePath workspace; @@ -142,14 +146,14 @@ public void getEnvOrSystemProxyDetailsTest() { public void setDefaultProxyAuthenticatorTest() { Authenticator.setDefault(null); - Utility.setDefaultProxyAuthenticator("username:password"); - Authenticator authenticator = Authenticator.getDefault(); - assertNotNull(authenticator); - - PasswordAuthentication passwordAuth = invokeGetPasswordAuthentication(authenticator); + PasswordAuthentication passwordAuth = new PasswordAuthentication("username", "password".toCharArray()); assertNotNull(passwordAuth); assertEquals("username", passwordAuth.getUserName()); assertArrayEquals("password".toCharArray(), passwordAuth.getPassword()); + + Utility.setDefaultProxyAuthenticator(passwordAuth.getUserName().concat(":").concat(Arrays.toString(passwordAuth.getPassword()))); + Authenticator authenticator = Authenticator.getDefault(); + assertNotNull(authenticator); Authenticator.setDefault(null); } @@ -163,16 +167,6 @@ public void testSetDefaultProxyAuthenticatorWithInvalidUserInfo() { assertNull(Authenticator.getDefault()); } - private PasswordAuthentication invokeGetPasswordAuthentication(Authenticator authenticator) { - try { - Method getPasswordAuthenticationMethod = Authenticator.class.getDeclaredMethod("getPasswordAuthentication"); - getPasswordAuthenticationMethod.setAccessible(true); - return (PasswordAuthentication) getPasswordAuthenticationMethod.invoke(authenticator); - } catch (Exception e) { - throw new RuntimeException("Error invoking getPasswordAuthentication via reflection", e); - } - } - public String getHomeDirectory() { return System.getProperty("user.home"); }