Revisit request parameters access with HtmlUnit
Prior to this commit, the `HtmlUnitRequestBuilder` would "translate" HtmlUnit web requests into Servlet requests using APIs that were not clearly defined and meant for internal usage. HtmlUnit 2.64.0 introduced a new `.getParameters()` API for collecting `NameValuePair` parsed from the request URI or request body, depending on the nature of the request. This arrangement is much more stable and in line with HtmlUnit's expectations. This commit uses this new API and makes HtmlUnit 2.64.0 a new minimum requirement for using HtmlUnit integration with Spring Framework. This also removes tests that were previously testing HtmlUnit's behavior and using the API now marked as internal. Closes gh-28240
This commit is contained in:
parent
10ade235e3
commit
dd1e6b9412
|
|
@ -83,7 +83,7 @@ dependencies {
|
|||
api("jaxen:jaxen:1.2.0")
|
||||
api("junit:junit:4.13.2")
|
||||
api("net.sf.jopt-simple:jopt-simple:5.0.4")
|
||||
api("net.sourceforge.htmlunit:htmlunit:2.63.0")
|
||||
api("net.sourceforge.htmlunit:htmlunit:2.64.0")
|
||||
api("org.apache-extras.beanshell:bsh:2.0b6")
|
||||
api("org.apache.activemq:activemq-broker:5.16.2")
|
||||
api("org.apache.activemq:activemq-kahadb-store:5.16.2")
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ package org.springframework.test.web.servlet.htmlunit;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URLDecoder;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
|
|
@ -159,7 +158,7 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable {
|
|||
cookies(request);
|
||||
this.webRequest.getAdditionalHeaders().forEach(request::addHeader);
|
||||
locales(request);
|
||||
params(request, uri);
|
||||
params(request);
|
||||
request.setQueryString(uri.getQuery());
|
||||
|
||||
return postProcess(request);
|
||||
|
|
@ -364,42 +363,36 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable {
|
|||
}
|
||||
}
|
||||
|
||||
private void params(MockHttpServletRequest request, UriComponents uriComponents) {
|
||||
uriComponents.getQueryParams().forEach((name, values) -> {
|
||||
String urlDecodedName = urlDecode(name);
|
||||
values.forEach(value -> {
|
||||
value = (value != null ? urlDecode(value) : "");
|
||||
request.addParameter(urlDecodedName, value);
|
||||
});
|
||||
});
|
||||
for (NameValuePair param : this.webRequest.getRequestParameters()) {
|
||||
if (param instanceof KeyDataPair pair) {
|
||||
File file = pair.getFile();
|
||||
MockPart part;
|
||||
if (file != null) {
|
||||
part = new MockPart(pair.getName(), file.getName(), readAllBytes(file));
|
||||
}
|
||||
else {
|
||||
// Support empty file upload OR file upload via setData().
|
||||
// For an empty file upload, getValue() returns an empty string, and
|
||||
// getData() returns null.
|
||||
// For a file upload via setData(), getData() returns the file data, and
|
||||
// getValue() returns the file name (if set) or an empty string.
|
||||
part = new MockPart(pair.getName(), pair.getValue(), pair.getData());
|
||||
}
|
||||
MediaType mediaType = (pair.getMimeType() != null ? MediaType.valueOf(pair.getMimeType()) :
|
||||
MediaType.APPLICATION_OCTET_STREAM);
|
||||
part.getHeaders().setContentType(mediaType);
|
||||
request.addPart(part);
|
||||
}
|
||||
else {
|
||||
request.addParameter(param.getName(), param.getValue());
|
||||
}
|
||||
private void params(MockHttpServletRequest request) {
|
||||
for (NameValuePair param : this.webRequest.getParameters()) {
|
||||
addRequestParameter(request, param);
|
||||
}
|
||||
}
|
||||
|
||||
private String urlDecode(String value) {
|
||||
return URLDecoder.decode(value, StandardCharsets.UTF_8);
|
||||
private void addRequestParameter(MockHttpServletRequest request, NameValuePair param) {
|
||||
if (param instanceof KeyDataPair) {
|
||||
KeyDataPair pair = (KeyDataPair) param;
|
||||
File file = pair.getFile();
|
||||
MockPart part;
|
||||
if (file != null) {
|
||||
part = new MockPart(pair.getName(), file.getName(), readAllBytes(file));
|
||||
}
|
||||
else {
|
||||
// Support empty file upload OR file upload via setData().
|
||||
// For an empty file upload, getValue() returns an empty string, and
|
||||
// getData() returns null.
|
||||
// For a file upload via setData(), getData() returns the file data, and
|
||||
// getValue() returns the file name (if set) or an empty string.
|
||||
part = new MockPart(pair.getName(), pair.getValue(), pair.getData());
|
||||
}
|
||||
MediaType mediaType = (pair.getMimeType() != null ? MediaType.valueOf(pair.getMimeType()) :
|
||||
MediaType.APPLICATION_OCTET_STREAM);
|
||||
part.getHeaders().setContentType(mediaType);
|
||||
request.addPart(part);
|
||||
}
|
||||
else {
|
||||
request.addParameter(param.getName(), param.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] readAllBytes(File file) {
|
||||
|
|
|
|||
|
|
@ -16,13 +16,9 @@
|
|||
|
||||
package org.springframework.test.web.servlet.htmlunit;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
|
@ -32,19 +28,14 @@ import com.gargoylesoftware.htmlunit.FormEncodingType;
|
|||
import com.gargoylesoftware.htmlunit.HttpMethod;
|
||||
import com.gargoylesoftware.htmlunit.WebClient;
|
||||
import com.gargoylesoftware.htmlunit.WebRequest;
|
||||
import com.gargoylesoftware.htmlunit.util.KeyDataPair;
|
||||
import com.gargoylesoftware.htmlunit.util.MimeType;
|
||||
import com.gargoylesoftware.htmlunit.util.NameValuePair;
|
||||
import jakarta.servlet.ServletContext;
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import jakarta.servlet.http.Part;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.http.auth.UsernamePasswordCredentials;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpSession;
|
||||
import org.springframework.mock.web.MockServletContext;
|
||||
|
|
@ -54,7 +45,6 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
import static org.assertj.core.api.SoftAssertions.assertSoftly;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||
|
||||
/**
|
||||
|
|
@ -78,7 +68,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
|
||||
|
||||
@BeforeEach
|
||||
public void setup() throws Exception {
|
||||
void setup() throws Exception {
|
||||
webRequest = new WebRequest(new URL("https://example.com/test/this/here"));
|
||||
webRequest.setHttpMethod(HttpMethod.GET);
|
||||
requestBuilder = new HtmlUnitRequestBuilder(sessions, webClient, webRequest);
|
||||
|
|
@ -88,19 +78,19 @@ public class HtmlUnitRequestBuilderTests {
|
|||
// --- constructor
|
||||
|
||||
@Test
|
||||
public void constructorNullSessions() {
|
||||
void constructorNullSessions() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
new HtmlUnitRequestBuilder(null, webClient, webRequest));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorNullWebClient() {
|
||||
void constructorNullWebClient() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
new HtmlUnitRequestBuilder(sessions, null, webRequest));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorNullWebRequest() {
|
||||
void constructorNullWebRequest() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
new HtmlUnitRequestBuilder(sessions, webClient, null));
|
||||
}
|
||||
|
|
@ -110,7 +100,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
public void buildRequestBasicAuth() {
|
||||
void buildRequestBasicAuth() {
|
||||
String base64Credentials = "dXNlcm5hbWU6cGFzc3dvcmQ=";
|
||||
String authzHeaderValue = "Basic: " + base64Credentials;
|
||||
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(base64Credentials);
|
||||
|
|
@ -124,7 +114,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestCharacterEncoding() {
|
||||
void buildRequestCharacterEncoding() {
|
||||
webRequest.setCharset(StandardCharsets.UTF_8);
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -133,14 +123,14 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestDefaultCharacterEncoding() {
|
||||
void buildRequestDefaultCharacterEncoding() {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getCharacterEncoding()).isEqualTo("ISO-8859-1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestContentLength() {
|
||||
void buildRequestContentLength() {
|
||||
String content = "some content that has length";
|
||||
webRequest.setHttpMethod(HttpMethod.POST);
|
||||
webRequest.setRequestBody(content);
|
||||
|
|
@ -151,7 +141,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestContentType() {
|
||||
void buildRequestContentType() {
|
||||
String contentType = "text/html;charset=UTF-8";
|
||||
webRequest.setAdditionalHeader("Content-Type", contentType);
|
||||
|
||||
|
|
@ -162,7 +152,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test // SPR-14916
|
||||
public void buildRequestContentTypeWithFormSubmission() {
|
||||
void buildRequestContentTypeWithFormSubmission() {
|
||||
webRequest.setEncodingType(FormEncodingType.URL_ENCODED);
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -174,14 +164,14 @@ public class HtmlUnitRequestBuilderTests {
|
|||
|
||||
|
||||
@Test
|
||||
public void buildRequestContextPathUsesFirstSegmentByDefault() {
|
||||
void buildRequestContextPathUsesFirstSegmentByDefault() {
|
||||
String contextPath = requestBuilder.buildRequest(servletContext).getContextPath();
|
||||
|
||||
assertThat(contextPath).isEqualTo("/test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestContextPathUsesNoFirstSegmentWithDefault() throws MalformedURLException {
|
||||
void buildRequestContextPathUsesNoFirstSegmentWithDefault() throws MalformedURLException {
|
||||
webRequest.setUrl(new URL("https://example.com/"));
|
||||
String contextPath = requestBuilder.buildRequest(servletContext).getContextPath();
|
||||
|
||||
|
|
@ -189,7 +179,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestContextPathInvalid() {
|
||||
void buildRequestContextPathInvalid() {
|
||||
requestBuilder.setContextPath("/invalid");
|
||||
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
|
|
@ -197,7 +187,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestContextPathEmpty() {
|
||||
void buildRequestContextPathEmpty() {
|
||||
String expected = "";
|
||||
requestBuilder.setContextPath(expected);
|
||||
|
||||
|
|
@ -207,7 +197,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestContextPathExplicit() {
|
||||
void buildRequestContextPathExplicit() {
|
||||
String expected = "/test";
|
||||
requestBuilder.setContextPath(expected);
|
||||
|
||||
|
|
@ -217,7 +207,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestContextPathMulti() {
|
||||
void buildRequestContextPathMulti() {
|
||||
String expected = "/test/this";
|
||||
requestBuilder.setContextPath(expected);
|
||||
|
||||
|
|
@ -227,14 +217,14 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestCookiesNull() {
|
||||
void buildRequestCookiesNull() {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getCookies()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestCookiesSingle() {
|
||||
void buildRequestCookiesSingle() {
|
||||
webRequest.setAdditionalHeader("Cookie", "name=value");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -246,7 +236,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestCookiesMulti() {
|
||||
void buildRequestCookiesMulti() {
|
||||
webRequest.setAdditionalHeader("Cookie", "name=value; name2=value2");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -263,7 +253,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
public void buildRequestInputStream() throws Exception {
|
||||
void buildRequestInputStream() throws Exception {
|
||||
String content = "some content that has length";
|
||||
webRequest.setHttpMethod(HttpMethod.POST);
|
||||
webRequest.setRequestBody(content);
|
||||
|
|
@ -274,21 +264,21 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocalAddr() {
|
||||
void buildRequestLocalAddr() {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getLocalAddr()).isEqualTo("127.0.0.1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocaleDefault() {
|
||||
void buildRequestLocaleDefault() {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getLocale()).isEqualTo(Locale.getDefault());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocaleDa() {
|
||||
void buildRequestLocaleDa() {
|
||||
webRequest.setAdditionalHeader("Accept-Language", "da");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -297,7 +287,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocaleEnGbQ08() {
|
||||
void buildRequestLocaleEnGbQ08() {
|
||||
webRequest.setAdditionalHeader("Accept-Language", "en-gb;q=0.8");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -306,7 +296,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocaleEnQ07() {
|
||||
void buildRequestLocaleEnQ07() {
|
||||
webRequest.setAdditionalHeader("Accept-Language", "en");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -315,7 +305,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocaleEnUs() {
|
||||
void buildRequestLocaleEnUs() {
|
||||
webRequest.setAdditionalHeader("Accept-Language", "en-US");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -324,7 +314,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocaleFr() {
|
||||
void buildRequestLocaleFr() {
|
||||
webRequest.setAdditionalHeader("Accept-Language", "fr");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -333,7 +323,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocaleMulti() {
|
||||
void buildRequestLocaleMulti() {
|
||||
webRequest.setAdditionalHeader("Accept-Language", "en-gb;q=0.8, da, en;q=0.7");
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -343,14 +333,14 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocalName() {
|
||||
void buildRequestLocalName() {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getLocalName()).isEqualTo("localhost");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocalPort() throws Exception {
|
||||
void buildRequestLocalPort() throws Exception {
|
||||
webRequest.setUrl(new URL("http://localhost:80/test/this/here"));
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
|
|
@ -358,7 +348,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestLocalMissing() throws Exception {
|
||||
void buildRequestLocalMissing() throws Exception {
|
||||
webRequest.setUrl(new URL("http://localhost/test/this"));
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
|
|
@ -366,7 +356,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestMethods() {
|
||||
void buildRequestMethods() {
|
||||
for (HttpMethod expectedMethod : HttpMethod.values()) {
|
||||
webRequest.setHttpMethod(expectedMethod);
|
||||
String actualMethod = requestBuilder.buildRequest(servletContext).getMethod();
|
||||
|
|
@ -374,159 +364,41 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithSingleRequestParam() {
|
||||
webRequest.setRequestParameters(Arrays.asList(new NameValuePair("name", "value")));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(1);
|
||||
assertThat(actualRequest.getParameter("name")).isEqualTo("value");
|
||||
}
|
||||
// --- buildRequest with parameters
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithSingleRequestParamWithNullValue() {
|
||||
webRequest.setRequestParameters(Arrays.asList(new NameValuePair("name", null)));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(1);
|
||||
assertThat(actualRequest.getParameter("name")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithSingleRequestParamWithEmptyValue() {
|
||||
webRequest.setRequestParameters(Arrays.asList(new NameValuePair("name", "")));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(1);
|
||||
assertThat(actualRequest.getParameter("name")).isEqualTo("");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithSingleRequestParamWithValueSetToSpace() {
|
||||
webRequest.setRequestParameters(Arrays.asList(new NameValuePair("name", " ")));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(1);
|
||||
assertThat(actualRequest.getParameter("name")).isEqualTo(" ");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithMultipleRequestParams() {
|
||||
webRequest.setRequestParameters(Arrays.asList(new NameValuePair("name1", "value1"), new NameValuePair("name2", "value2")));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(2);
|
||||
assertThat(actualRequest.getParameter("name1")).isEqualTo("value1");
|
||||
assertThat(actualRequest.getParameter("name2")).isEqualTo("value2");
|
||||
}
|
||||
|
||||
@Test // gh-24926
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithFileToUploadAsParameter() throws Exception {
|
||||
webRequest.setRequestParameters(Collections.singletonList(
|
||||
new KeyDataPair("key",
|
||||
new ClassPathResource("org/springframework/test/web/htmlunit/test.txt").getFile(),
|
||||
"test.txt", MimeType.TEXT_PLAIN, StandardCharsets.UTF_8)));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParts()).hasSize(1);
|
||||
Part part = actualRequest.getPart("key");
|
||||
assertThat(part).isNotNull();
|
||||
assertThat(part.getName()).isEqualTo("key");
|
||||
assertThat(IOUtils.toString(part.getInputStream(), StandardCharsets.UTF_8)).isEqualTo("test file");
|
||||
assertThat(part.getSubmittedFileName()).isEqualTo("test.txt");
|
||||
assertThat(part.getContentType()).isEqualTo(MimeType.TEXT_PLAIN);
|
||||
}
|
||||
|
||||
@Test // gh-27199
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithFileDataAsParameter() throws Exception {
|
||||
String data = "{}";
|
||||
KeyDataPair keyDataPair = new KeyDataPair("key", new File("test.json"), null, MimeType.APPLICATION_JSON, StandardCharsets.UTF_8);
|
||||
keyDataPair.setData(data.getBytes());
|
||||
|
||||
webRequest.setRequestParameters(Collections.singletonList(keyDataPair));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParts()).hasSize(1);
|
||||
Part part = actualRequest.getPart("key");
|
||||
|
||||
assertSoftly(softly -> {
|
||||
softly.assertThat(part).as("part").isNotNull();
|
||||
softly.assertThat(part.getName()).as("name").isEqualTo("key");
|
||||
softly.assertThat(part.getSubmittedFileName()).as("file name").isEqualTo("test.json");
|
||||
softly.assertThat(part.getContentType()).as("content type").isEqualTo(MimeType.APPLICATION_JSON);
|
||||
try {
|
||||
softly.assertThat(IOUtils.toString(part.getInputStream(), StandardCharsets.UTF_8)).as("content").isEqualTo(data);
|
||||
}
|
||||
catch (IOException ex) {
|
||||
softly.fail("failed to get InputStream", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test // gh-26799
|
||||
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithNullFileToUploadAsParameter() throws Exception {
|
||||
webRequest.setRequestParameters(Collections.singletonList(new KeyDataPair("key", null, null, null, (Charset) null)));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParts()).hasSize(1);
|
||||
Part part = actualRequest.getPart("key");
|
||||
|
||||
assertSoftly(softly -> {
|
||||
softly.assertThat(part).as("part").isNotNull();
|
||||
softly.assertThat(part.getName()).as("name").isEqualTo("key");
|
||||
softly.assertThat(part.getSize()).as("size").isEqualTo(0);
|
||||
try {
|
||||
softly.assertThat(part.getInputStream()).as("input stream").isEmpty();
|
||||
}
|
||||
catch (IOException ex) {
|
||||
softly.fail("failed to get InputStream", ex);
|
||||
}
|
||||
softly.assertThat(part.getSubmittedFileName()).as("filename").isEqualTo("");
|
||||
softly.assertThat(part.getContentType()).as("content-type").isEqualTo("application/octet-stream");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapFromSingleQueryParam() throws Exception {
|
||||
void buildRequestParameterMapFromSingleQueryParam() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example/?name=value"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(1);
|
||||
assertThat(actualRequest.getParameterMap()).hasSize(1);
|
||||
assertThat(actualRequest.getParameter("name")).isEqualTo("value");
|
||||
}
|
||||
|
||||
// SPR-14177
|
||||
@Test
|
||||
public void buildRequestParameterMapDecodesParameterName() throws Exception {
|
||||
void buildRequestParameterMapDecodesParameterName() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example/?row%5B0%5D=value"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(1);
|
||||
assertThat(actualRequest.getParameterMap()).hasSize(1);
|
||||
assertThat(actualRequest.getParameter("row[0]")).isEqualTo("value");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapDecodesParameterValue() throws Exception {
|
||||
void buildRequestParameterMapDecodesParameterValue() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example/?name=row%5B0%5D"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(1);
|
||||
assertThat(actualRequest.getParameterMap()).hasSize(1);
|
||||
assertThat(actualRequest.getParameter("name")).isEqualTo("row[0]");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapFromSingleQueryParamWithoutValueAndWithoutEqualsSign() throws Exception {
|
||||
void buildRequestParameterMapFromSingleQueryParamWithoutValueAndWithoutEqualsSign() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example/?name"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -536,7 +408,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapFromSingleQueryParamWithoutValueButWithEqualsSign() throws Exception {
|
||||
void buildRequestParameterMapFromSingleQueryParamWithoutValueButWithEqualsSign() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example/?name="));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -546,7 +418,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapFromSingleQueryParamWithValueSetToEncodedSpace() throws Exception {
|
||||
void buildRequestParameterMapFromSingleQueryParamWithValueSetToEncodedSpace() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example/?name=%20"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -556,25 +428,25 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapFromMultipleQueryParams() throws Exception {
|
||||
void buildRequestParameterMapFromMultipleQueryParams() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example/?name=value¶m2=value+2"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size()).isEqualTo(2);
|
||||
assertThat(actualRequest.getParameterMap()).hasSize(2);
|
||||
assertThat(actualRequest.getParameter("name")).isEqualTo("value");
|
||||
assertThat(actualRequest.getParameter("param2")).isEqualTo("value 2");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestPathInfo() throws Exception {
|
||||
void buildRequestPathInfo() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getPathInfo()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestPathInfoNull() throws Exception {
|
||||
void buildRequestPathInfoNull() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/example"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -583,7 +455,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestAndAntPathRequestMatcher() throws Exception {
|
||||
void buildRequestAndAntPathRequestMatcher() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/app/login/authenticate"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -594,14 +466,14 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestProtocol() throws Exception {
|
||||
void buildRequestProtocol() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getProtocol()).isEqualTo("HTTP/1.1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestQueryWithSingleQueryParam() throws Exception {
|
||||
void buildRequestQueryWithSingleQueryParam() throws Exception {
|
||||
String expectedQuery = "param=value";
|
||||
webRequest.setUrl(new URL("https://example.com/example?" + expectedQuery));
|
||||
|
||||
|
|
@ -611,7 +483,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestQueryWithSingleQueryParamWithoutValueAndWithoutEqualsSign() throws Exception {
|
||||
void buildRequestQueryWithSingleQueryParamWithoutValueAndWithoutEqualsSign() throws Exception {
|
||||
String expectedQuery = "param";
|
||||
webRequest.setUrl(new URL("https://example.com/example?" + expectedQuery));
|
||||
|
||||
|
|
@ -621,7 +493,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestQueryWithSingleQueryParamWithoutValueButWithEqualsSign() throws Exception {
|
||||
void buildRequestQueryWithSingleQueryParamWithoutValueButWithEqualsSign() throws Exception {
|
||||
String expectedQuery = "param=";
|
||||
webRequest.setUrl(new URL("https://example.com/example?" + expectedQuery));
|
||||
|
||||
|
|
@ -631,7 +503,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestQueryWithSingleQueryParamWithValueSetToEncodedSpace() throws Exception {
|
||||
void buildRequestQueryWithSingleQueryParamWithValueSetToEncodedSpace() throws Exception {
|
||||
String expectedQuery = "param=%20";
|
||||
webRequest.setUrl(new URL("https://example.com/example?" + expectedQuery));
|
||||
|
||||
|
|
@ -641,7 +513,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestQueryWithMultipleQueryParams() throws Exception {
|
||||
void buildRequestQueryWithMultipleQueryParams() throws Exception {
|
||||
String expectedQuery = "param1=value1¶m2=value2";
|
||||
webRequest.setUrl(new URL("https://example.com/example?" + expectedQuery));
|
||||
|
||||
|
|
@ -651,7 +523,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestReader() throws Exception {
|
||||
void buildRequestReader() throws Exception {
|
||||
String expectedBody = "request body";
|
||||
webRequest.setHttpMethod(HttpMethod.POST);
|
||||
webRequest.setRequestBody(expectedBody);
|
||||
|
|
@ -662,21 +534,21 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestRemoteAddr() throws Exception {
|
||||
void buildRequestRemoteAddr() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getRemoteAddr()).isEqualTo("127.0.0.1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestRemoteHost() throws Exception {
|
||||
void buildRequestRemoteHost() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getRemoteAddr()).isEqualTo("127.0.0.1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestRemotePort() throws Exception {
|
||||
void buildRequestRemotePort() throws Exception {
|
||||
webRequest.setUrl(new URL("http://localhost:80/test/this/here"));
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
|
|
@ -684,7 +556,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestRemotePort8080() throws Exception {
|
||||
void buildRequestRemotePort8080() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com:8080/"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -693,7 +565,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestRemotePort80WithDefault() throws Exception {
|
||||
void buildRequestRemotePort80WithDefault() throws Exception {
|
||||
webRequest.setUrl(new URL("http://company.example/"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -702,7 +574,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestRequestedSessionId() throws Exception {
|
||||
void buildRequestRequestedSessionId() throws Exception {
|
||||
String sessionId = "session-id";
|
||||
webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId);
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -711,26 +583,26 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestRequestedSessionIdNull() throws Exception {
|
||||
void buildRequestRequestedSessionIdNull() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getRequestedSessionId()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestUri() {
|
||||
void buildRequestUri() {
|
||||
String uri = requestBuilder.buildRequest(servletContext).getRequestURI();
|
||||
assertThat(uri).isEqualTo("/test/this/here");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestUrl() {
|
||||
void buildRequestUrl() {
|
||||
String uri = requestBuilder.buildRequest(servletContext).getRequestURL().toString();
|
||||
assertThat(uri).isEqualTo("https://example.com/test/this/here");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSchemeHttp() throws Exception {
|
||||
void buildRequestSchemeHttp() throws Exception {
|
||||
webRequest.setUrl(new URL("http://localhost:80/test/this/here"));
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
|
|
@ -738,7 +610,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSchemeHttps() throws Exception {
|
||||
void buildRequestSchemeHttps() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/"));
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
|
|
@ -746,14 +618,14 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestServerName() throws Exception {
|
||||
void buildRequestServerName() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getServerName()).isEqualTo("example.com");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestServerPort() throws Exception {
|
||||
void buildRequestServerPort() throws Exception {
|
||||
webRequest.setUrl(new URL("http://localhost:80/test/this/here"));
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
|
|
@ -761,7 +633,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestServerPortDefault() throws Exception {
|
||||
void buildRequestServerPortDefault() throws Exception {
|
||||
webRequest.setUrl(new URL("https://example.com/"));
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
|
|
@ -769,21 +641,21 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestServletContext() throws Exception {
|
||||
void buildRequestServletContext() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getServletContext()).isEqualTo(servletContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestServletPath() throws Exception {
|
||||
void buildRequestServletPath() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getServletPath()).isEqualTo("/this/here");
|
||||
}
|
||||
|
||||
@Test // gh-27837
|
||||
public void buildRequestServletPathWithEncodedUrl() throws Exception {
|
||||
void buildRequestServletPathWithEncodedUrl() throws Exception {
|
||||
webRequest.setUrl(new URL("http://localhost/test/Fr%C3%BChling%20Sommer%20Herbst%20Winter"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -793,7 +665,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSession() throws Exception {
|
||||
void buildRequestSession() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
HttpSession newSession = actualRequest.getSession();
|
||||
|
|
@ -810,7 +682,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSessionWithExistingSession() throws Exception {
|
||||
void buildRequestSessionWithExistingSession() throws Exception {
|
||||
String sessionId = "session-id";
|
||||
webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId);
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -831,7 +703,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSessionTrue() throws Exception {
|
||||
void buildRequestSessionTrue() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
HttpSession session = actualRequest.getSession(true);
|
||||
|
|
@ -839,7 +711,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSessionFalseIsNull() throws Exception {
|
||||
void buildRequestSessionFalseIsNull() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
HttpSession session = actualRequest.getSession(false);
|
||||
|
|
@ -847,7 +719,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSessionFalseWithExistingSession() throws Exception {
|
||||
void buildRequestSessionFalseWithExistingSession() throws Exception {
|
||||
String sessionId = "session-id";
|
||||
webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId);
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
@ -857,14 +729,14 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSessionIsNew() throws Exception {
|
||||
void buildRequestSessionIsNew() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getSession().isNew()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSessionIsNewFalse() throws Exception {
|
||||
void buildRequestSessionIsNewFalse() throws Exception {
|
||||
String sessionId = "session-id";
|
||||
webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId);
|
||||
|
||||
|
|
@ -874,7 +746,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSessionInvalidate() throws Exception {
|
||||
void buildRequestSessionInvalidate() throws Exception {
|
||||
String sessionId = "session-id";
|
||||
webRequest.setAdditionalHeader("Cookie", "JSESSIONID=" + sessionId);
|
||||
|
||||
|
|
@ -898,33 +770,33 @@ public class HtmlUnitRequestBuilderTests {
|
|||
// --- setContextPath
|
||||
|
||||
@Test
|
||||
public void setContextPathNull() {
|
||||
void setContextPathNull() {
|
||||
requestBuilder.setContextPath(null);
|
||||
|
||||
assertThat(getContextPath()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setContextPathEmptyString() {
|
||||
void setContextPathEmptyString() {
|
||||
requestBuilder.setContextPath("");
|
||||
|
||||
assertThat(getContextPath()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setContextPathDoesNotStartWithSlash() {
|
||||
void setContextPathDoesNotStartWithSlash() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
requestBuilder.setContextPath("abc/def"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setContextPathEndsWithSlash() {
|
||||
void setContextPathEndsWithSlash() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
requestBuilder.setContextPath("/abc/def/"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setContextPath() {
|
||||
void setContextPath() {
|
||||
String expectedContextPath = "/abc/def";
|
||||
requestBuilder.setContextPath(expectedContextPath);
|
||||
|
||||
|
|
@ -932,7 +804,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void mergeHeader() throws Exception {
|
||||
void mergeHeader() throws Exception {
|
||||
String headerName = "PARENT";
|
||||
String headerValue = "VALUE";
|
||||
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new HelloController())
|
||||
|
|
@ -943,7 +815,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void mergeSession() throws Exception {
|
||||
void mergeSession() throws Exception {
|
||||
String attrName = "PARENT";
|
||||
String attrValue = "VALUE";
|
||||
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new HelloController())
|
||||
|
|
@ -954,7 +826,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void mergeSessionNotInitialized() throws Exception {
|
||||
void mergeSessionNotInitialized() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new HelloController())
|
||||
.defaultRequest(get("/"))
|
||||
.build();
|
||||
|
|
@ -963,7 +835,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void mergeParameter() throws Exception {
|
||||
void mergeParameter() throws Exception {
|
||||
String paramName = "PARENT";
|
||||
String paramValue = "VALUE";
|
||||
String paramValue2 = "VALUE2";
|
||||
|
|
@ -976,7 +848,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void mergeCookie() throws Exception {
|
||||
void mergeCookie() throws Exception {
|
||||
String cookieName = "PARENT";
|
||||
String cookieValue = "VALUE";
|
||||
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new HelloController())
|
||||
|
|
@ -992,7 +864,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void mergeRequestAttribute() throws Exception {
|
||||
void mergeRequestAttribute() throws Exception {
|
||||
String attrName = "PARENT";
|
||||
String attrValue = "VALUE";
|
||||
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new HelloController())
|
||||
|
|
@ -1003,7 +875,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
}
|
||||
|
||||
@Test // SPR-14584
|
||||
public void mergeDoesNotCorruptPathInfoOnParent() throws Exception {
|
||||
void mergeDoesNotCorruptPathInfoOnParent() throws Exception {
|
||||
String pathInfo = "/foo/bar";
|
||||
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new HelloController())
|
||||
.defaultRequest(get("/"))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -103,7 +103,7 @@ class MockMvcWebClientBuilderTests {
|
|||
WebClient client = MockMvcWebClientBuilder.mockMvcSetup(this.mockMvc).build();
|
||||
|
||||
assertThat(getResponse(client, "http://localhost/").getContentAsString()).isEqualTo("NA");
|
||||
assertThat(postResponse(client, "http://localhost/?cookie=foo").getContentAsString()).isEqualTo("Set");
|
||||
assertThat(postResponse(client, "http://localhost/", "cookie=foo").getContentAsString()).isEqualTo("Set");
|
||||
assertThat(getResponse(client, "http://localhost/").getContentAsString()).isEqualTo("foo");
|
||||
assertThat(deleteResponse(client, "http://localhost/").getContentAsString()).isEqualTo("Delete");
|
||||
assertThat(getResponse(client, "http://localhost/").getContentAsString()).isEqualTo("NA");
|
||||
|
|
@ -117,8 +117,10 @@ class MockMvcWebClientBuilderTests {
|
|||
return createResponse(client, new WebRequest(new URL(url)));
|
||||
}
|
||||
|
||||
private WebResponse postResponse(WebClient client, String url) throws IOException {
|
||||
return createResponse(client, new WebRequest(new URL(url), HttpMethod.POST));
|
||||
private WebResponse postResponse(WebClient client, String url, String body) throws IOException {
|
||||
WebRequest request = new WebRequest(new URL(url), HttpMethod.POST);
|
||||
request.setRequestBody(body);
|
||||
return createResponse(client, request);
|
||||
}
|
||||
|
||||
private WebResponse deleteResponse(WebClient client, String url) throws IOException {
|
||||
|
|
|
|||
Loading…
Reference in New Issue