diff --git a/pom.xml b/pom.xml
index f63f80f5c547448c0b4da27be556a8e9aa757d17..a03e91f6f9000a64b0444bc07d4f2f1672e67938 100644
--- a/pom.xml
+++ b/pom.xml
@@ -146,7 +146,7 @@ THE SOFTWARE.
commons-io
commons-io
- 2.4
+ 2.6
diff --git a/test-pom/pom.xml b/test-pom/pom.xml
index dbbda4bf2acb7d06b8d1c1283f8c768fdae03e7f..375f3ee1e44472ca2b627640eaffa9e68d5fba9a 100644
--- a/test-pom/pom.xml
+++ b/test-pom/pom.xml
@@ -54,7 +54,7 @@ THE SOFTWARE.
${project.groupId}
jenkins-test-harness
- 2.41.1
+ 2.42
test
diff --git a/test/src/test/java/hudson/AboutJenkinsTest.java b/test/src/test/java/hudson/AboutJenkinsTest.java
index e279400e618937de6eebd12887709e669ebfd9e4..356bf3c8d1dc9157c07650ed6abda53cf7209485 100644
--- a/test/src/test/java/hudson/AboutJenkinsTest.java
+++ b/test/src/test/java/hudson/AboutJenkinsTest.java
@@ -33,6 +33,8 @@ import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.MockAuthorizationStrategy;
import org.jvnet.hudson.test.SmokeTest;
+import java.net.HttpURLConnection;
+
import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
@@ -55,19 +57,19 @@ public class AboutJenkinsTest {
.grant(Jenkins.READ).everywhere().to(USER)
);
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
{ // user cannot see it
wc.login(USER);
HtmlPage page = wc.goTo("about/");
- assertEquals(403, page.getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, page.getWebResponse().getStatusCode());
}
{ // admin can access it
wc.login(ADMIN);
HtmlPage page = wc.goTo("about/");
- assertEquals(200, page.getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_OK, page.getWebResponse().getStatusCode());
assertThat(page.getWebResponse().getContentAsString(), containsString("Mavenized dependencies"));
}
}
diff --git a/test/src/test/java/hudson/TcpSlaveAgentListenerTest.java b/test/src/test/java/hudson/TcpSlaveAgentListenerTest.java
index fe29570086dc0e34fa65ec1c4fe1a08453aaae4d..484e938a67555f8eb007bbbcc13bceaef17a9cce 100644
--- a/test/src/test/java/hudson/TcpSlaveAgentListenerTest.java
+++ b/test/src/test/java/hudson/TcpSlaveAgentListenerTest.java
@@ -1,34 +1,20 @@
package hudson;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.TextPage;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import hudson.remoting.Base64;
-import java.io.IOException;
-import java.security.KeyFactory;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-import java.security.interfaces.RSAPrivateKey;
-import java.security.interfaces.RSAPublicKey;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.PKCS8EncodedKeySpec;
-import javax.annotation.Nullable;
+import java.net.HttpURLConnection;
+import java.net.URL;
import jenkins.model.Jenkins;
-import jenkins.model.identity.InstanceIdentityProvider;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.JenkinsRule.WebClient;
-import org.jvnet.hudson.test.TestExtension;
import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
public class TcpSlaveAgentListenerTest {
@@ -37,15 +23,15 @@ public class TcpSlaveAgentListenerTest {
@Test
public void headers() throws Exception {
+ WebClient wc = r.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
+
r.getInstance().setSlaveAgentPort(-1);
- try {
- r.createWebClient().goTo("tcpSlaveAgentListener");
- fail("Should get 404");
- } catch (FailingHttpStatusCodeException e) {
- assertThat(e.getStatusCode(), is(404));
- }
+ wc.assertFails("tcpSlaveAgentListener", HttpURLConnection.HTTP_NOT_FOUND);
+
r.getInstance().setSlaveAgentPort(0);
- Page p = r.createWebClient().goTo("tcpSlaveAgentListener", "text/plain");
+ Page p = wc.goTo("tcpSlaveAgentListener", "text/plain");
+ assertEquals(HttpURLConnection.HTTP_OK, p.getWebResponse().getStatusCode());
assertThat(p.getWebResponse().getResponseHeaderValue("X-Instance-Identity"), notNullValue());
}
@@ -54,15 +40,13 @@ public class TcpSlaveAgentListenerTest {
r.getInstance().setSlaveAgentPort(0);
int p = r.jenkins.getTcpSlaveAgentListener().getPort();
WebClient wc = r.createWebClient();
- TextPage text = (TextPage) wc.getPage("http://localhost:"+p+"/");
+
+ TextPage text = wc.getPage(new URL("http://localhost:" + p + "/"));
String c = text.getContent();
- assertThat(c,containsString(Jenkins.VERSION));
+ assertThat(c, containsString(Jenkins.VERSION));
- try {
- wc.getPage("http://localhost:"+p+"/xxx");
- fail("Expected 404");
- } catch (FailingHttpStatusCodeException e) {
- assertThat(e.getStatusCode(),equalTo(404));
- }
+ wc.setThrowExceptionOnFailingStatusCode(false);
+ Page page = wc.getPage(new URL("http://localhost:" + p + "/xxx"));
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, page.getWebResponse().getStatusCode());
}
}
diff --git a/test/src/test/java/hudson/cli/CLITest.java b/test/src/test/java/hudson/cli/CLITest.java
index 20590f00f12a703b4ae7c47621ba3cdf96ed69d8..194277ef8b88afd59e8441c8e5e52f7143f006a1 100644
--- a/test/src/test/java/hudson/cli/CLITest.java
+++ b/test/src/test/java/hudson/cli/CLITest.java
@@ -37,6 +37,7 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
+import java.net.HttpURLConnection;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.List;
@@ -234,11 +235,12 @@ public class CLITest {
sshd.start();
// Sanity check
- JenkinsRule.WebClient wc = r.createWebClient();
- wc.getOptions().setRedirectEnabled(false);
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = r.createWebClient()
+ .withRedirectEnabled(false)
+ .withThrowExceptionOnFailingStatusCode(false);
+
WebResponse rsp = wc.goTo("cli-proxy/").getWebResponse();
- assertEquals(rsp.getContentAsString(), 302, rsp.getStatusCode());
+ assertEquals(rsp.getContentAsString(), HttpURLConnection.HTTP_MOVED_TEMP, rsp.getStatusCode());
assertEquals(rsp.getContentAsString(), null, rsp.getResponseHeaderValue("X-Jenkins"));
assertEquals(rsp.getContentAsString(), null, rsp.getResponseHeaderValue("X-Jenkins-CLI-Port"));
assertEquals(rsp.getContentAsString(), null, rsp.getResponseHeaderValue("X-SSH-Endpoint"));
@@ -308,7 +310,7 @@ public class CLITest {
public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object node) throws IOException, ServletException {
rsp.setHeader("Location", url);
rsp.setContentType("text/html");
- rsp.setStatus(302);
+ rsp.setStatus(HttpURLConnection.HTTP_MOVED_TEMP);
PrintWriter w = rsp.getWriter();
w.append("Redirect to ").append(url);
}
diff --git a/test/src/test/java/hudson/diagnosis/HudsonHomeDiskUsageMonitorTest.java b/test/src/test/java/hudson/diagnosis/HudsonHomeDiskUsageMonitorTest.java
index 395653a0cb215a83ac67717336e52f7df2f45d1b..975b6ea1bcaeb7332c273a9f2c8f9e0fc0aed093 100644
--- a/test/src/test/java/hudson/diagnosis/HudsonHomeDiskUsageMonitorTest.java
+++ b/test/src/test/java/hudson/diagnosis/HudsonHomeDiskUsageMonitorTest.java
@@ -5,14 +5,13 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.util.NameValuePair;
import hudson.model.User;
import hudson.security.GlobalMatrixAuthorizationStrategy;
import jenkins.model.Jenkins;
-import jenkins.security.apitoken.ApiTokenPropertyConfiguration;
import jenkins.security.apitoken.ApiTokenTestHelper;
import org.junit.Rule;
import org.junit.Test;
@@ -24,6 +23,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.ElementNotFoundException;
import java.io.IOException;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
@@ -63,7 +63,8 @@ public class HudsonHomeDiskUsageMonitorTest {
public void noAccessForNonAdmin() throws Exception {
ApiTokenTestHelper.enableLegacyBehavior();
- JenkinsRule.WebClient wc = j.createWebClient();
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
// TODO: Use MockAuthorizationStrategy in later versions
JenkinsRule.DummySecurityRealm realm = j.createDummySecurityRealm();
@@ -85,26 +86,19 @@ public class HudsonHomeDiskUsageMonitorTest {
HudsonHomeDiskUsageMonitor mon = HudsonHomeDiskUsageMonitor.get();
wc.withBasicApiToken(bob);
- try {
- wc.getPage(request);
- fail();
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(403, e.getStatusCode());
- }
+ Page p = wc.getPage(request);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, p.getWebResponse().getStatusCode());
+
assertTrue(mon.isEnabled());
WebRequest requestReadOnly = new WebRequest(new URL(wc.getContextPath() + "administrativeMonitor/hudsonHomeIsFull"), HttpMethod.GET);
- try {
- wc.getPage(requestReadOnly);
- fail();
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(403, e.getStatusCode());
- }
+ p = wc.getPage(requestReadOnly);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, p.getWebResponse().getStatusCode());
wc.withBasicApiToken(administrator);
- wc.getPage(request);
+ p = wc.getPage(request);
+ assertEquals(HttpURLConnection.HTTP_OK, p.getWebResponse().getStatusCode());
assertFalse(mon.isEnabled());
-
}
/**
diff --git a/test/src/test/java/hudson/jobs/CreateItemTest.java b/test/src/test/java/hudson/jobs/CreateItemTest.java
index 941a6ba7114a2138e83641b6b48295a127ad61dc..acc0a080671c2af675af008b5c3dfd2ac20aeaa9 100644
--- a/test/src/test/java/hudson/jobs/CreateItemTest.java
+++ b/test/src/test/java/hudson/jobs/CreateItemTest.java
@@ -26,22 +26,22 @@ package hudson.jobs;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.*;
-import hudson.AbortException;
+import com.gargoylesoftware.htmlunit.Page;
import hudson.model.Failure;
import hudson.model.Item;
import hudson.model.ItemGroup;
import hudson.model.listeners.ItemListener;
+
+import java.net.HttpURLConnection;
import java.net.URL;
import java.text.MessageFormat;
-import org.acegisecurity.AccessDeniedException;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebRequest;
import hudson.model.FreeStyleProject;
@@ -54,7 +54,6 @@ import org.jvnet.hudson.test.TestExtension;
* @author Christopher Simons
*/
public class CreateItemTest {
- private static final int ERROR_PRESET = (-1);
@Rule
public JenkinsRule rule = new JenkinsRule();
@@ -78,15 +77,13 @@ public class CreateItemTest {
WebRequest request = new WebRequest(apiURL, HttpMethod.POST);
deleteContentTypeHeader(request);
- int result = ERROR_PRESET;
- try {
- result = rule.createWebClient()
- .getPage(request).getWebResponse().getStatusCode();
- } catch (FailingHttpStatusCodeException e) {
- result = e.getResponse().getStatusCode();
- }
- assertEquals("Creating job from copy should succeed.", 200, result);
+ Page p = rule.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false)
+ .getPage(request);
+ assertEquals("Creating job from copy should succeed.",
+ HttpURLConnection.HTTP_OK,
+ p.getWebResponse().getStatusCode());
}
@Issue("JENKINS-34691")
@@ -104,15 +101,14 @@ public class CreateItemTest {
WebRequest request = new WebRequest(apiURL, HttpMethod.POST);
deleteContentTypeHeader(request);
- int result = ERROR_PRESET;
- try {
- result = rule.createWebClient()
- .getPage(request).getWebResponse().getStatusCode();
- } catch (FailingHttpStatusCodeException e) {
- result = e.getResponse().getStatusCode();
- }
- assertEquals("Creating job from copy should fail.", 400, result);
+ Page p = rule.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false)
+ .getPage(request);
+
+ assertEquals("Creating job from copy should fail.",
+ HttpURLConnection.HTTP_BAD_REQUEST,
+ p.getWebResponse().getStatusCode());
assertThat(rule.jenkins.getItem("newJob"), nullValue());
}
@@ -125,9 +121,13 @@ public class CreateItemTest {
rule.jenkins.setCrumbIssuer(null);
rule.createFolder("d1").createProject(FreeStyleProject.class, "p");
MockFolder d2 = rule.createFolder("d2");
- rule.createWebClient().getPage(new WebRequest(new URL(d2.getAbsoluteUrl() + "createItem?mode=copy&name=p2&from=../d1/p"), HttpMethod.POST));
+
+ JenkinsRule.WebClient wc = rule.createWebClient();
+
+ wc.getPage(new WebRequest(new URL(d2.getAbsoluteUrl() + "createItem?mode=copy&name=p2&from=../d1/p"), HttpMethod.POST));
assertNotNull(d2.getItem("p2"));
- rule.createWebClient().getPage(new WebRequest(new URL(d2.getAbsoluteUrl() + "createItem?mode=copy&name=p3&from=/d1/p"), HttpMethod.POST));
+
+ wc.getPage(new WebRequest(new URL(d2.getAbsoluteUrl() + "createItem?mode=copy&name=p3&from=/d1/p"), HttpMethod.POST));
assertNotNull(d2.getItem("p3"));
}
diff --git a/test/src/test/java/hudson/model/AbstractItemTest.java b/test/src/test/java/hudson/model/AbstractItemTest.java
index 0c7171598b9fc58ba3358caa052f0517ffd24fb9..32551f240a4b272dd825f61be7ced64c9280ce1c 100644
--- a/test/src/test/java/hudson/model/AbstractItemTest.java
+++ b/test/src/test/java/hudson/model/AbstractItemTest.java
@@ -1,7 +1,7 @@
package hudson.model;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.util.NameValuePair;
import hudson.security.ACL;
@@ -9,6 +9,7 @@ import hudson.security.ACLContext;
import hudson.security.AccessDeniedException2;
import hudson.util.FormValidation;
import java.io.File;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import jenkins.model.Jenkins;
@@ -117,18 +118,17 @@ public class AbstractItemTest {
WebRequest wr = new WebRequest(w.createCrumbedUrl(p.getUrl() + "confirmRename"), HttpMethod.POST);
wr.setRequestParameters(Arrays.asList(new NameValuePair("newName", "bar")));
w.login("alice", "alice");
- assertThat(getPath(w.getPage(wr).getUrl()), equalTo(p.getUrl()));
+ Page page = w.getPage(wr);
+ assertThat(getPath(page.getUrl()), equalTo(p.getUrl()));
assertThat(p.getName(), equalTo("bar"));
wr = new WebRequest(w.createCrumbedUrl(p.getUrl() + "confirmRename"), HttpMethod.POST);
wr.setRequestParameters(Arrays.asList(new NameValuePair("newName", "baz")));
w.login("bob", "bob");
- try {
- assertThat(getPath(w.getPage(wr).getUrl()), equalTo(p.getUrl()));
- fail("Expecting HTTP 403 Forbidden");
- } catch (FailingHttpStatusCodeException e) {
- assertThat(e.getStatusCode(), equalTo(403));
- }
+
+ w.setThrowExceptionOnFailingStatusCode(false);
+ page = w.getPage(wr);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, page.getWebResponse().getStatusCode());
assertThat(p.getName(), equalTo("bar"));
}
diff --git a/test/src/test/java/hudson/model/AbstractProjectTest.java b/test/src/test/java/hudson/model/AbstractProjectTest.java
index 0cb25cc19482d0f682d8797a16150239c10c5e8e..071b5b9ec74e65e6ef503af7c3dcf5d107a1a176 100644
--- a/test/src/test/java/hudson/model/AbstractProjectTest.java
+++ b/test/src/test/java/hudson/model/AbstractProjectTest.java
@@ -24,8 +24,8 @@
package hudson.model;
import com.gargoylesoftware.htmlunit.ElementNotFoundException;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.WebResponse;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
@@ -120,16 +120,13 @@ public class AbstractProjectTest {
FreeStyleBuild b = project.scheduleBuild2(0).get();
- assert b.getWorkspace().exists() : "Workspace should exist by now";
+ assertTrue("Workspace should exist by now", b.getWorkspace().exists());
// make sure that the action link is protected
- JenkinsRule.WebClient wc = j.createWebClient();
- try {
- wc.getPage(new WebRequest(new URL(wc.getContextPath() + project.getUrl() + "doWipeOutWorkspace"), HttpMethod.POST));
- fail("Expected HTTP status code 403");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, e.getStatusCode());
- }
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
+ Page page = wc.getPage(new WebRequest(new URL(wc.getContextPath() + project.getUrl() + "doWipeOutWorkspace"), HttpMethod.POST));
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, page.getWebResponse().getStatusCode());
}
/**
@@ -148,7 +145,7 @@ public class AbstractProjectTest {
JenkinsRule.WebClient webClient = j.createWebClient();
HtmlPage page = webClient.getPage(j.jenkins.getItem("test0"));
- page = (HtmlPage) page.getAnchorByText("Workspace").click();
+ page = page.getAnchorByText("Workspace").click();
try {
String wipeOutLabel = ResourceBundle.getBundle("hudson/model/AbstractProject/sidepanel").getString("Wipe Out Workspace");
page.getAnchorByText(wipeOutLabel);
@@ -405,24 +402,21 @@ public class AbstractProjectTest {
j.jenkins.setNumExecutors(0);
FreeStyleProject p = j.createFreeStyleProject();
- JenkinsRule.WebClient wc = j.createWebClient();
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
- WebResponse rsp = wc.getPage(j.getURL() + p.getUrl() + "build").getWebResponse();
- assertEquals(201, rsp.getStatusCode());
+ WebResponse rsp = wc.goTo(p.getUrl() + "build", null).getWebResponse();
+ assertEquals(HttpURLConnection.HTTP_CREATED, rsp.getStatusCode());
assertNotNull(rsp.getResponseHeaderValue("Location"));
- WebResponse rsp2 = wc.getPage(j.getURL() + p.getUrl() + "build").getWebResponse();
- assertEquals(201, rsp2.getStatusCode());
+ WebResponse rsp2 = wc.goTo(p.getUrl() + "build", null).getWebResponse();
+ assertEquals(HttpURLConnection.HTTP_CREATED, rsp2.getStatusCode());
assertEquals(rsp.getResponseHeaderValue("Location"), rsp2.getResponseHeaderValue("Location"));
p.makeDisabled(true);
- try {
- wc.getPage(j.getURL() + p.getUrl() + "build");
- fail();
- } catch (FailingHttpStatusCodeException e) {
- // request should fail
- }
+ WebResponse rsp3 = wc.goTo(p.getUrl() + "build", null).getWebResponse();
+ assertEquals(HttpURLConnection.HTTP_CONFLICT, rsp3.getStatusCode());
}
/**
diff --git a/test/src/test/java/hudson/model/ApiTest.java b/test/src/test/java/hudson/model/ApiTest.java
index 754b5862f723a2e72a3a0d545519e6315d14e371..55533df3241e6a3d3ed179ba497f84c9293305f7 100644
--- a/test/src/test/java/hudson/model/ApiTest.java
+++ b/test/src/test/java/hudson/model/ApiTest.java
@@ -35,9 +35,10 @@ import org.jvnet.hudson.test.JenkinsRule;
import java.io.File;
import java.net.HttpURLConnection;
+import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
/**
* @author Kohsuke Kawaguchi
@@ -83,17 +84,13 @@ public class ApiTest {
@Issue("SECURITY-165")
@Test public void xPathDocumentFunction() throws Exception {
File f = new File(j.jenkins.getRootDir(), "queue.xml");
- JenkinsRule.WebClient client = j.createWebClient();
-
- try {
- client.goTo("api/xml?xpath=document(\"" + f.getAbsolutePath() + "\")", "application/xml");
- fail("Should become 500 error");
- } catch (com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException e) {
- String contentAsString = e.getResponse().getContentAsString();
- j.assertStringContains(
- contentAsString,
- "Illegal function: document");
- }
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
+
+ // could expect application/xml but as an error occurred it's a text/html that is returned
+ Page page = wc.goTo("api/xml?xpath=document(\"" + f.getAbsolutePath() + "\")", null);
+ assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, page.getWebResponse().getStatusCode());
+ assertThat(page.getWebResponse().getContentAsString(), containsString("Illegal function: document"));
}
@Test
diff --git a/test/src/test/java/hudson/model/AsynchPeopleTest.java b/test/src/test/java/hudson/model/AsynchPeopleTest.java
index c13017848e1ccb26f2b1203ea4723a0e416908b8..49ea6472c9e19879b6409280fd9355ea77344b47 100644
--- a/test/src/test/java/hudson/model/AsynchPeopleTest.java
+++ b/test/src/test/java/hudson/model/AsynchPeopleTest.java
@@ -24,7 +24,6 @@
package hudson.model;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import static org.junit.Assert.*;
@@ -41,16 +40,10 @@ public class AsynchPeopleTest {
@Issue("JENKINS-18641")
@Test public void display() throws Exception {
- User.get("bob");
+ User.getById( "bob", true);
JenkinsRule.WebClient wc = j.createWebClient();
- HtmlPage page;
- try {
- page = wc.goTo("asynchPeople");
- } catch (FailingHttpStatusCodeException x) {
- System.err.println(x.getResponse().getResponseHeaders());
- System.err.println(x.getResponse().getContentAsString());
- throw x;
- }
+
+ HtmlPage page = wc.goTo("asynchPeople");
assertEquals(0, wc.waitForBackgroundJavaScript(120000));
boolean found = false;
for (DomElement table : page.getElementsByTagName("table")) {
diff --git a/test/src/test/java/hudson/model/ComputerTest.java b/test/src/test/java/hudson/model/ComputerTest.java
index 8502a8983271750597c0141333726c77ede143aa..d36000230de7ee437a09dcaff01f1c5a5720b614 100644
--- a/test/src/test/java/hudson/model/ComputerTest.java
+++ b/test/src/test/java/hudson/model/ComputerTest.java
@@ -25,15 +25,16 @@ package hudson.model;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.*;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.xml.XmlPage;
import java.io.File;
+import java.net.HttpURLConnection;
+import java.nio.charset.StandardCharsets;
import jenkins.model.Jenkins;
import hudson.slaves.DumbSlave;
@@ -79,18 +80,15 @@ public class ComputerTest {
Node nodeA = j.createSlave("nodeA", null, null);
Node nodeB = j.createSlave("nodeB", null, null);
- WebClient wc = j.createWebClient();
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlForm form = wc.getPage(nodeB, "configure").getFormByName("config");
form.getInputByName("_.name").setValueAttribute("nodeA");
- try {
- j.submit(form);
- fail(NOTE);
- } catch (FailingHttpStatusCodeException e) {
- assertThat(NOTE, e.getStatusCode(), equalTo(400));
- assertThat(NOTE, e.getResponse().getContentAsString(),
- containsString("Agent called ‘nodeA’ already exists"));
- }
+ Page page = j.submit(form);
+ assertEquals(NOTE, HttpURLConnection.HTTP_BAD_REQUEST, page.getWebResponse().getStatusCode());
+ assertThat(NOTE, page.getWebResponse().getContentAsString(),
+ containsString("Agent called ‘nodeA’ already exists"));
}
@Test
@@ -109,7 +107,7 @@ public class ComputerTest {
private void verifyOfflineCause(Computer computer) throws Exception {
XmlPage page = j.createWebClient().goToXml("computer/" + computer.getName() + "/config.xml");
- String content = page.getWebResponse().getContentAsString("UTF-8");
+ String content = page.getWebResponse().getContentAsString(StandardCharsets.UTF_8);
assertThat(content, containsString("temporaryOfflineCause"));
assertThat(content, containsString("username"));
assertThat(content, not(containsString("ApiTokenProperty")));
diff --git a/test/src/test/java/hudson/model/DirectlyModifiableViewTest.java b/test/src/test/java/hudson/model/DirectlyModifiableViewTest.java
index ae8df8002c36620d660e6322c2a69d6c31ccee98..e27fc79e8f2e31914c550933ec38513fd2e25409 100644
--- a/test/src/test/java/hudson/model/DirectlyModifiableViewTest.java
+++ b/test/src/test/java/hudson/model/DirectlyModifiableViewTest.java
@@ -184,8 +184,8 @@ public class DirectlyModifiableViewTest {
}
private Page doPost(View view, String path) throws Exception {
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
WebRequest req = new WebRequest(
new URL(j.jenkins.getRootUrl() + view.getUrl() + path),
HttpMethod.POST
diff --git a/test/src/test/java/hudson/model/DirectoryBrowserSupportTest.java b/test/src/test/java/hudson/model/DirectoryBrowserSupportTest.java
index a578e26aa3e652616169c90226f467470b5255cd..45cfaac28f84237d07d9f96d03a0c348b16c1ad6 100644
--- a/test/src/test/java/hudson/model/DirectoryBrowserSupportTest.java
+++ b/test/src/test/java/hudson/model/DirectoryBrowserSupportTest.java
@@ -23,7 +23,6 @@
*/
package hudson.model;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -243,13 +242,8 @@ public class DirectoryBrowserSupportTest {
p.getPublishersList().add(new ArtifactArchiver("f"));
j.buildAndAssertSuccess(p);
HtmlPage page = j.createWebClient().goTo("job/" + p.getName() + "/lastSuccessfulBuild/artifact/");
- try {
- Page download = page.getAnchorByText("f").click();
- assertEquals("Hello world!", download.getWebResponse().getContentAsString());
- } catch (FailingHttpStatusCodeException x) {
- IOUtils.copy(x.getResponse().getContentAsStream(), System.err);
- throw x;
- }
+ Page download = page.getAnchorByText("f").click();
+ assertEquals("Hello world!", download.getWebResponse().getContentAsString());
}
/** Simulation of a storage service with URLs unrelated to {@link Run#doArtifact}. */
@TestExtension("externalURLDownload")
diff --git a/test/src/test/java/hudson/model/HudsonTest.java b/test/src/test/java/hudson/model/HudsonTest.java
index 5e8d8d82f98a5f09f958dedc0ef9891c0098ff3b..d8dd01e52dbc3c1a5b9f5ce480236784bd73c3da 100644
--- a/test/src/test/java/hudson/model/HudsonTest.java
+++ b/test/src/test/java/hudson/model/HudsonTest.java
@@ -25,7 +25,6 @@ package hudson.model;
import static org.junit.Assert.*;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebRequest;
@@ -169,20 +168,19 @@ public class HudsonTest {
public void deleteHudsonComputer() throws Exception {
WebClient wc = j.createWebClient();
HtmlPage page = wc.goTo("computer/(master)/");
- for (HtmlAnchor a : page.getAnchors())
- assertFalse(a.getHrefAttribute(),a.getHrefAttribute().endsWith("delete"));
+ for (HtmlAnchor a : page.getAnchors()) {
+ assertFalse(a.getHrefAttribute(), a.getHrefAttribute().endsWith("delete"));
+ }
+ wc.setThrowExceptionOnFailingStatusCode(false);
// try to delete it by hitting the final URL directly
WebRequest req = new WebRequest(new URL(wc.getContextPath()+"computer/(master)/doDelete"), HttpMethod.POST);
- try {
- wc.getPage(wc.addCrumb(req));
- fail("Error code expected");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, e.getStatusCode());
- }
+ page = wc.getPage(wc.addCrumb(req));
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, page.getWebResponse().getStatusCode());
// the master computer object should be still here
- wc.goTo("computer/(master)/");
+ page = wc.goTo("computer/(master)/");
+ assertEquals(HttpURLConnection.HTTP_OK, page.getWebResponse().getStatusCode());
}
/**
diff --git a/test/src/test/java/hudson/model/ItemsTest.java b/test/src/test/java/hudson/model/ItemsTest.java
index 04aefdc237a00583e271c6c4d6de940551811a9c..3e15d2228751b6b7b13c88727d901e6042a9db98 100644
--- a/test/src/test/java/hudson/model/ItemsTest.java
+++ b/test/src/test/java/hudson/model/ItemsTest.java
@@ -191,9 +191,10 @@ public class ItemsTest {
/** Use the REST command to create an empty project (normally used only from the UI in the New Item dialog). */
REST_EMPTY {
@Override void run(JenkinsRule r, String target) throws Exception {
- JenkinsRule.WebClient wc = wc(r);
- wc.getOptions().setRedirectEnabled(false);
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false); // redirect perversely counts as a failure
+ JenkinsRule.WebClient wc = wc(r)
+ // redirect perversely counts as a failure
+ .withRedirectEnabled(false)
+ .withThrowExceptionOnFailingStatusCode(false);
WebResponse webResponse = wc.getPage(new WebRequest(new URL(wc.getContextPath() + "createItem?name=" + target + "&mode=hudson.model.FreeStyleProject"), HttpMethod.POST)).getWebResponse();
if (webResponse.getStatusCode() != HttpStatus.SC_MOVED_TEMPORARILY) {
throw new FailingHttpStatusCodeException(webResponse);
@@ -204,9 +205,9 @@ public class ItemsTest {
REST_COPY {
@Override void run(JenkinsRule r, String target) throws Exception {
r.createFreeStyleProject("dupe");
- JenkinsRule.WebClient wc = wc(r);
- wc.getOptions().setRedirectEnabled(false);
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = wc(r)
+ .withRedirectEnabled(false)
+ .withThrowExceptionOnFailingStatusCode(false);
WebResponse webResponse = wc.getPage(new WebRequest(new URL(wc.getContextPath() + "createItem?name=" + target + "&mode=copy&from=dupe"), HttpMethod.POST)).getWebResponse();
r.jenkins.getItem("dupe").delete();
if (webResponse.getStatusCode() != HttpStatus.SC_MOVED_TEMPORARILY) {
@@ -228,9 +229,9 @@ public class ItemsTest {
REST_RENAME {
@Override void run(JenkinsRule r, String target) throws Exception {
r.createFreeStyleProject("dupe");
- JenkinsRule.WebClient wc = wc(r);
- wc.getOptions().setRedirectEnabled(false);
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = wc(r)
+ .withRedirectEnabled(false)
+ .withThrowExceptionOnFailingStatusCode(false);
WebResponse webResponse = wc.getPage(new WebRequest(new URL(wc.getContextPath() + "job/dupe/doRename?newName=" + target), HttpMethod.POST)).getWebResponse();
if (webResponse.getStatusCode() != HttpStatus.SC_MOVED_TEMPORARILY) {
r.jenkins.getItem("dupe").delete();
diff --git a/test/src/test/java/hudson/model/JobTest.java b/test/src/test/java/hudson/model/JobTest.java
index 54448922465d9875435809f53677755b1cc3e252..b0720781c5553f59a2b9c2de53c312b6f9b42062 100644
--- a/test/src/test/java/hudson/model/JobTest.java
+++ b/test/src/test/java/hudson/model/JobTest.java
@@ -24,7 +24,7 @@
*/
package hudson.model;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebAssert;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlFormUtil;
@@ -52,7 +52,6 @@ import java.util.concurrent.CountDownLatch;
import jenkins.model.ProjectNamingStrategy;
-import jenkins.security.apitoken.ApiTokenPropertyConfiguration;
import jenkins.security.apitoken.ApiTokenTestHelper;
import org.hamcrest.Matchers;
import org.junit.Rule;
@@ -221,14 +220,19 @@ public class JobTest {
try {
wc.assertFails("job/testJob/config.xml", HttpURLConnection.HTTP_FORBIDDEN);
- wc.withBasicApiToken(User.getById("alice", true)); // Has CONFIGURE and EXTENDED_READ permission
- tryConfigDotXml(wc, 500, "Both perms; should get 500");
+ wc.setThrowExceptionOnFailingStatusCode(false);
+
+ // Has CONFIGURE and EXTENDED_READ permission
+ wc.withBasicApiToken(User.getById("alice", true));
+ tryConfigDotXml(wc, HttpURLConnection.HTTP_INTERNAL_ERROR, "Both perms; should get 500");
- wc.withBasicApiToken(User.getById("bob", true)); // Has only CONFIGURE permission (this should imply EXTENDED_READ)
- tryConfigDotXml(wc, 500, "Config perm should imply EXTENDED_READ");
+ // Has only CONFIGURE permission (this should imply EXTENDED_READ)
+ wc.withBasicApiToken(User.getById("bob", true));
+ tryConfigDotXml(wc, HttpURLConnection.HTTP_INTERNAL_ERROR, "Config perm should imply EXTENDED_READ");
- wc.withBasicApiToken(User.getById("charlie", true)); // Has only EXTENDED_READ permission
- tryConfigDotXml(wc, 403, "No permission, should get 403");
+ // Has only EXTENDED_READ permission
+ wc.withBasicApiToken(User.getById("charlie", true));
+ tryConfigDotXml(wc, HttpURLConnection.HTTP_FORBIDDEN, "No permission, should get 403");
} finally {
Item.EXTENDED_READ.setEnabled(saveEnabled);
}
@@ -236,17 +240,17 @@ public class JobTest {
private static void tryConfigDotXml(JenkinsRule.WebClient wc, int status, String msg) throws Exception {
// Verify we can GET the config.xml:
- wc.goTo("job/testJob/config.xml", "application/xml");
+ Page p = wc.goTo("job/testJob/config.xml", "application/xml");
+ assertEquals("Retrieving config.xml should be ok", HttpURLConnection.HTTP_OK, p.getWebResponse().getStatusCode());
+
// This page is a simple form to POST to /job/testJob/config.xml
// But it posts invalid data so we expect 500 if we have permission, 403 if not
HtmlPage page = wc.goTo("userContent/post.html");
- try {
- HtmlFormUtil.submit(page.getForms().get(0));
- fail("Expected exception: " + msg);
- } catch (FailingHttpStatusCodeException expected) {
- assertEquals(msg, status, expected.getStatusCode());
- }
- wc.goTo("logout");
+ p = HtmlFormUtil.submit(page.getForms().get(0));
+ assertEquals(msg, status, p.getWebResponse().getStatusCode());
+
+ p = wc.goTo("logout");
+ assertEquals("To logout should be ok", HttpURLConnection.HTTP_OK, p.getWebResponse().getStatusCode());
}
@LocalData @Issue("JENKINS-6371")
diff --git a/test/src/test/java/hudson/model/NodeTest.java b/test/src/test/java/hudson/model/NodeTest.java
index 5901d4e2f645236ad7f46f0735da9e2db3dc8024..8a967df80de48ca74dd9bbeab4c4fbd92798e227 100644
--- a/test/src/test/java/hudson/model/NodeTest.java
+++ b/test/src/test/java/hudson/model/NodeTest.java
@@ -23,7 +23,6 @@
*/
package hudson.model;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebRequest;
@@ -448,12 +447,10 @@ public class NodeTest {
WebRequest settings = new WebRequest(wc.createCrumbedUrl("computer/(master)/config.xml"));
settings.setHttpMethod(HttpMethod.POST);
settings.setRequestBody("");
- try {
- Page page = wc.getPage(settings);
- fail(page.getWebResponse().getContentAsString());
- } catch (FailingHttpStatusCodeException x) {
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, x.getStatusCode());
- }
+
+ wc.setThrowExceptionOnFailingStatusCode(false);
+ Page page = wc.getPage(settings);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, page.getWebResponse().getStatusCode());
}
/**
diff --git a/test/src/test/java/hudson/model/ParametersTest.java b/test/src/test/java/hudson/model/ParametersTest.java
index 3249a773c8d36f63af512e0e1911c866037440f6..9fcbd68aea810c9a6baffe69eb1875fd5c73e82f 100644
--- a/test/src/test/java/hudson/model/ParametersTest.java
+++ b/test/src/test/java/hudson/model/ParametersTest.java
@@ -51,22 +51,22 @@ public class ParametersTest {
CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder();
project.getBuildersList().add(builder);
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage page = wc.goTo("job/" + project.getName() + "/build?delay=0sec");
HtmlForm form = page.getFormByName("parameters");
- HtmlElement element = (HtmlElement) DomNodeUtil.selectSingleNode(form, "//tr[td/div/input/@value='string']");
+ HtmlElement element = DomNodeUtil.selectSingleNode(form, "//tr[td/div/input/@value='string']");
assertNotNull(element);
assertEquals("string description", ((HtmlElement) DomNodeUtil.selectSingleNode(element.getNextSibling().getNextSibling(), "td[@class='setting-description']")).getTextContent());
- HtmlTextInput stringParameterInput = (HtmlTextInput) DomNodeUtil.selectSingleNode(element, ".//input[@name='value']");
+ HtmlTextInput stringParameterInput = DomNodeUtil.selectSingleNode(element, ".//input[@name='value']");
assertEquals("defaultValue", stringParameterInput.getAttribute("value"));
assertEquals("string", ((HtmlElement) DomNodeUtil.selectSingleNode(element, "td[@class='setting-name']")).getTextContent());
stringParameterInput.setAttribute("value", "newValue");
- element = (HtmlElement) DomNodeUtil.selectSingleNode(form, "//tr[td/div/input/@value='boolean']");
+ element = DomNodeUtil.selectSingleNode(form, "//tr[td/div/input/@value='boolean']");
assertNotNull(element);
assertEquals("boolean description", ((HtmlElement) DomNodeUtil.selectSingleNode(element.getNextSibling().getNextSibling(), "td[@class='setting-description']")).getTextContent());
Object o = DomNodeUtil.selectSingleNode(element, ".//input[@name='value']");
@@ -75,12 +75,12 @@ public class ParametersTest {
assertEquals(true, booleanParameterInput.isChecked());
assertEquals("boolean", ((HtmlElement) DomNodeUtil.selectSingleNode(element, "td[@class='setting-name']")).getTextContent());
- element = (HtmlElement) DomNodeUtil.selectSingleNode(form, ".//tr[td/div/input/@value='choice']");
+ element = DomNodeUtil.selectSingleNode(form, ".//tr[td/div/input/@value='choice']");
assertNotNull(element);
assertEquals("choice description", ((HtmlElement) DomNodeUtil.selectSingleNode(element.getNextSibling().getNextSibling(), "td[@class='setting-description']")).getTextContent());
assertEquals("choice", ((HtmlElement) DomNodeUtil.selectSingleNode(element, "td[@class='setting-name']")).getTextContent());
- element = (HtmlElement) DomNodeUtil.selectSingleNode(form, ".//tr[td/div/input/@value='run']");
+ element = DomNodeUtil.selectSingleNode(form, ".//tr[td/div/input/@value='run']");
assertNotNull(element);
assertEquals("run description", ((HtmlElement) DomNodeUtil.selectSingleNode(element.getNextSibling().getNextSibling(), "td[@class='setting-description']")).getTextContent());
assertEquals("run", ((HtmlElement) DomNodeUtil.selectSingleNode(element, "td[@class='setting-name']")).getTextContent());
@@ -105,16 +105,16 @@ public class ParametersTest {
CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder();
project.getBuildersList().add(builder);
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage page = wc.goTo("job/" + project.getName() + "/build?delay=0sec");
HtmlForm form = page.getFormByName("parameters");
- HtmlElement element = (HtmlElement) DomNodeUtil.selectSingleNode(form, ".//tr[td/div/input/@value='choice']");
+ HtmlElement element = DomNodeUtil.selectSingleNode(form, ".//tr[td/div/input/@value='choice']");
assertNotNull(element);
assertEquals("choice description", ((HtmlElement) DomNodeUtil.selectSingleNode(element.getNextSibling().getNextSibling(), "td[@class='setting-description']")).getTextContent());
assertEquals("choice", ((HtmlElement) DomNodeUtil.selectSingleNode(element, "td[@class='setting-name']")).getTextContent());
- HtmlOption opt = (HtmlOption)DomNodeUtil.selectSingleNode(element, "td/div/select/option[@value='Choice <2>']");
+ HtmlOption opt = DomNodeUtil.selectSingleNode(element, "td/div/select/option[@value='Choice <2>']");
assertNotNull(opt);
assertEquals("Choice <2>", opt.asText());
opt.setSelected(true);
@@ -192,8 +192,8 @@ public class ParametersTest {
new FileParameterDefinition("filename", "description"));
project.addProperty(pdp);
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage page = wc.goTo("job/" + project.getName() + "/build?delay=0sec");
HtmlForm form = page.getFormByName("parameters");
@@ -215,12 +215,13 @@ public class ParametersTest {
);
p.addProperty(pdb);
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false); // Ignore 405
+ WebClient wc = j.createWebClient()
+ // Ignore 405
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage page = wc.getPage(p, "build");
// java.lang.IllegalArgumentException: No such parameter definition: .
- wc.getOptions().setThrowExceptionOnFailingStatusCode(true);
+ wc.setThrowExceptionOnFailingStatusCode(true);
final HtmlForm form = page.getFormByName("parameters");
HtmlFormUtil.submit(form, HtmlFormUtil.getButtonByCaption(form, "Build"));
}
@@ -233,8 +234,8 @@ public class ParametersTest {
StringParameterDefinition param = new StringParameterDefinition("", "", "");
assertEquals("[param description]", param.getFormattedDescription());
p.addProperty(new ParametersDefinitionProperty(param));
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage page = wc.getPage(p, "build?delay=0sec");
collector.checkThat(page.getWebResponse().getStatusCode(), is(HttpStatus.SC_METHOD_NOT_ALLOWED)); // 405 to dissuade scripts from thinking this triggered the build
String text = page.getWebResponse().getContentAsString();
diff --git a/test/src/test/java/hudson/model/PasswordParameterDefinitionTest.java b/test/src/test/java/hudson/model/PasswordParameterDefinitionTest.java
index 49784981af8fdc3920bfd6f0782d289e1e7c02e9..f725ba19637b9798b9b47c9b3a836c2f7cf2e6bb 100644
--- a/test/src/test/java/hudson/model/PasswordParameterDefinitionTest.java
+++ b/test/src/test/java/hudson/model/PasswordParameterDefinitionTest.java
@@ -71,8 +71,9 @@ public class PasswordParameterDefinitionTest {
User admin = User.getById("admin", true);
User dev = User.getById("dev", true);
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false); // ParametersDefinitionProperty/index.jelly sends a 405 but really it is OK
+ JenkinsRule.WebClient wc = j.createWebClient()
+ // ParametersDefinitionProperty/index.jelly sends a 405 but really it is OK
+ .withThrowExceptionOnFailingStatusCode(false);
// Control case: admin can use default value.
j.submit(wc.withBasicApiToken(admin).getPage(p, "build?delay=0sec").getFormByName("parameters"));
j.waitUntilNoActivity();
diff --git a/test/src/test/java/hudson/model/ProjectTest.java b/test/src/test/java/hudson/model/ProjectTest.java
index 5a35b101f3a3ec78a696a7a301ae8a3d91065f76..a191323083ba29c7669656d44dce57c367bec974 100644
--- a/test/src/test/java/hudson/model/ProjectTest.java
+++ b/test/src/test/java/hudson/model/ProjectTest.java
@@ -25,6 +25,7 @@ package hudson.model;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebRequest;
+import com.gargoylesoftware.htmlunit.javascript.host.event.Event;
import hudson.*;
import hudson.model.queue.QueueTaskFuture;
import hudson.security.AccessDeniedException2;
@@ -252,7 +253,8 @@ public class ProjectTest {
assertEquals("Scm retry count should be the same as global scm retry count.", 6, p.getScmCheckoutRetryCount());
HtmlForm form = j.createWebClient().goTo(p.getUrl() + "/configure").getFormByName("config");
((HtmlElement)form.getByXPath("//div[@class='advancedLink']//button").get(0)).click();
- form.getInputByName("hasCustomScmCheckoutRetryCount").click();
+ // required due to the new default behavior of click
+ form.getInputByName("hasCustomScmCheckoutRetryCount").click(new Event(), true);
form.getInputByName("scmCheckoutRetryCount").setValueAttribute("7");
j.submit(form);
assertEquals("Scm retry count was set.", 7, p.getScmCheckoutRetryCount());
diff --git a/test/src/test/java/hudson/model/QueueSEC891Test.java b/test/src/test/java/hudson/model/QueueSEC891Test.java
index ea3144eff3972c04c058ef6cafd5ccf9ad5c05fa..573065ae7b2d84a7df82a019de5a55f7c865559e 100644
--- a/test/src/test/java/hudson/model/QueueSEC891Test.java
+++ b/test/src/test/java/hudson/model/QueueSEC891Test.java
@@ -59,9 +59,9 @@ public class QueueSEC891Test {
WebRequest request = new WebRequest(new URL(r.getURL() + urlProvider.apply(currentOne)), HttpMethod.POST);
{ // user without right cannot cancel
- JenkinsRule.WebClient wc = r.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
- wc.getOptions().setRedirectEnabled(false);
+ JenkinsRule.WebClient wc = r.createWebClient()
+ .withRedirectEnabled(false)
+ .withThrowExceptionOnFailingStatusCode(false);
wc.login("user");
Page p = wc.getPage(request);
// currently the endpoint return a redirection to the previously visited page, none in our case
@@ -71,9 +71,9 @@ public class QueueSEC891Test {
assertFalse(currentOne.getFuture().isCancelled());
}
{ // user with right can
- JenkinsRule.WebClient wc = r.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
- wc.getOptions().setRedirectEnabled(false);
+ JenkinsRule.WebClient wc = r.createWebClient()
+ .withRedirectEnabled(false)
+ .withThrowExceptionOnFailingStatusCode(false);
wc.login("admin");
Page p = wc.getPage(request);
assertThat(p.getWebResponse().getStatusCode(), lessThan(400));
diff --git a/test/src/test/java/hudson/model/UserRestartSEC897Test.java b/test/src/test/java/hudson/model/UserRestartSEC897Test.java
index c0c0885863ef2cd390769a7188f7f9340206e21e..4763504de070a70f2e57915d6516891047610059 100644
--- a/test/src/test/java/hudson/model/UserRestartSEC897Test.java
+++ b/test/src/test/java/hudson/model/UserRestartSEC897Test.java
@@ -32,16 +32,16 @@ public class UserRestartSEC897Test {
User.getById("admin", true).save();
{ // attempt with ".."
- JenkinsRule.WebClient wc = rr.j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = rr.j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
WebRequest request = new WebRequest(new URL(rr.j.jenkins.getRootUrl() + "whoAmI/api/xml"));
request.setAdditionalHeader("Authorization", base64("..", "any-password"));
wc.getPage(request);
}
{ // attempt with "../users/.."
- JenkinsRule.WebClient wc = rr.j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = rr.j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
WebRequest request = new WebRequest(new URL(rr.j.jenkins.getRootUrl() + "whoAmI/api/xml"));
request.setAdditionalHeader("Authorization", base64("../users/..", "any-password"));
diff --git a/test/src/test/java/hudson/model/ViewTest.java b/test/src/test/java/hudson/model/ViewTest.java
index 98c9d91963a6488db4f605937d698117a2b881ad..ecd06303dbb8502ed609e79a5de58229335ab3ab 100644
--- a/test/src/test/java/hudson/model/ViewTest.java
+++ b/test/src/test/java/hudson/model/ViewTest.java
@@ -24,6 +24,7 @@
package hudson.model;
import com.cloudbees.hudson.plugins.folder.Folder;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.html.DomNodeUtil;
import com.gargoylesoftware.htmlunit.util.NameValuePair;
@@ -31,7 +32,6 @@ import jenkins.model.Jenkins;
import org.jenkins.ui.icon.Icon;
import org.jenkins.ui.icon.IconSet;
import org.jvnet.hudson.test.Issue;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
@@ -56,6 +56,7 @@ import hudson.util.FormValidation;
import hudson.util.HudsonIsLoading;
import java.io.File;
import java.io.IOException;
+import java.net.HttpURLConnection;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -120,19 +121,19 @@ public class ViewTest {
@Test public void conflictingName() throws Exception {
assertNull(j.jenkins.getView("foo"));
- HtmlForm form = j.createWebClient().goTo("newView").getFormByName("createItem");
+ WebClient wc = j.createWebClient();
+ HtmlForm form = wc.goTo("newView").getFormByName("createItem");
form.getInputByName("name").setValueAttribute("foo");
form.getRadioButtonsByName("mode").get(0).setChecked(true);
j.submit(form);
assertNotNull(j.jenkins.getView("foo"));
+ wc.setThrowExceptionOnFailingStatusCode(false);
// do it again and verify an error
- try {
- j.submit(form);
- fail("shouldn't be allowed to create two views of the same name.");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(400, e.getStatusCode());
- }
+ Page page = j.submit(form);
+ assertEquals("shouldn't be allowed to create two views of the same name.",
+ HttpURLConnection.HTTP_BAD_REQUEST,
+ page.getWebResponse().getStatusCode());
}
@Test public void privateView() throws Exception {
@@ -209,23 +210,24 @@ public class ViewTest {
IconSet.icons.addIcon(new Icon("icon-folder icon-md", "24x24/folder.gif", "width: 24px; height: 24px;"));
}
- WebClient webClient = j.createWebClient();
+ WebClient webClient = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setJavaScriptEnabled(false);
j.assertAllImageLoadSuccessfully(webClient.goTo("asynchPeople"));
}
@Issue("JENKINS-16608")
@Test public void notAllowedName() throws Exception {
- HtmlForm form = j.createWebClient().goTo("newView").getFormByName("createItem");
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
+ HtmlForm form = wc.goTo("newView").getFormByName("createItem");
form.getInputByName("name").setValueAttribute("..");
form.getRadioButtonsByName("mode").get(0).setChecked(true);
- try {
- j.submit(form);
- fail("\"..\" should not be allowed.");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(400, e.getStatusCode());
- }
+ HtmlPage page = j.submit(form);
+ assertEquals("\"..\" should not be allowed.",
+ HttpURLConnection.HTTP_BAD_REQUEST,
+ page.getWebResponse().getStatusCode());
}
@Ignore("verified manually in Winstone but org.mortbay.JettyResponse.sendRedirect (6.1.26) seems to mangle the location")
@@ -246,7 +248,7 @@ public class ViewTest {
ListView view = listView("v");
view.description = "one";
WebClient wc = j.createWebClient();
- String xml = wc.goToXml("view/v/config.xml").getContent();
+ String xml = wc.goToXml("view/v/config.xml").getWebResponse().getContentAsString();
assertTrue(xml, xml.contains("one"));
xml = xml.replace("one", "two");
WebRequest req = new WebRequest(wc.createCrumbedUrl("view/v/config.xml"), HttpMethod.POST);
diff --git a/test/src/test/java/hudson/search/SearchTest.java b/test/src/test/java/hudson/search/SearchTest.java
index e2fcd37a48fbcbe74126810945a09611c51e8c45..6a16ec9f7f40600f42f37f9d1a363ded83e318e0 100644
--- a/test/src/test/java/hudson/search/SearchTest.java
+++ b/test/src/test/java/hudson/search/SearchTest.java
@@ -27,12 +27,13 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
import hudson.model.FreeStyleProject;
import hudson.model.ListView;
import java.io.IOException;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
@@ -43,7 +44,6 @@ import hudson.model.User;
import hudson.model.View;
import hudson.security.ACL;
import hudson.security.ACLContext;
-import hudson.security.AuthorizationStrategy;
import hudson.security.GlobalMatrixAuthorizationStrategy;
import jenkins.model.Jenkins;
import net.sf.json.JSONArray;
@@ -58,8 +58,6 @@ import org.jvnet.hudson.test.JenkinsRule.WebClient;
import org.jvnet.hudson.test.MockAuthorizationStrategy;
import org.jvnet.hudson.test.MockFolder;
-import com.gargoylesoftware.htmlunit.AlertHandler;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.Page;
/**
@@ -74,12 +72,10 @@ public class SearchTest {
*/
@Test
public void testFailure() throws Exception {
- try {
- j.search("no-such-thing");
- fail("404 expected");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(404,e.getResponse().getStatusCode());
- }
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
+ HtmlPage resultPage = wc.search("no-such-thing");
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, resultPage.getWebResponse().getStatusCode());
}
/**
@@ -88,18 +84,13 @@ public class SearchTest {
@Issue("JENKINS-3415")
@Test
public void testXSS() throws Exception {
- try {
- WebClient wc = j.createWebClient();
- wc.setAlertHandler(new AlertHandler() {
- public void handleAlert(Page page, String message) {
- throw new AssertionError();
- }
- });
- wc.search("");
- fail("404 expected");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(404,e.getResponse().getStatusCode());
- }
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
+ wc.setAlertHandler((page, message) -> {
+ throw new AssertionError();
+ });
+ HtmlPage resultPage = wc.search("");
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, resultPage.getWebResponse().getStatusCode());
}
@Test
diff --git a/test/src/test/java/hudson/security/csrf/DefaultCrumbIssuerTest.java b/test/src/test/java/hudson/security/csrf/DefaultCrumbIssuerTest.java
index 52dc455faf3ee458c2e9e9018f7e3258e685ce05..6770963f177f65f60058ea1141ec5857afcc76c1 100644
--- a/test/src/test/java/hudson/security/csrf/DefaultCrumbIssuerTest.java
+++ b/test/src/test/java/hudson/security/csrf/DefaultCrumbIssuerTest.java
@@ -6,10 +6,8 @@
package hudson.security.csrf;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import jenkins.model.Jenkins;
-import junit.framework.Assert;
import net.sf.json.JSONObject;
import org.junit.Before;
import org.junit.Rule;
@@ -60,13 +58,11 @@ public class DefaultCrumbIssuerTest {
HtmlPage p = wc.goTo("configure");
wc.removeRequestHeader(HEADER_NAME);
- try {
- // The crumb should no longer match if we remove the proxy info
- r.submit(p.getFormByName("config"));
- }
- catch (FailingHttpStatusCodeException e) {
- assertEquals(403,e.getStatusCode());
- }
+
+ wc.setThrowExceptionOnFailingStatusCode(false);
+ // The crumb should no longer match if we remove the proxy info
+ Page page = r.submit(p.getFormByName("config"));
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, page.getWebResponse().getStatusCode());
}
@Issue("JENKINS-3854")
@@ -139,17 +135,19 @@ public class DefaultCrumbIssuerTest {
@Issue("JENKINS-34254")
@Test public void testRequirePostErrorPageCrumb() throws Exception {
- Jenkins.getInstance().setCrumbIssuer(new DefaultCrumbIssuer(false));
- WebClient wc = r.createWebClient();
- try {
- wc.goTo("quietDown");
- fail("expected failure");
- } catch (FailingHttpStatusCodeException ex) {
- Assert.assertEquals("expect HTTP 405 method not allowed", 405, ex.getStatusCode());
- }
+ r.jenkins.setCrumbIssuer(new DefaultCrumbIssuer(false));
+ WebClient wc = r.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
+
+ Page page = wc.goTo("quietDown");
+ assertEquals("expect HTTP 405 method not allowed",
+ HttpURLConnection.HTTP_BAD_METHOD,
+ page.getWebResponse().getStatusCode());
+
HtmlPage retry = (HtmlPage) wc.getCurrentWindow().getEnclosedPage();
HtmlPage success = r.submit(retry.getFormByName("retry"));
- Assert.assertTrue("quieting down", r.jenkins.isQuietingDown());
+ assertEquals(HttpURLConnection.HTTP_OK, success.getWebResponse().getStatusCode());
+ assertTrue("quieting down", r.jenkins.isQuietingDown());
}
}
diff --git a/test/src/test/java/hudson/tools/ZipExtractionInstallerTest.java b/test/src/test/java/hudson/tools/ZipExtractionInstallerTest.java
index e1e882d10f01231c669a186a4d33ac9f6a7320ca..22a211ddfda5db647c7bbc965fcb266701efd61e 100644
--- a/test/src/test/java/hudson/tools/ZipExtractionInstallerTest.java
+++ b/test/src/test/java/hudson/tools/ZipExtractionInstallerTest.java
@@ -24,7 +24,6 @@
package hudson.tools;
import com.gargoylesoftware.htmlunit.HttpMethod;
-import com.gargoylesoftware.htmlunit.InteractivePage;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
@@ -46,6 +45,7 @@ import org.jvnet.hudson.test.MockAuthorizationStrategy;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.lang.reflect.Field;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
@@ -88,12 +88,12 @@ public class ZipExtractionInstallerTest {
JenkinsRule.WebClient adminWc = j.createWebClient();
adminWc.login(ADMIN);
- assertEquals(200, adminWc.getPage(request).getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_OK, adminWc.getPage(request).getWebResponse().getStatusCode());
- JenkinsRule.WebClient userWc = j.createWebClient();
- userWc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient userWc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
userWc.login(USER);
- assertEquals(403, userWc.getPage(request).getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, userWc.getPage(request).getWebResponse().getStatusCode());
}
@Test
@@ -148,7 +148,7 @@ public class ZipExtractionInstallerTest {
}
@Override
- public Object callFunction(InteractivePage page, Function function, Scriptable scope, Scriptable thisObject, Object[] args) {
+ public Object callFunction(HtmlPage page, Function function, Scriptable scope, Scriptable thisObject, Object[] args) {
if (thisObject instanceof XMLHttpRequest) {
try {
WebRequest request = getPrivateWebRequestField((XMLHttpRequest) thisObject);
diff --git a/test/src/test/java/hudson/util/RobustReflectionConverterTest.java b/test/src/test/java/hudson/util/RobustReflectionConverterTest.java
index 35f489b4eac0e988c4da52149b83d304010ef849..28a3aa3a10bcf723ee53e1c45b4fcbea871208f6 100644
--- a/test/src/test/java/hudson/util/RobustReflectionConverterTest.java
+++ b/test/src/test/java/hudson/util/RobustReflectionConverterTest.java
@@ -24,6 +24,7 @@
package hudson.util;
+import com.gargoylesoftware.htmlunit.Page;
import hudson.cli.CLICommandInvoker;
import hudson.diagnosis.OldDataMonitor;
import hudson.model.AbstractDescribableImpl;
@@ -38,6 +39,7 @@ import hudson.model.User;
import hudson.security.ACL;
import java.io.ByteArrayInputStream;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.Map;
@@ -45,7 +47,6 @@ import java.util.Map;
import jenkins.model.Jenkins;
import static org.junit.Assert.*;
-import jenkins.security.apitoken.ApiTokenPropertyConfiguration;
import jenkins.security.apitoken.ApiTokenTestHelper;
import net.sf.json.JSONObject;
@@ -59,7 +60,6 @@ import org.jvnet.hudson.test.recipes.LocalData;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebRequest;
@@ -236,18 +236,17 @@ public class RobustReflectionConverterTest {
// Configure a bad keyword via REST.
r.jenkins.setSecurityRealm(r.createDummySecurityRealm());
- WebClient wc = r.createWebClient();
+ WebClient wc = r.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
wc.withBasicApiToken(test);
WebRequest req = new WebRequest(new URL(wc.getContextPath() + String.format("%s/config.xml", p.getUrl())), HttpMethod.POST);
req.setEncodingType(null);
req.setRequestBody(String.format(CONFIGURATION_TEMPLATE, AcceptOnlySpecificKeyword.ACCEPT_KEYWORD, "badvalue"));
- try {
- wc.getPage(req);
- fail("Submitting unacceptable configuration via REST should fail.");
- } catch (FailingHttpStatusCodeException e) {
- // pass
- }
+ Page page = wc.getPage(req);
+ assertEquals("Submitting unacceptable configuration via REST should fail.",
+ HttpURLConnection.HTTP_INTERNAL_ERROR,
+ page.getWebResponse().getStatusCode());
// Configuration should not be updated for a failure of the critical field,
assertNotEquals("badvalue", p.getProperty(KeywordProperty.class).getCriticalField().getKeyword());
diff --git a/test/src/test/java/jenkins/bugs/Jenkins19124Test.java b/test/src/test/java/jenkins/bugs/Jenkins19124Test.java
index 4f976f85bacedc3a93cb669fcf713d2fca2aff7a..4a66ffe7d1e6d4568219c21edcb01e6995ec1509 100644
--- a/test/src/test/java/jenkins/bugs/Jenkins19124Test.java
+++ b/test/src/test/java/jenkins/bugs/Jenkins19124Test.java
@@ -41,7 +41,10 @@ public class Jenkins19124Test {
JenkinsRule.WebClient wc = j.createWebClient();
HtmlPage c = wc.getPage(p, "configure");
HtmlTextInput alpha = c.getElementByName("_.alpha");
+ // the fireEvent is required as setValueAttribute's new behavior is not triggering the onChange event anymore
alpha.setValueAttribute("hello");
+ alpha.fireEvent("change");
+
WebClientUtil.waitForJSExec(wc);
assertEquals("hello", d.alpha);
assertEquals("2", d.bravo);
diff --git a/test/src/test/java/jenkins/model/JenkinsTest.java b/test/src/test/java/jenkins/model/JenkinsTest.java
index a727292427a39043258f41c741974452422916dd..3b6676c1f5c6aea2a86662f7e52201d31cc20628 100644
--- a/test/src/test/java/jenkins/model/JenkinsTest.java
+++ b/test/src/test/java/jenkins/model/JenkinsTest.java
@@ -337,33 +337,30 @@ public class JenkinsTest {
grant(Jenkins.READ).everywhere().to("bob").
grantWithoutImplication(Jenkins.ADMINISTER, Jenkins.READ).everywhere().to("charlie"));
- WebClient wc = j.createWebClient();
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false)
+ .withBasicApiToken(User.getById("alice", true));
- wc.withBasicApiToken(User.getById("alice", true));
wc.assertFails("eval", HttpURLConnection.HTTP_BAD_METHOD);
- assertEquals("3", eval(wc));
+ assertEquals("3", eval(wc).getWebResponse().getContentAsString());
wc.withBasicApiToken(User.getById("bob", true));
- try {
- eval(wc);
- fail("bob has only READ");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, e.getStatusCode());
- }
+ Page page = eval(wc);
+ assertEquals("bob has only READ",
+ HttpURLConnection.HTTP_FORBIDDEN,
+ page.getWebResponse().getStatusCode());
wc.withBasicApiToken(User.getById("charlie", true));
- try {
- eval(wc);
- fail("charlie has ADMINISTER but not RUN_SCRIPTS");
- } catch (FailingHttpStatusCodeException e) {
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, e.getStatusCode());
- }
+ page = eval(wc);
+ assertEquals("charlie has ADMINISTER but not RUN_SCRIPTS",
+ HttpURLConnection.HTTP_FORBIDDEN,
+ page.getWebResponse().getStatusCode());
}
- private String eval(WebClient wc) throws Exception {
+ private Page eval(WebClient wc) throws Exception {
WebRequest req = new WebRequest(new URL(wc.getContextPath() + "eval"), HttpMethod.POST);
req.setEncodingType(null);
req.setRequestBody("${1+2}");
- return wc.getPage(req).getWebResponse().getContentAsString();
+ return wc.getPage(req);
}
@TestExtension("testUnprotectedRootAction")
@@ -411,13 +408,13 @@ public class JenkinsTest {
j.jenkins.setAuthorizationStrategy(auth);
// no anonymous read access
- assertTrue(!Jenkins.getInstance().hasPermission(Jenkins.ANONYMOUS,Jenkins.READ));
+ assertTrue(!Jenkins.get().hasPermission(Jenkins.ANONYMOUS, Jenkins.READ));
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("error/reportError");
- assertEquals(p.asText(), 400, p.getWebResponse().getStatusCode()); // not 403 forbidden
+ assertEquals(p.asText(), HttpURLConnection.HTTP_BAD_REQUEST, p.getWebResponse().getStatusCode()); // not 403 forbidden
assertTrue(p.getWebResponse().getContentAsString().contains("My car is black"));
}
@@ -462,8 +459,8 @@ public class JenkinsTest {
URL url = new URL(j.getURL(), "computer/" + slave.getNodeName() + "/scriptText?script=println(42)");
- WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
WebRequest req = new WebRequest(url, HttpMethod.POST);
Page page = wc.getPage(wc.addCrumb(req));
diff --git a/test/src/test/java/jenkins/security/ApiTokenPropertyTest.java b/test/src/test/java/jenkins/security/ApiTokenPropertyTest.java
index e9a4f16b24796141f5ea4e0224588ea0b15dfac8..fc9e43069d77a5f83e74c2ff9912c4fca12f8298 100644
--- a/test/src/test/java/jenkins/security/ApiTokenPropertyTest.java
+++ b/test/src/test/java/jenkins/security/ApiTokenPropertyTest.java
@@ -24,6 +24,8 @@ import hudson.model.FreeStyleProject;
import hudson.model.User;
import hudson.security.ACL;
import hudson.security.ACLContext;
+
+import java.net.HttpURLConnection;
import java.net.URL;
import jenkins.model.Jenkins;
@@ -139,12 +141,14 @@ public class ApiTokenPropertyTest {
final ApiTokenProperty.DescriptorImpl descriptor = (ApiTokenProperty.DescriptorImpl) t.getDescriptor();
// Make sure that Admin can reset a token of another user
- WebClient wc = createClientForUser("bar");
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = createClientForUser("bar")
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage requirePOST = wc.goTo(foo.getUrl() + "/" + descriptor.getDescriptorUrl()+ "/changeToken");
- assertEquals("method should not be allowed", 405, requirePOST.getWebResponse().getStatusCode());
+ assertEquals("method should not be allowed",
+ HttpURLConnection.HTTP_BAD_METHOD,
+ requirePOST.getWebResponse().getStatusCode());
- wc.getOptions().setThrowExceptionOnFailingStatusCode(true);
+ wc.setThrowExceptionOnFailingStatusCode(true);
WebRequest request = new WebRequest(new URL(j.getURL().toString() + foo.getUrl() + "/" + descriptor.getDescriptorUrl()+ "/changeToken"), HttpMethod.POST);
HtmlPage res = wc.getPage(request);
@@ -163,7 +167,7 @@ public class ApiTokenPropertyTest {
WebClient wc = createClientForUser("foo");
WebRequest wr = new WebRequest(new URL(j.getURL(), "job/bar/build"), HttpMethod.POST);
- assertEquals(201, wc.getPage(wr).getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_CREATED, wc.getPage(wr).getWebResponse().getStatusCode());
j.waitUntilNoActivity();
diff --git a/test/src/test/java/jenkins/security/RekeySecretAdminMonitorTest.java b/test/src/test/java/jenkins/security/RekeySecretAdminMonitorTest.java
index 413b4a6eed3df74be40ca37d788a78d3ddfff6a3..5ce5f1b1695dd2e833f7ae29c343943cbfbd7c99 100644
--- a/test/src/test/java/jenkins/security/RekeySecretAdminMonitorTest.java
+++ b/test/src/test/java/jenkins/security/RekeySecretAdminMonitorTest.java
@@ -11,7 +11,6 @@ import hudson.Util;
import hudson.util.Secret;
import hudson.util.SecretHelper;
import org.apache.commons.io.FileUtils;
-import org.hamcrest.CoreMatchers;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.recipes.Recipe.Runner;
import org.xml.sax.SAXException;
@@ -22,8 +21,7 @@ import java.io.File;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.regex.Pattern;
-
-import static org.junit.Assert.assertThat;
+import java.util.stream.Stream;
/**
* @author Kohsuke Kawaguchi
@@ -132,7 +130,18 @@ public class RekeySecretAdminMonitorTest extends HudsonTestCase {
}
private HtmlButton getButton(HtmlForm form, int index) {
- return form.getHtmlElementsByTagName("button").get(index);
+ // due to the removal of method HtmlElement.getHtmlElementsByTagName
+ Stream buttonStream = form.getElementsByTagName("button").stream()
+ .filter(HtmlButton.class::isInstance)
+ .map(HtmlButton.class::cast);
+
+ if (index > 0) {
+ buttonStream = buttonStream.skip(index - 1);
+ }
+
+ return buttonStream
+ .findFirst()
+ .orElse(null);
}
public void testScanOnBoot() throws Exception {
diff --git a/test/src/test/java/jenkins/security/Security177Test.java b/test/src/test/java/jenkins/security/Security177Test.java
index d52b30882290d315747206e224650be90cf96fa8..b0fb32ed3d465d041f293fc6881aaeb17972ba30 100644
--- a/test/src/test/java/jenkins/security/Security177Test.java
+++ b/test/src/test/java/jenkins/security/Security177Test.java
@@ -19,8 +19,8 @@ public class Security177Test {
@Test
public void nosniff() throws Exception {
- WebClient wc = jenkins.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = jenkins.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
URL u = jenkins.getURL();
verifyNoSniff(wc.getPage(new URL(u, "adjuncts/507db12b/nosuch/adjunct.js")));
diff --git a/test/src/test/java/jenkins/security/apitoken/ApiTokenStatsTest.java b/test/src/test/java/jenkins/security/apitoken/ApiTokenStatsTest.java
index e1b8dd6674d606d3362cd35992bbe20f80725530..c436ceb38fde861957c17d1e5951a41b9c47fdd6 100644
--- a/test/src/test/java/jenkins/security/apitoken/ApiTokenStatsTest.java
+++ b/test/src/test/java/jenkins/security/apitoken/ApiTokenStatsTest.java
@@ -67,8 +67,9 @@ public class ApiTokenStatsTest {
assertNotNull(t.getTokenStats());
// test the authentication via Token
- WebClient wc = j.createWebClient().withBasicCredentials(u.getId());
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ WebClient wc = j.createWebClient()
+ .withBasicCredentials(u.getId())
+ .withThrowExceptionOnFailingStatusCode(false);
final String TOKEN_NAME = "New Token Name";
diff --git a/test/src/test/java/jenkins/security/stapler/Security914Test.java b/test/src/test/java/jenkins/security/stapler/Security914Test.java
index 0d4ea8d263b23b3739b1e3f4fed7fb1d53ef2231..716b74c1734ceae659ce71b6ed2233aa7122b4c4 100644
--- a/test/src/test/java/jenkins/security/stapler/Security914Test.java
+++ b/test/src/test/java/jenkins/security/stapler/Security914Test.java
@@ -33,6 +33,7 @@ import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.TestPluginManager;
+import java.net.HttpURLConnection;
import java.net.URL;
import static org.junit.Assert.assertEquals;
@@ -53,8 +54,8 @@ public class Security914Test {
}
j.createWebClient().goTo("plugin/credentials/images/24x24/credentials.png", "image/png");
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
WebRequest request = new WebRequest(new URL(j.getURL() + "plugin/credentials/.xml"));
// plugin deployed in: test\target\jenkins7375296945862059919tmp
// rootDir is in : test\target\jenkinsTests.tmp\jenkins1274934531848159942test
@@ -62,7 +63,7 @@ public class Security914Test {
request.setAdditionalHeader("Accept-Language", "../../../../jenkinsTests.tmp/" + j.jenkins.getRootDir().getName() + "/config");
Page p = wc.getPage(request);
- assertEquals(p.getWebResponse().getStatusCode(), 404);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, p.getWebResponse().getStatusCode());
assertNotEquals(p.getWebResponse().getContentType(), "application/xml");
}
@@ -75,14 +76,14 @@ public class Security914Test {
}
j.createWebClient().goTo("plugin/credentials/images/24x24/credentials.png", "image/png");
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
WebRequest request = new WebRequest(new URL(j.getURL() + "plugin/credentials/.ini"));
// ../ can be multiply to infinity, no impact, we just need to have enough to reach the root
request.setAdditionalHeader("Accept-Language", "../../../../../../../../../../../../windows/win");
Page p = wc.getPage(request);
- assertEquals(p.getWebResponse().getStatusCode(), 404);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, p.getWebResponse().getStatusCode());
assertEquals(p.getWebResponse().getContentType(), "text/html");
}
}
diff --git a/test/src/test/java/lib/form/ExpandableTextboxTest.java b/test/src/test/java/lib/form/ExpandableTextboxTest.java
index 2889c02b29f1702c18adaa755b10f37cdfd80e44..5b75f48172424865477f69f2f6e5720017d65a1e 100644
--- a/test/src/test/java/lib/form/ExpandableTextboxTest.java
+++ b/test/src/test/java/lib/form/ExpandableTextboxTest.java
@@ -99,8 +99,8 @@ public class ExpandableTextboxTest {
private void checkRegularCase(TestRootAction testParams) throws Exception {
testParams.paramName = "testName";
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
HtmlElementUtil.click(getExpandButton(p));
@@ -110,8 +110,8 @@ public class ExpandableTextboxTest {
private void checkInjectionInName(TestRootAction testParams) throws Exception {
testParams.paramName = "testName',document.title='hacked'+'";
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
HtmlElementUtil.click(getExpandButton(p));
diff --git a/test/src/test/java/lib/form/PasswordTest.java b/test/src/test/java/lib/form/PasswordTest.java
index 316fdb20d34b4671e476b467e3764e462e3f2106..198b7b5254c85a1b575c6b012746ee1065ad6bed 100644
--- a/test/src/test/java/lib/form/PasswordTest.java
+++ b/test/src/test/java/lib/form/PasswordTest.java
@@ -148,7 +148,7 @@ public class PasswordTest {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String pName = p.getFullName();
getJobCommand.main(Collections.singletonList(pName), Locale.ENGLISH, System.in, new PrintStream(baos), System.err);
- assertEquals(xmlAdmin, baos.toString(configXml.getWebResponse().getContentCharset()));
+ assertEquals(xmlAdmin, baos.toString(configXml.getWebResponse().getContentCharset().name()));
CopyJobCommand copyJobCommand = new CopyJobCommand();
copyJobCommand.setTransportAuth(adminAuth);
String pAdminName = pName + "-admin";
@@ -171,7 +171,7 @@ public class PasswordTest {
getJobCommand.setTransportAuth(devAuth);
baos = new ByteArrayOutputStream();
getJobCommand.main(Collections.singletonList(pName), Locale.ENGLISH, System.in, new PrintStream(baos), System.err);
- assertEquals(xmlDev, baos.toString(configXml.getWebResponse().getContentCharset()));
+ assertEquals(xmlDev, baos.toString(configXml.getWebResponse().getContentCharset().name()));
copyJobCommand = new CopyJobCommand();
copyJobCommand.setTransportAuth(devAuth);
String pDevName = pName + "-dev";
@@ -194,7 +194,9 @@ public class PasswordTest {
}
VulnerableProperty.DescriptorImpl.incomingURL = null;
String secret = "s3cr3t";
+ // the fireEvent is required as setText's new behavior is not triggering the onChange event anymore
field.setText(secret);
+ field.fireEvent("change");
while (VulnerableProperty.DescriptorImpl.incomingURL == null) {
Thread.sleep(100); // form validation of edited value
}
diff --git a/test/src/test/java/lib/form/ValidateButtonTest.java b/test/src/test/java/lib/form/ValidateButtonTest.java
index f1f09b4e0a3abbfda0ac1ea04f28b0d263cc038d..a03eaf7e1fe6ed9c524271a685bac65a4306b877 100644
--- a/test/src/test/java/lib/form/ValidateButtonTest.java
+++ b/test/src/test/java/lib/form/ValidateButtonTest.java
@@ -128,8 +128,8 @@ public class ValidateButtonTest {
descriptor.paramMethod = "validateInjection";
descriptor.paramWith = "a,b";
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
descriptor.wasCalled = false;
@@ -142,8 +142,8 @@ public class ValidateButtonTest {
descriptor.paramMethod = "validateInjection',document.title='hacked'+'";
descriptor.paramWith = "a,b";
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
// no check on wasCalled because the button that is expected by the method is not passed (arguments are shifted due to the injection)
@@ -156,8 +156,8 @@ public class ValidateButtonTest {
descriptor.paramMethod = "validateInjection";
descriptor.paramWith = "a,b',document.title='hacked'+'";
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
descriptor.wasCalled = false;
diff --git a/test/src/test/java/lib/layout/ConfirmationLinkTest.java b/test/src/test/java/lib/layout/ConfirmationLinkTest.java
index bdacea2bfc61668df09dcc8de5adf0cbb0c25489..0db6bad04e0cab9536114a0efdd39e184527c5e9 100644
--- a/test/src/test/java/lib/layout/ConfirmationLinkTest.java
+++ b/test/src/test/java/lib/layout/ConfirmationLinkTest.java
@@ -41,6 +41,8 @@ import org.kohsuke.stapler.WebMethod;
import javax.annotation.CheckForNull;
+import java.net.HttpURLConnection;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
@@ -111,8 +113,8 @@ public class ConfirmationLinkTest {
}
private Page getPageAfterClick() throws Exception {
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
return HtmlElementUtil.click(getClickableLink(p));
@@ -124,15 +126,15 @@ public class ConfirmationLinkTest {
testParams.paramClass = null;
testParams.paramPost = null;
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
Page pageAfterClick = HtmlElementUtil.click(getClickableLink(p));
assertNotEquals("hacked", p.getTitleText());
assertTrue(p.getWebResponse().getContentAsString().contains("Message to confirm the click"));
// the url it clicks on is escaped and so does not exist
- assertEquals(404, pageAfterClick.getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, pageAfterClick.getWebResponse().getStatusCode());
}
private void checkInjectionInMessage(TestRootAction testParams) throws Exception {
@@ -141,14 +143,14 @@ public class ConfirmationLinkTest {
testParams.paramClass = null;
testParams.paramPost = null;
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
Page pageAfterClick = HtmlElementUtil.click(getClickableLink(p));
assertNotEquals("hacked", p.getTitleText());
// the url is normally the same page so it's ok
- assertEquals(200, pageAfterClick.getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_OK, pageAfterClick.getWebResponse().getStatusCode());
}
private void checkInjectionInPost(TestRootAction testParams) throws Exception {
@@ -157,15 +159,15 @@ public class ConfirmationLinkTest {
testParams.paramClass = null;
testParams.paramPost = postPayload;
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
Page pageAfterClick = HtmlElementUtil.click(getClickableLink(p));
assertNotEquals("hacked", p.getTitleText());
assertTrue(p.getWebResponse().getContentAsString().contains("Message to confirm the click"));
// the url is normally the same page so it's ok
- assertEquals(200, pageAfterClick.getWebResponse().getStatusCode());
+ assertEquals(HttpURLConnection.HTTP_OK, pageAfterClick.getWebResponse().getStatusCode());
}
private HtmlAnchor getClickableLink(HtmlPage page){
diff --git a/test/src/test/java/lib/layout/StopButtonTest.java b/test/src/test/java/lib/layout/StopButtonTest.java
index 913c15ec56ade3ef7b3f69277b3e1ecdec79d613..b4f8950e7a5346839666ae53ed628c6433039812 100644
--- a/test/src/test/java/lib/layout/StopButtonTest.java
+++ b/test/src/test/java/lib/layout/StopButtonTest.java
@@ -77,8 +77,8 @@ public class StopButtonTest {
testParams.paramAlt = "Alternative text for icon";
testParams.paramConfirm = null;
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
HtmlElementUtil.click(getStopLink(p));
@@ -91,8 +91,8 @@ public class StopButtonTest {
testParams.paramAlt = "Alternative text for icon";
testParams.paramConfirm = "Confirm message";
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
HtmlElementUtil.click(getStopLink(p));
@@ -105,8 +105,8 @@ public class StopButtonTest {
testParams.paramAlt = "Alternative text for icon";
testParams.paramConfirm = postPayload;
- JenkinsRule.WebClient wc = j.createWebClient();
- wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
+ JenkinsRule.WebClient wc = j.createWebClient()
+ .withThrowExceptionOnFailingStatusCode(false);
HtmlPage p = wc.goTo("test");
HtmlElementUtil.click(getStopLink(p));