Support custom HTTP method for @HttpExchange
Closes gh-28504
This commit is contained in:
@@ -20,9 +20,12 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.web.service.annotation.GetExchange;
|
||||
import org.springframework.web.service.annotation.HttpExchange;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
|
||||
/**
|
||||
@@ -47,11 +50,17 @@ public class HttpMethodArgumentResolverTests {
|
||||
|
||||
|
||||
@Test
|
||||
void requestMethodOverride() {
|
||||
void httpMethodFromArgument() {
|
||||
this.service.execute(HttpMethod.POST);
|
||||
assertThat(getActualMethod()).isEqualTo(HttpMethod.POST);
|
||||
}
|
||||
|
||||
@Test
|
||||
void httpMethodFromAnnotation() {
|
||||
this.service.executeHttpHead();
|
||||
assertThat(getActualMethod()).isEqualTo(HttpMethod.HEAD);
|
||||
}
|
||||
|
||||
@Test
|
||||
void notHttpMethod() {
|
||||
assertThatIllegalStateException()
|
||||
@@ -63,11 +72,11 @@ public class HttpMethodArgumentResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void ignoreNull() {
|
||||
this.service.execute(null);
|
||||
assertThat(getActualMethod()).isEqualTo(HttpMethod.GET);
|
||||
void nullHttpMethod() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> this.service.execute(null));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private HttpMethod getActualMethod() {
|
||||
return this.client.getRequestValues().getHttpMethod();
|
||||
}
|
||||
@@ -75,9 +84,12 @@ public class HttpMethodArgumentResolverTests {
|
||||
|
||||
private interface Service {
|
||||
|
||||
@GetExchange
|
||||
@HttpExchange
|
||||
void execute(HttpMethod method);
|
||||
|
||||
@HttpExchange(method = "HEAD")
|
||||
void executeHttpHead();
|
||||
|
||||
@GetExchange
|
||||
void executeNotHttpMethod(String test);
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public class HttpRequestValuesTests {
|
||||
|
||||
@Test
|
||||
void defaultUri() {
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder(HttpMethod.GET).build();
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.GET).build();
|
||||
|
||||
assertThat(requestValues.getUri()).isNull();
|
||||
assertThat(requestValues.getUriTemplate()).isEqualTo("");
|
||||
@@ -48,7 +48,7 @@ public class HttpRequestValuesTests {
|
||||
@ValueSource(strings = {"POST", "PUT", "PATCH"})
|
||||
void requestParamAsFormData(String httpMethod) {
|
||||
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder(HttpMethod.valueOf(httpMethod))
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.valueOf(httpMethod))
|
||||
.setContentType(MediaType.APPLICATION_FORM_URLENCODED)
|
||||
.addRequestParameter("param1", "1st value")
|
||||
.addRequestParameter("param2", "2nd value A", "2nd value B")
|
||||
@@ -62,7 +62,7 @@ public class HttpRequestValuesTests {
|
||||
@Test
|
||||
void requestParamAsQueryParamsInUriTemplate() {
|
||||
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder(HttpMethod.POST)
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.POST)
|
||||
.setUriTemplate("/path")
|
||||
.addRequestParameter("param1", "1st value")
|
||||
.addRequestParameter("param2", "2nd value A", "2nd value B")
|
||||
@@ -96,7 +96,7 @@ public class HttpRequestValuesTests {
|
||||
@Test
|
||||
void requestParamAsQueryParamsInUri() {
|
||||
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder(HttpMethod.POST)
|
||||
HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.POST)
|
||||
.setUri(URI.create("/path"))
|
||||
.addRequestParameter("param1", "1st value")
|
||||
.addRequestParameter("param2", "2nd value A", "2nd value B")
|
||||
|
||||
Reference in New Issue
Block a user