package org.jenkinsci.plugins.openshift; import hudson.model.BuildListener; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.reflect.Whitebox; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @RunWith(PowerMockRunner.class) public class ParseEnvVarsTest { @Mock private BuildListener listener; @Test public void simpleEnvVarsOk() throws Exception { Map<String, String> result = Whitebox.invokeMethod(newDeployApplication("FOO=BAR"), "parseEnvironmentVariables", listener); assertNotNull(result); assertEquals("Should contain 1 element", 1, result.size()); assertEquals("Lookup of FOO should result in BAR", "BAR", result.get("FOO")); } @Test public void quotedEnvVarsOk() throws Exception { Map<String, String> result = Whitebox.invokeMethod(newDeployApplication("\"_JAVA_OPTIONS=-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false\""), "parseEnvironmentVariables", listener); assertNotNull(result); assertEquals("Should contain 1 element", 1, result.size()); assertEquals("Lookup of _JAVA_OPTIONS should result in complete property", "-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false", result.get("_JAVA_OPTIONS")); } @Test public void singleQuotedEnvVarsOk() throws Exception { Map<String, String> result = Whitebox.invokeMethod(newDeployApplication("'_JAVA_OPTIONS=-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false'"), "parseEnvironmentVariables", listener); assertNotNull(result); assertEquals("Should contain 1 element", 1, result.size()); assertEquals("Lookup of _JAVA_OPTIONS should result in complete property", "-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false", result.get("_JAVA_OPTIONS")); } @Test public void multipleEnvVarsOk() throws Exception { Map<String, String> result = Whitebox.invokeMethod(newDeployApplication("FOO=BAR \"_JAVA_OPTIONS=-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false\" BAZ=QUX"), "parseEnvironmentVariables", listener); assertNotNull(result); assertEquals("Should contain 1 element", 3, result.size()); assertEquals("Lookup of FOO should result in BAR", "BAR", result.get("FOO")); assertEquals("Lookup of _JAVA_OPTIONS should result in complete property", "-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false", result.get("_JAVA_OPTIONS")); assertEquals("Lookup of FOO should result in BAR", "QUX", result.get("BAZ")); } private DeployApplication newDeployApplication(final String envVars) { return new DeployApplication( "", "", "", "", "", "", envVars, false, OpenShiftV2Client.DeploymentType.GIT, ""); } }