@Test public void buildRequestLocaleMulti() { webRequest.setAdditionalHeader("Accept-Language", "en-gb;q=0.8, da, en;q=0.7"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); List<Locale> expected = asList(new Locale("da"), new Locale("en", "gb"), new Locale("en", "")); assertThat(Collections.list(actualRequest.getLocales()), equalTo(expected)); }
@Test public void buildRequestCookiesMulti() { webRequest.setAdditionalHeader("Cookie", "name=value; name2=value2"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); Cookie[] cookies = actualRequest.getCookies(); assertThat(cookies.length, equalTo(2)); Cookie cookie = cookies[0]; assertThat(cookie.getName(), equalTo("name")); assertThat(cookie.getValue(), equalTo("value")); cookie = cookies[1]; assertThat(cookie.getName(), equalTo("name2")); assertThat(cookie.getValue(), equalTo("value2")); }
@Test public void buildRequestCookiesSingle() { webRequest.setAdditionalHeader("Cookie", "name=value"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); Cookie[] cookies = actualRequest.getCookies(); assertThat(cookies.length, equalTo(1)); assertThat(cookies[0].getName(), equalTo("name")); assertThat(cookies[0].getValue(), equalTo("value")); }
@Test public void buildRequestLocaleDa() { webRequest.setAdditionalHeader("Accept-Language", "da"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getLocale(), equalTo(new Locale("da"))); }
@Test public void buildRequestLocaleEnQ07() { webRequest.setAdditionalHeader("Accept-Language", "en"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getLocale(), equalTo(new Locale("en", ""))); }
@Test public void buildRequestLocaleEnGbQ08() { webRequest.setAdditionalHeader("Accept-Language", "en-gb;q=0.8"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getLocale(), equalTo(new Locale("en", "gb"))); }
@Test public void buildRequestRequestedSessionId() throws Exception { String sessionId = "session-id"; webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getRequestedSessionId(), equalTo(sessionId)); }
@Test public void buildRequestSessionFalseWithExistingSession() throws Exception { String sessionId = "session-id"; webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); HttpSession session = actualRequest.getSession(false); assertThat(session, notNullValue()); }
@Test public void buildRequestLocaleEnUs() { webRequest.setAdditionalHeader("Accept-Language", "en-US"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getLocale(), equalTo(Locale.US)); }
@Test public void buildRequestLocaleFr() { webRequest.setAdditionalHeader("Accept-Language", "fr"); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getLocale(), equalTo(Locale.FRENCH)); }
@Test @SuppressWarnings("deprecation") public void buildRequestBasicAuth() { String base64Credentials = "dXNlcm5hbWU6cGFzc3dvcmQ="; String authzHeaderValue = "Basic: " + base64Credentials; UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(base64Credentials); webRequest.setCredentials(credentials); webRequest.setAdditionalHeader("Authorization", authzHeaderValue); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getAuthType(), equalTo("Basic")); assertThat(actualRequest.getHeader("Authorization"), equalTo(authzHeaderValue)); }
@Test public void buildRequestContentType() { String contentType = "text/html;charset=UTF-8"; webRequest.setAdditionalHeader("Content-Type", contentType); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getContentType(), equalTo(contentType)); assertThat(actualRequest.getHeader("Content-Type"), equalTo(contentType)); }
@Test public void buildRequestSessionIsNewFalse() throws Exception { String sessionId = "session-id"; webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getSession().isNew(), equalTo(false)); }
@Test public void buildRequestSessionInvalidate() throws Exception { String sessionId = "session-id"; webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); HttpSession sessionToRemove = actualRequest.getSession(); sessionToRemove.invalidate(); assertThat(sessions.containsKey(sessionToRemove.getId()), equalTo(false)); assertSingleSessionCookie("JSESSIONID=" + sessionToRemove.getId() + "; Expires=Thu, 01-Jan-1970 00:00:01 GMT; Path=/test; Domain=example.com"); webRequest.removeAdditionalHeader("Cookie"); requestBuilder = new HtmlUnitRequestBuilder(sessions, webClient, webRequest); actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getSession().isNew(), equalTo(true)); assertThat(sessions.containsKey(sessionToRemove.getId()), equalTo(false)); }
@Test public void buildRequestSessionWithExistingSession() throws Exception { String sessionId = "session-id"; webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId); MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); HttpSession session = actualRequest.getSession(); assertThat(session.getId(), equalTo(sessionId)); assertSingleSessionCookie("JSESSIONID=" + session.getId() + "; Path=/test; Domain=example.com"); requestBuilder = new HtmlUnitRequestBuilder(sessions, webClient, webRequest); actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getSession(), equalTo(session)); webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId + "NEW"); actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getSession(), not(equalTo(session))); assertSingleSessionCookie("JSESSIONID=" + actualRequest.getSession().getId() + "; Path=/test; Domain=example.com"); }
@Test public void buildRequestSession() throws Exception { MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext); HttpSession newSession = actualRequest.getSession(); assertThat(newSession, notNullValue()); assertSingleSessionCookie( "JSESSIONID=" + newSession.getId() + "; Path=/test; Domain=example.com"); webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + newSession.getId()); requestBuilder = new HtmlUnitRequestBuilder(sessions, webClient, webRequest); actualRequest = requestBuilder.buildRequest(servletContext); assertThat(actualRequest.getSession(), sameInstance(newSession)); }
/** * Instantiates a {@link WebRequest} for the specified URL. * @param url the target URL * @param acceptHeader the accept header to use */ public WebRequest(final URL url, final String acceptHeader) { setUrl(url); setAdditionalHeader(HttpHeader.ACCEPT, acceptHeader); setAdditionalHeader(HttpHeader.ACCEPT_ENCODING, "gzip, deflate"); }
/** * Instantiates a {@link WebRequest} for the specified URL. * @param url the target URL * @param acceptHeader the accept header to use */ public WebRequest(final URL url, final String acceptHeader) { setUrl(url); setAdditionalHeader(HttpHeader.ACCEPT, acceptHeader); setAdditionalHeader(HttpHeader.ACCEPT_ENCODING, "gzip, deflate"); }
@Override public WebResponse getResponse(WebRequest request) throws IOException { request.setAdditionalHeader(HttpHeaders.ACCEPT_ENCODING, "identity"); return super.getResponse(request); } };
public InputStream httpGetLowLevel(URL url) throws IOException { WebRequest wrq=new WebRequest(url); ProxyConfig config =webClient.getProxyConfig(); //set request webproxy wrq.setProxyHost(config.getProxyHost()); wrq.setProxyPort(config.getProxyPort()); wrq.setCredentials(webClient.getCredentialsProvider().getCredentials(new AuthScope(config.getProxyHost(), config.getProxyPort()))); for(Cookie c:webClient.getCookieManager().getCookies(url)){ wrq.setAdditionalHeader("Cookie", c.toString()); } WebResponse wr= webClient.getWebConnection().getResponse(wrq); return wr.getContentAsStream(); }