Support custom HTTP method for @HttpExchange

Closes gh-28504
This commit is contained in:
rstoyanchev
2022-05-24 09:23:41 +01:00
parent 48c1746693
commit ff890bc1cc
9 changed files with 52 additions and 146 deletions

View File

@@ -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);

View File

@@ -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")