From 20736fe2c60e242bf878167a50aab46d29951158 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 23 Dec 2016 15:11:58 +0100 Subject: [PATCH 1/4] Fix javadoc generation --- .../parameterizedtrigger/ParameterizedTriggerUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/hudson/plugins/parameterizedtrigger/ParameterizedTriggerUtils.java b/src/main/java/hudson/plugins/parameterizedtrigger/ParameterizedTriggerUtils.java index 76734ba6..05fcfa72 100644 --- a/src/main/java/hudson/plugins/parameterizedtrigger/ParameterizedTriggerUtils.java +++ b/src/main/java/hudson/plugins/parameterizedtrigger/ParameterizedTriggerUtils.java @@ -68,8 +68,8 @@ public static String readFileToString(FilePath f, String encoding) throws IOExce } } - /** - * {@link read VirtualFile + /** + * {@link} read VirtualFile * * @param f file to read * @return read string From 74fb46f07bf8184f0788c10095d785afc4362a7a Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 23 Dec 2016 15:22:28 +0100 Subject: [PATCH 2/4] Send error if project name is blank --- .../BuildTriggerConfig.java | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java b/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java index 9d7fe83a..18f2804c 100644 --- a/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java +++ b/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java @@ -645,28 +645,31 @@ public FormValidation doCheckProjects(@AncestorInPath Job project, @QueryPa boolean hasProjects = false; while(tokens.hasMoreTokens()) { String projectName = tokens.nextToken().trim(); - if (StringUtils.isNotBlank(projectName)) { - Item item = Jenkins.getInstance().getItem(projectName,project,Item.class); // only works after version 1.410 - if(item==null){ - Item nearest = Items.findNearest(Job.class, projectName, Jenkins.getInstance()); - String alternative = nearest != null ? nearest.getRelativeNameFrom(project) : "?"; - return FormValidation.error(Messages.BuildTrigger_NoSuchProject(projectName, alternative)); - } - if(!(item instanceof Job) || !(item instanceof ParameterizedJobMixIn.ParameterizedJob)) { - return FormValidation.error(Messages.BuildTrigger_NotBuildable(projectName)); - } + if (StringUtils.isBlank(projectName)) { + return FormValidation.error(Messages.BuildTrigger_NoSuchProject(" ", "?")); + } - // check whether the supposed user is expected to be able to build - Authentication auth = Tasks.getAuthenticationOf((ParameterizedJobMixIn.ParameterizedJob)project); - if (auth.equals(ACL.SYSTEM) && !QueueItemAuthenticatorConfiguration.get().getAuthenticators().isEmpty()) { - auth = Jenkins.ANONYMOUS; - } - if (!item.getACL().hasPermission(auth, Item.BUILD)) { - return FormValidation.error(Messages.BuildTrigger_you_have_no_permission_to_build_(projectName)); - } + Item item = Jenkins.getInstance().getItem(projectName,project,Item.class); // only works after version 1.410 + if(item==null){ + Item nearest = Items.findNearest(Job.class, projectName, Jenkins.getInstance()); + String alternative = nearest != null ? nearest.getRelativeNameFrom(project) : "?"; + return FormValidation.error(Messages.BuildTrigger_NoSuchProject(projectName, alternative)); + } + if(!(item instanceof Job) || !(item instanceof ParameterizedJobMixIn.ParameterizedJob)) { + return FormValidation.error(Messages.BuildTrigger_NotBuildable(projectName)); + } - hasProjects = true; + // check whether the supposed user is expected to be able to build + Authentication auth = Tasks.getAuthenticationOf((ParameterizedJobMixIn.ParameterizedJob)project); + if (auth.equals(ACL.SYSTEM) && !QueueItemAuthenticatorConfiguration.get().getAuthenticators().isEmpty()) { + auth = Jenkins.ANONYMOUS; + } + if (!item.getACL().hasPermission(auth, Item.BUILD)) { + return FormValidation.error(Messages.BuildTrigger_you_have_no_permission_to_build_(projectName)); } + + hasProjects = true; + } if (!hasProjects) { return FormValidation.error(Messages.BuildTrigger_NoProjectSpecified()); From 4855096d79baff2b23b139082e4626c2c2f42f8e Mon Sep 17 00:00:00 2001 From: Alexander Date: Sun, 25 Dec 2016 11:43:50 +0100 Subject: [PATCH 3/4] Add tests for build trigger configuration --- .../BuildTriggerConfig.java | 1 - .../test/BuildTriggerConfigTest.java | 36 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java b/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java index 18f2804c..f9a3a9c1 100644 --- a/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java +++ b/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java @@ -669,7 +669,6 @@ public FormValidation doCheckProjects(@AncestorInPath Job project, @QueryPa } hasProjects = true; - } if (!hasProjects) { return FormValidation.error(Messages.BuildTrigger_NoProjectSpecified()); diff --git a/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java b/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java index 5cb8c3c3..16550669 100644 --- a/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java +++ b/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java @@ -43,6 +43,7 @@ import hudson.security.AuthorizationMatrixProperty; import hudson.security.Permission; import hudson.security.ProjectMatrixAuthorizationStrategy; +import hudson.util.FormValidation; import jenkins.model.Jenkins; import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; @@ -307,4 +308,39 @@ public void testGetProjectListTriggered() throws Exception { } + @Test + public void testBlankConfig() throws Exception { + Project masterProject = r.createFreeStyleProject("project"); + + FormValidation form = r.jenkins.getDescriptorByType(BuildTriggerConfig.DescriptorImpl.class).doCheckProjects(masterProject, ""); + + assertEquals(FormValidation.Kind.ERROR, form.kind); + } + + @Test + public void testNonExistedProject() throws Exception { + Project masterProject = r.createFreeStyleProject("project"); + + FormValidation form = r.jenkins.getDescriptorByType(BuildTriggerConfig.DescriptorImpl.class).doCheckProjects(masterProject, "nonExistedProject"); + + assertEquals(FormValidation.Kind.ERROR, form.kind); + } + + @Test + public void testValidConfig() throws Exception { + Project masterProject = r.createFreeStyleProject("project"); + + FormValidation form = r.jenkins.getDescriptorByType(BuildTriggerConfig.DescriptorImpl.class).doCheckProjects(masterProject, "project"); + + assertEquals(FormValidation.Kind.OK, form.kind); + } + + @Test + public void testExtraCommaInConfig() throws Exception { + Project masterProject = r.createFreeStyleProject("project"); + + FormValidation form = r.jenkins.getDescriptorByType(BuildTriggerConfig.DescriptorImpl.class).doCheckProjects(masterProject, "project, "); + + assertEquals(FormValidation.Kind.ERROR, form.kind); + } } From 8cb5f4c1d6a2f7bd8b99ac5293d2c936909165cd Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 28 Dec 2016 14:25:55 +0100 Subject: [PATCH 4/4] Change error message and test name --- .../hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java | 2 +- .../parameterizedtrigger/test/BuildTriggerConfigTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java b/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java index f9a3a9c1..47a2e589 100644 --- a/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java +++ b/src/main/java/hudson/plugins/parameterizedtrigger/BuildTriggerConfig.java @@ -646,7 +646,7 @@ public FormValidation doCheckProjects(@AncestorInPath Job project, @QueryPa while(tokens.hasMoreTokens()) { String projectName = tokens.nextToken().trim(); if (StringUtils.isBlank(projectName)) { - return FormValidation.error(Messages.BuildTrigger_NoSuchProject(" ", "?")); + return FormValidation.error("Blank project name in the list"); } Item item = Jenkins.getInstance().getItem(projectName,project,Item.class); // only works after version 1.410 diff --git a/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java b/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java index 16550669..c31caa4b 100644 --- a/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java +++ b/src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerConfigTest.java @@ -336,7 +336,7 @@ public void testValidConfig() throws Exception { } @Test - public void testExtraCommaInConfig() throws Exception { + public void testBlankProjectNameInConfig() throws Exception { Project masterProject = r.createFreeStyleProject("project"); FormValidation form = r.jenkins.getDescriptorByType(BuildTriggerConfig.DescriptorImpl.class).doCheckProjects(masterProject, "project, ");