diff --git a/src/main/java/org/jenkinsci/plugins/vb6/VB6Builder.java b/src/main/java/org/jenkinsci/plugins/vb6/VB6Builder.java index b73218a..e9bdb5f 100644 --- a/src/main/java/org/jenkinsci/plugins/vb6/VB6Builder.java +++ b/src/main/java/org/jenkinsci/plugins/vb6/VB6Builder.java @@ -5,13 +5,14 @@ import hudson.Extension; import hudson.FilePath; import hudson.model.AbstractProject; -import hudson.model.Result; +import hudson.model.Item; import hudson.model.Run; import hudson.model.TaskListener; import hudson.tasks.Builder; import hudson.tasks.BuildStepDescriptor; import hudson.util.ArgumentListBuilder; import hudson.util.FormValidation; +import jenkins.model.Jenkins; import jenkins.tasks.SimpleBuildStep; import net.sf.json.JSONObject; import org.jenkinsci.Symbol; @@ -19,12 +20,9 @@ import org.kohsuke.stapler.DataBoundSetter; import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.StaplerRequest2; +import org.kohsuke.stapler.verb.POST; -import java.io.File; import java.io.IOException; -import java.nio.file.Files; - -import static java.io.File.createTempFile; /** * Sample {@link Builder}. @@ -165,7 +163,10 @@ public DescriptorImpl() { } + @POST public FormValidation doCheckProjectFile(@QueryParameter String value) { + Jenkins.get().checkPermission(Item.CONFIGURE); + if(Strings.isNullOrEmpty(value)){ return FormValidation.error("value is empty"); } else{ diff --git a/src/test/java/org/jenkinsci/plugins/vb6/VB6BuilderTest.java b/src/test/java/org/jenkinsci/plugins/vb6/VB6BuilderTest.java index 8c9f486..c7d0556 100644 --- a/src/test/java/org/jenkinsci/plugins/vb6/VB6BuilderTest.java +++ b/src/test/java/org/jenkinsci/plugins/vb6/VB6BuilderTest.java @@ -7,6 +7,8 @@ import hudson.model.FreeStyleProject; import hudson.model.Result; import hudson.model.queue.QueueTaskFuture; +import org.htmlunit.html.HtmlForm; +import org.htmlunit.html.HtmlPage; import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import org.jenkinsci.plugins.workflow.job.WorkflowRun; @@ -15,13 +17,31 @@ import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.junit.jupiter.WithJenkins; import org.jvnet.hudson.test.recipes.LocalData; +import org.xml.sax.SAXException; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; @WithJenkins public class VB6BuilderTest { + @Test + void configRoundTrip(JenkinsRule j) throws Exception { + FreeStyleProject p = j.createFreeStyleProject(); + VB6Builder orig = new VB6Builder("projectFile1.vbp"); + p.getBuildersList().add(orig); + + try (JenkinsRule.WebClient webClient = j.createWebClient()) { + HtmlPage page = webClient.getPage(p, "configure"); + HtmlForm form = page.getFormByName("config"); + j.submit(form); + } + + j.assertEqualBeans(orig, p.getBuildersList().get(VB6Builder.class), "projectFile"); + + } + @Test void testUnix(JenkinsRule j) throws Exception { Assumptions.assumeFalse(Functions.isWindows());