Skip to content

Commit cb4d939

Browse files
committed
Add new tests and rework old tests
1 parent b2560be commit cb4d939

6 files changed

Lines changed: 143 additions & 66 deletions

File tree

pom.xml

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
<properties>
1616
<java.level>8</java.level>
17+
<jenkins.version>2.222.4</jenkins.version>
1718
</properties>
1819

1920
<scm>
@@ -24,24 +25,6 @@
2425
<tag>HEAD</tag>
2526
</scm>
2627

27-
<dependencies>
28-
<dependency>
29-
<groupId>junit</groupId>
30-
<artifactId>junit</artifactId>
31-
<version>4.13.1</version>
32-
<scope>test</scope>
33-
</dependency>
34-
</dependencies>
35-
36-
<developers>
37-
<developer>
38-
<id>petehayes</id>
39-
<name>Peter Hayes</name>
40-
<email>petehayes@gmail.com</email>
41-
<timezone>-6</timezone>
42-
</developer>
43-
</developers>
44-
4528
<repositories>
4629
<repository>
4730
<id>repo.jenkins-ci.org</id>
@@ -56,16 +39,40 @@
5639
</pluginRepository>
5740
</pluginRepositories>
5841

59-
<profiles>
60-
<profile>
61-
<id>Java 8</id>
62-
<activation>
63-
<jdk>1.8</jdk>
64-
</activation>
65-
<properties>
66-
<additionalparam>-Xdoclint:none</additionalparam>
67-
</properties>
68-
</profile>
69-
</profiles>
42+
<dependencies>
43+
<dependency>
44+
<groupId>org.jenkins-ci.plugins.workflow</groupId>
45+
<artifactId>workflow-job</artifactId>
46+
<scope>test</scope>
47+
</dependency>
48+
<dependency>
49+
<groupId>org.jenkins-ci.plugins.workflow</groupId>
50+
<artifactId>workflow-cps</artifactId>
51+
<scope>test</scope>
52+
</dependency>
53+
<dependency>
54+
<groupId>org.jenkins-ci.plugins.workflow</groupId>
55+
<artifactId>workflow-multibranch</artifactId>
56+
<scope>test</scope>
57+
</dependency>
58+
<dependency>
59+
<groupId>org.mockito</groupId>
60+
<artifactId>mockito-core</artifactId>
61+
<scope>test</scope>
62+
</dependency>
63+
</dependencies>
64+
65+
<dependencyManagement>
66+
<dependencies>
67+
<dependency>
68+
<groupId>io.jenkins.tools.bom</groupId>
69+
<artifactId>bom-2.222.x</artifactId>
70+
<version>20</version>
71+
<scope>import</scope>
72+
<type>pom</type>
73+
</dependency>
74+
</dependencies>
75+
</dependencyManagement>
76+
7077
</project>
7178

src/main/java/hudson/plugins/validating_string_parameter/ValidatingStringParameterDefinition.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,17 @@
3030
import hudson.model.ParameterDefinition;
3131
import hudson.model.ParameterValue;
3232
import hudson.util.FormValidation;
33-
34-
import java.io.IOException;
35-
import java.util.HashMap;
36-
import java.util.Map;
37-
import java.util.regex.Pattern;
38-
import java.util.regex.PatternSyntaxException;
39-
4033
import jenkins.model.Jenkins;
4134
import net.sf.json.JSONObject;
42-
4335
import org.jenkinsci.Symbol;
4436
import org.kohsuke.stapler.DataBoundConstructor;
4537
import org.kohsuke.stapler.QueryParameter;
4638
import org.kohsuke.stapler.StaplerRequest;
4739

40+
import java.io.IOException;
41+
import java.util.regex.Pattern;
42+
import java.util.regex.PatternSyntaxException;
43+
4844
/**
4945
* String based parameter that supports setting a regular expression to validate the
5046
* user's entered value, giving real-time feedback on the value.
@@ -56,9 +52,9 @@
5652
public class ValidatingStringParameterDefinition extends ParameterDefinition {
5753

5854
private static final long serialVersionUID = 1L;
59-
private String defaultValue;
60-
private String regex;
61-
private String failedValidationMessage;
55+
private final String defaultValue;
56+
private final String regex;
57+
private final String failedValidationMessage;
6258

6359
@DataBoundConstructor
6460
public ValidatingStringParameterDefinition(String name, String defaultValue, String regex, String failedValidationMessage, String description) {
@@ -85,7 +81,7 @@ public String getFailedValidationMessage() {
8581
}
8682

8783
public String getRootUrl() {
88-
return Jenkins.getInstance().getRootUrl();
84+
return Jenkins.get().getRootUrl();
8985
}
9086

9187
@Override

src/main/java/hudson/plugins/validating_string_parameter/ValidatingStringParameterValue.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import hudson.Launcher;
2828
import hudson.model.AbstractBuild;
2929
import hudson.model.BuildListener;
30+
import hudson.model.ParameterValue;
3031
import hudson.model.StringParameterValue;
3132
import hudson.tasks.BuildWrapper;
3233
import java.io.IOException;
@@ -100,13 +101,10 @@ public boolean equals(Object obj) {
100101
}
101102
ValidatingStringParameterValue other = (ValidatingStringParameterValue) obj;
102103
if (value == null) {
103-
if (other.value != null) {
104-
return false;
105-
}
106-
} else if (!value.equals(other.value)) {
107-
return false;
104+
return other.value == null;
105+
} else {
106+
return value.equals(other.value);
108107
}
109-
return true;
110108
}
111109

112110
@Override
Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,74 @@
11
package hudson.plugins.validating_string_parameter;
22

3-
import hudson.Functions;
3+
import hudson.AbortException;
44
import hudson.cli.CLICommand;
5-
import hudson.cli.ConsoleCommand;
6-
7-
import org.junit.Rule;
5+
import hudson.model.Failure;
6+
import net.sf.json.JSONObject;
87
import org.junit.Test;
9-
import org.jvnet.hudson.test.JenkinsRule;
8+
import org.junit.runner.RunWith;
9+
import org.kohsuke.stapler.StaplerRequest;
10+
import org.mockito.Mock;
11+
import org.mockito.Mockito;
12+
import org.mockito.junit.MockitoJUnitRunner;
1013

1114
import java.io.IOException;
1215

1316
import static org.junit.Assert.assertEquals;
1417

18+
@RunWith(MockitoJUnitRunner.class)
1519
public class ValidatingStringParameterDefinitionTest {
1620

17-
@Rule
18-
public JenkinsRule r = new JenkinsRule();
21+
@Mock
22+
private StaplerRequest req;
23+
24+
@Mock
25+
private CLICommand cliCommand;
1926

2027
@Test
21-
public void testSimpleConfiguration() throws Exception {
28+
public void simpleConfiguration() throws Exception {
2229
ValidatingStringParameterDefinition d = new ValidatingStringParameterDefinition("DUMMY", "foo", ".+", "Your parameter does not match the regular expression!", "Some parameter");
2330
assertEquals("DUMMY", d.getName());
2431
assertEquals("foo", d.getDefaultValue());
2532
assertEquals(".+", d.getRegex());
2633
assertEquals("Your parameter does not match the regular expression!", d.getFailedValidationMessage());
2734
assertEquals("Some parameter", d.getDescription());
35+
Mockito.when(req.getParameterValues("DUMMY")).thenReturn(new String[]{"test"});
36+
assertEquals(new ValidatingStringParameterValue("DUMMY", "test"), d.createValue(req));
37+
JSONObject jo = new JSONObject();
38+
ValidatingStringParameterValue v = new ValidatingStringParameterValue("DUMMY", "test2");
39+
Mockito.when(req.bindJSON(ValidatingStringParameterValue.class, jo)).thenReturn(v);
40+
assertEquals(v, d.createValue(req, jo));
2841
}
2942

30-
@Test
31-
public void testJavaScriptEncode() throws Exception {
32-
ValidatingStringParameterDefinition d = new ValidatingStringParameterDefinition("DUMMY", "foo", "\".+", "Your parameter does not match the regular expression!", "Some parameter");
33-
assertEquals("DUMMY", d.getName());
34-
assertEquals("foo", d.getDefaultValue());
35-
assertEquals("\".+", d.getRegex());
36-
assertEquals("\\\".+", Functions.jsStringEscape(d.getRegex()));
37-
assertEquals("Your parameter does not match the regular expression!", d.getFailedValidationMessage());
38-
assertEquals("Some parameter", d.getDescription());
43+
@Test(expected = Failure.class)
44+
public void failedCreateValueStapler() {
45+
ValidatingStringParameterDefinition d = new ValidatingStringParameterDefinition("DUMMY", "foo", ".+", "Your parameter does not match the regular expression!", "Some parameter");
46+
Mockito.when(req.getParameterValues("DUMMY")).thenReturn(new String[]{""});
47+
d.createValue(req);
48+
}
49+
50+
@Test(expected = Failure.class)
51+
public void failedCreateValueJSONObject() {
52+
ValidatingStringParameterDefinition d = new ValidatingStringParameterDefinition("DUMMY", "foo", ".+", "Your parameter does not match the regular expression!", "Some parameter");
53+
ValidatingStringParameterValue v = new ValidatingStringParameterValue("DUMMY", "");
54+
JSONObject jo = new JSONObject();
55+
Mockito.when(req.bindJSON(ValidatingStringParameterValue.class, jo)).thenReturn(v);
56+
d.createValue(req, jo);
3957
}
4058

4159
@Test
42-
public void testCLICommand() throws IOException, InterruptedException {
60+
public void cliCommand() throws IOException, InterruptedException {
4361
ValidatingStringParameterDefinition d = new ValidatingStringParameterDefinition("DUMMY", "foo", "\".+", "Your parameter does not match the regular expression!", "Some parameter");
44-
CLICommand cliCommand = new ConsoleCommand();
4562
assertEquals(d.getDefaultParameterValue(),d.createValue(cliCommand, null));
63+
Mockito.verifyNoInteractions(cliCommand);
4664
assertEquals(new ValidatingStringParameterValue("DUMMY", "\"hello"), d.createValue(cliCommand, "\"hello"));
65+
Mockito.verifyNoInteractions(cliCommand);
66+
}
67+
68+
@Test(expected = AbortException.class)
69+
public void cliCommandFailure() throws IOException, InterruptedException {
70+
ValidatingStringParameterDefinition d = new ValidatingStringParameterDefinition("DUMMY", "foo", "\".+", "Your parameter does not match the regular expression!", "Some parameter");
71+
d.createValue(cliCommand, "hello");
72+
Mockito.verifyNoInteractions(cliCommand);
4773
}
4874
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package hudson.plugins.validating_string_parameter;
2+
3+
import hudson.model.ParametersDefinitionProperty;
4+
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
5+
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
6+
import org.junit.Rule;
7+
import org.junit.Test;
8+
import org.jvnet.hudson.test.JenkinsRule;
9+
10+
import static org.hamcrest.MatcherAssert.assertThat;
11+
import static org.hamcrest.Matchers.is;
12+
import static org.hamcrest.Matchers.notNullValue;
13+
import static org.hamcrest.Matchers.nullValue;
14+
15+
public class ValidatingStringParameterTest {
16+
17+
@Rule
18+
public JenkinsRule r = new JenkinsRule();
19+
20+
@Test
21+
public void pipeline() throws Exception {
22+
WorkflowJob p = r.createProject(WorkflowJob.class);
23+
assertThat(p.getProperty(ParametersDefinitionProperty.class), is(nullValue()));
24+
p.setDefinition(new CpsFlowDefinition("properties([\n" +
25+
" parameters([\n" +
26+
" validatingString(name: 'Test', description: 'Choose the name of your fileset that you want to create', regex: '^[^,.]$', failedValidationMessage: 'Please use integers without , or .')\n" +
27+
" ])\n" +
28+
"])", true));
29+
r.buildAndAssertSuccess(p);
30+
assertThat(p.getProperty(ParametersDefinitionProperty.class), is(notNullValue()));
31+
}
32+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package hudson.plugins.validating_string_parameter;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
7+
public class ValidatingStringParameterValueTest {
8+
9+
@Test
10+
public void equals() {
11+
ValidatingStringParameterValue v = new ValidatingStringParameterValue("DUMMY", "VALUE");
12+
assertEquals(v, v);
13+
v.setRegex("lol");
14+
ValidatingStringParameterValue v2 = new ValidatingStringParameterValue("DUMMY", "VALUE");
15+
assertEquals(v2, v);
16+
assertEquals(v2.hashCode(), v.hashCode());
17+
}
18+
}

0 commit comments

Comments
 (0)