package jenkins.plugins.nodejs.tools; import static jenkins.plugins.nodejs.NodeJSConstants.*; import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.jvnet.hudson.test.Issue; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import hudson.EnvVars; @RunWith(PowerMockRunner.class) @PrepareForTest(NodeJSInstallation.class) public class NodeJSInstallationMockitoTest { /** * Ensure the use of {@link EnvVars#put(String, String)} instead * {@code EnvVars#override(String, String)} to respect the * {@link ToolInstallation#buildEnvVars(EnvVars)) API documentation. * <p> * A lot stuff rely on that logic. */ @Issue("JENKINS-41947") @Test public void test_installer_environment() throws Exception { String nodeJSHome = "/home/nodejs"; String bin = nodeJSHome + "/bin"; NodeJSInstallation installer = PowerMockito.spy(new NodeJSInstallation("test", nodeJSHome, null)); PowerMockito.doReturn(bin).when(installer, "getBin"); EnvVars env = PowerMockito.spy(new EnvVars()); installer.buildEnvVars(env); Mockito.verify(env, Mockito.never()).override(Mockito.anyString(), Mockito.anyString()); Mockito.verify(env, Mockito.never()).overrideAll(Mockito.<String, String>anyMap()); assertEquals("Unexpected value for " + ENVVAR_NODEJS_HOME, nodeJSHome, env.get(ENVVAR_NODEJS_HOME)); assertEquals("Unexpected value for " + ENVVAR_NODEJS_PATH, bin, env.get(ENVVAR_NODEJS_PATH)); assertNull("PATH variable should not appear in this environment", env.get("PATH")); } }