Modernize LoginRedirectTest
Replace deprecated `HudsonTestCase` and add URL path assertions.
*/
package hudson.bugs;
+import static org.junit.Assert.assertEquals;
+
import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlFormUtil;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import java.net.HttpURLConnection;
+import org.junit.Rule;
+import org.junit.Test;
import org.jvnet.hudson.test.Issue;
-import org.jvnet.hudson.test.HudsonTestCase;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.jvnet.hudson.test.JenkinsRule.WebClient;
import org.jvnet.hudson.test.recipes.PresetData;
import org.jvnet.hudson.test.recipes.PresetData.DataSet;
@@ -38,33 +42,38 @@ import org.jvnet.hudson.test.recipes.PresetData.DataSet;
* @author Kohsuke Kawaguchi
*/
@Issue("JENKINS-2290")
-public class LoginRedirectTest extends HudsonTestCase {
- protected void setUp() throws Exception {
- contextPath = "/hudson";
- super.setUp();
- }
+public class LoginRedirectTest {
+
+ @Rule
+ public JenkinsRule j = new JenkinsRule();
+ /*
+ * First sends HTTP 403, then redirects to the login page.
+ */
@PresetData(DataSet.NO_ANONYMOUS_READACCESS)
- public void testRedirect() throws Exception {
- WebClient wc = new WebClient();
- // Hudson first causes 403 FORBIDDEN error, then redirect the browser to the page
+ @Test
+ public void redirect1() throws Exception {
+ WebClient wc = j.createWebClient();
wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
- HtmlPage p = wc.goTo("/");
- assertEquals(200, p.getWebResponse().getStatusCode());
- HtmlForm form = p.getFormByName("login");
+ HtmlPage loginPage = wc.goTo("");
+ assertEquals(HttpURLConnection.HTTP_OK, loginPage.getWebResponse().getStatusCode());
+ assertEquals(j.contextPath + "/login", loginPage.getUrl().getPath());
+
+ HtmlForm form = loginPage.getFormByName("login");
form.getInputByName("j_username").setValueAttribute("alice");
form.getInputByName("j_password").setValueAttribute("alice");
- p = (HtmlPage) HtmlFormUtil.submit(form, null);
-
- System.out.println(p);
+ HtmlPage mainPage = j.submit(form);
+ assertEquals(j.contextPath + "/", mainPage.getUrl().getPath());
}
- /**
- * Verifies that Hudson is sending 403 first. This is important for machine agents.
+ /*
+ * Verifies that HTTP 403 is sent first. This is important for machine agents.
*/
@PresetData(DataSet.NO_ANONYMOUS_READACCESS)
- public void testRedirect2() throws Exception {
- new WebClient().assertFails("/", HttpURLConnection.HTTP_FORBIDDEN);
+ @Test
+ public void redirect2() throws Exception {
+ WebClient wc = j.createWebClient();
+ wc.assertFails("", HttpURLConnection.HTTP_FORBIDDEN);
}
}
