Skip to content

Commit

Permalink
[FIX JENKINS-25413] Hide job action from UI
Browse files Browse the repository at this point in the history
  • Loading branch information
olivergondza committed Nov 3, 2014
1 parent 39e9d90 commit 3eced54
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 9 deletions.
Expand Up @@ -2,6 +2,8 @@

import hudson.model.AbstractProject;
import hudson.model.Action;
import hudson.model.ParameterValue;
import hudson.model.AbstractProject;
import hudson.model.BooleanParameterDefinition;
import hudson.model.BooleanParameterValue;
import hudson.model.Cause;
Expand All @@ -27,8 +29,6 @@
import org.kohsuke.stapler.StaplerResponse;

public class BuildWithParametersAction implements Action {
private static final String ICON_FILE_NAME = "clock.png";
private static final String DISPLAY_NAME = "Build With Params";
private static final String URL_NAME = "parambuild";

private final AbstractProject project;
Expand Down Expand Up @@ -84,11 +84,11 @@ ParameterValue getParameterDefinitionValue(ParameterDefinition parameterDefiniti
}

public String getIconFileName() {
return project.getACL().hasPermission(AbstractProject.BUILD) ? ICON_FILE_NAME : null;
return null; // Invisible
}

public String getDisplayName() {
return project.getACL().hasPermission(AbstractProject.BUILD) ? DISPLAY_NAME : null;
return null; // Invisible
}

public String getUrlName() {
Expand Down
Expand Up @@ -5,19 +5,27 @@
import hudson.model.ParameterValue;
import hudson.model.FreeStyleProject;
import hudson.model.ParameterDefinition;
import hudson.model.ParametersAction;
import hudson.model.ParametersDefinitionProperty;
import hudson.model.PasswordParameterDefinition;
import hudson.model.PasswordParameterValue;
import hudson.model.StringParameterDefinition;
import hudson.model.StringParameterValue;

import java.io.IOException;

import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.JenkinsRule.WebClient;

import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class BuildWithParametersActionTest {
@Rule public JenkinsRule j = new JenkinsRule();

@Test
public void getAvailableParameters_passwordParam() throws IOException {
ParameterDefinition pwParamDef = new PasswordParameterDefinition("n", BuildParameter.JOB_DEFAULT_PASSWORD_PLACEHOLDER, "d");
Expand All @@ -41,13 +49,13 @@ ParameterValue getParameterDefinitionValue(
};
return bwpa;
}

@Test
public void applyDefaultPassword() throws IOException {
String jobDefaultPassword = "defaultPassword";
String passwordFromRequest = BuildParameter.JOB_DEFAULT_PASSWORD_PLACEHOLDER;
String adjustedPassword = applyDefaultPasswordHelper(jobDefaultPassword, passwordFromRequest);

assertEquals(jobDefaultPassword, adjustedPassword);
}

Expand All @@ -56,17 +64,45 @@ public void applyDefaultPassword_nonDefault() throws IOException {
String jobDefaultPassword = "defaultPassword";
String passwordFromRequest = "userSuppliedPassword";
String adjustedPassword = applyDefaultPasswordHelper(jobDefaultPassword, passwordFromRequest);

assertEquals(passwordFromRequest, adjustedPassword);
}

private String applyDefaultPasswordHelper(String jobDefaultPassword, String passwordFromRequest) throws IOException {
ParameterDefinition pwParamDef = new PasswordParameterDefinition("n", jobDefaultPassword, "d");
BuildWithParametersAction bwpa = testableProject(pwParamDef);

ParameterValue parameterValue = new PasswordParameterValue("n", passwordFromRequest);

ParameterValue adjustedParamValue = bwpa.applyDefaultPassword(pwParamDef, parameterValue);
return BuildWithParametersAction.getPasswordValue((PasswordParameterValue)adjustedParamValue);
}

@Test
public void provideParametersViaUi() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
StringParameterDefinition params = new StringParameterDefinition("param", "default");
project.addProperty(new ParametersDefinitionProperty(params));

WebClient wc = j.createWebClient();
HtmlPage page = wc.getPage(project, "parambuild");
HtmlForm form = page.getFormByName("config");
form.getInputByName("param").setValueAttribute("newValue");

// This does not submit the form for some reason.
form.getButtonByCaption("Build").click();
// Create fake submit instead
HtmlElement fakeSubmit = page.createElement("button");
fakeSubmit.setAttribute("type", "submit");
form.appendChild(fakeSubmit);
fakeSubmit.click();

do {
Thread.sleep(100);
} while (project.getLastBuild() == null);

final ParametersAction parameterAction = project.getLastBuild().getAction(ParametersAction.class);
final String actualValue = ((StringParameterValue) parameterAction.getParameter("param")).value;
assertEquals(actualValue, "newValue");
}
}

0 comments on commit 3eced54

Please sign in to comment.