mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-22 14:09:25 +00:00
Add QUERY HTTP method
Signed-off-by: Mario Daniel Ruiz Saavedra <desiderantes93@gmail.com>
This commit is contained in:
committed by
Brian Clozel
parent
555ac3768d
commit
4a64537ac6
@@ -44,12 +44,12 @@ class HttpMethodTests {
|
||||
void values() {
|
||||
HttpMethod[] values = HttpMethod.values();
|
||||
assertThat(values).containsExactly(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.POST, HttpMethod.PUT,
|
||||
HttpMethod.PATCH, HttpMethod.DELETE, HttpMethod.OPTIONS, HttpMethod.TRACE);
|
||||
HttpMethod.PATCH, HttpMethod.DELETE, HttpMethod.OPTIONS, HttpMethod.TRACE, HttpMethod.QUERY);
|
||||
|
||||
// check defensive copy
|
||||
values[0] = HttpMethod.POST;
|
||||
assertThat(HttpMethod.values()).containsExactly(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.POST, HttpMethod.PUT,
|
||||
HttpMethod.PATCH, HttpMethod.DELETE, HttpMethod.OPTIONS, HttpMethod.TRACE);
|
||||
HttpMethod.PATCH, HttpMethod.DELETE, HttpMethod.OPTIONS, HttpMethod.TRACE, HttpMethod.QUERY);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ class RequestMethodTests {
|
||||
|
||||
@Test
|
||||
void resolveString() {
|
||||
String[] methods = new String[]{"GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE"};
|
||||
String[] methods = new String[]{"GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE", "QUERY"};
|
||||
for (String httpMethod : methods) {
|
||||
RequestMethod requestMethod = RequestMethod.resolve(httpMethod);
|
||||
assertThat(requestMethod).isNotNull();
|
||||
|
||||
+27
-1
@@ -75,7 +75,7 @@ abstract class AbstractMockWebServerTests {
|
||||
|
||||
private MockResponse getRequest(RecordedRequest request, byte[] body, @Nullable String contentType) {
|
||||
if (request.getMethod().equals("OPTIONS")) {
|
||||
return new MockResponse.Builder().code(200).setHeader("Allow", "GET, OPTIONS, HEAD, TRACE").build();
|
||||
return new MockResponse.Builder().code(200).setHeader("Allow", "GET, QUERY, OPTIONS, HEAD, TRACE").build();
|
||||
}
|
||||
Buffer buf = new Buffer();
|
||||
buf.write(body);
|
||||
@@ -240,6 +240,29 @@ abstract class AbstractMockWebServerTests {
|
||||
return new MockResponse.Builder().code(202).build();
|
||||
}
|
||||
|
||||
private MockResponse queryRequest(RecordedRequest request, String expectedRequestContent,
|
||||
String contentType, byte[] responseBody) {
|
||||
|
||||
assertThat(request.getHeaders().values(CONTENT_LENGTH)).hasSize(1);
|
||||
assertThat(Integer.parseInt(request.getHeaders().get(CONTENT_LENGTH))).as("Invalid request content-length").isGreaterThan(0);
|
||||
String requestContentType = request.getHeaders().get(CONTENT_TYPE);
|
||||
assertThat(requestContentType).as("No content-type").isNotNull();
|
||||
Charset charset = StandardCharsets.ISO_8859_1;
|
||||
if (requestContentType.contains("charset=")) {
|
||||
String charsetName = requestContentType.split("charset=")[1];
|
||||
charset = Charset.forName(charsetName);
|
||||
}
|
||||
assertThat(request.getBody().string(charset)).as("Invalid request body").isEqualTo(expectedRequestContent);
|
||||
Buffer buf = new Buffer();
|
||||
buf.write(responseBody);
|
||||
return new MockResponse.Builder()
|
||||
.code(200)
|
||||
.setHeader(CONTENT_TYPE, contentType)
|
||||
.setHeader(CONTENT_LENGTH, responseBody.length)
|
||||
.body(buf)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
protected class TestDispatcher extends Dispatcher {
|
||||
|
||||
@@ -302,6 +325,9 @@ abstract class AbstractMockWebServerTests {
|
||||
else if (request.getTarget().equals("/put")) {
|
||||
return putRequest(request, helloWorld);
|
||||
}
|
||||
else if (request.getTarget().equals("/query")) {
|
||||
return queryRequest(request, helloWorld, textContentType.toString(), helloWorldBytes);
|
||||
}
|
||||
return new MockResponse.Builder().code(404).build();
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
|
||||
+1
-1
@@ -295,7 +295,7 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
|
||||
setUpClient(clientHttpRequestFactory);
|
||||
|
||||
Set<HttpMethod> allowed = template.optionsForAllow(URI.create(baseUrl + "/get"));
|
||||
assertThat(allowed).as("Invalid response").isEqualTo(Set.of(HttpMethod.GET, HttpMethod.OPTIONS, HttpMethod.HEAD, HttpMethod.TRACE));
|
||||
assertThat(allowed).as("Invalid response").isEqualTo(Set.of(HttpMethod.GET, HttpMethod.QUERY, HttpMethod.OPTIONS, HttpMethod.HEAD, HttpMethod.TRACE));
|
||||
}
|
||||
|
||||
@ParameterizedRestTemplateTest
|
||||
|
||||
@@ -58,14 +58,14 @@ class FormContentFilterTests {
|
||||
|
||||
|
||||
@Test
|
||||
void wrapPutPatchAndDeleteOnly() throws Exception {
|
||||
void wrapPutPatchQueryAndDeleteOnly() throws Exception {
|
||||
for (HttpMethod method : HttpMethod.values()) {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest(method.name(), "/");
|
||||
request.setContent("foo=bar".getBytes(StandardCharsets.ISO_8859_1));
|
||||
request.setContentType("application/x-www-form-urlencoded; charset=ISO-8859-1");
|
||||
this.filterChain = new MockFilterChain();
|
||||
this.filter.doFilter(request, this.response, this.filterChain);
|
||||
if (method == HttpMethod.PUT || method == HttpMethod.PATCH || method == HttpMethod.DELETE) {
|
||||
if (method == HttpMethod.PUT || method == HttpMethod.PATCH || method == HttpMethod.DELETE || method == HttpMethod.QUERY) {
|
||||
assertThat(this.filterChain.getRequest()).isNotSameAs(request);
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user