删除“ JSESSIONID” cookie后,HtmlUnit保持登录状态

时间:2018-12-28 12:56:20

标签: java session cookies login htmlunit

我正在为我的Spring Boot应用程序设置“记住我”身份验证,希望编写一个HtmlUnit测试。 问题是删除“ JSESSIONID” cookie似乎没有注销webClient。 使用“记住我”身份验证的测试可以正常运行,但是不应进行身份验证并因此无法重定向到登录页面的测试不起作用(最后一个断言失败)。

@Test
void NoRememberMeLogin() throws IOException {
    HtmlPage loginPage = webClient.getPage(baseURL + "login");
    HtmlForm loginForm = loginPage.getFormByName("loginForm");
    HtmlInput username = loginForm.getInputByName("username");
    HtmlInput password = loginForm.getInputByName("password");
    HtmlCheckBoxInput rememberMe = loginForm.getInputByName("remember-me");

    username.setValueAttribute("user");
    password.setValueAttribute("password");
    rememberMe.setChecked(false);

    // login
    HtmlElement submit = loginForm.getOneHtmlElementByAttribute("input", "type", "submit");
    HtmlPage afterLogin = submit.click();
    // login successful?
    assertThat(afterLogin.getUrl().toString(), is(baseURL + "securedPage"));

    // checkl cookies
    Cookie sessionCookie = webClient.getCookieManager().getCookie("JSESSIONID");
    Cookie rememberMeCookie = webClient.getCookieManager().getCookie("remember-me");
    assertNotNull(sessionCookie);
    assertNull(rememberMeCookie);

    // delete the Session cookie
    webClient.getCookieManager().removeCookie(sessionCookie);
    sessionCookie = webClient.getCookieManager().getCookie("JSESSIONID");
    // session cookie really is deleted
    assertNull(sessionCookie);

    // refresh tha page (works in browser)
    afterLogin.refresh();
    // check that we were redirected to login page (not working)
    assertThat(afterLogin.getUrl().toString(), is(baseURL + "login"));
}

希望您能帮助我,谢谢!

0 个答案:

没有答案