parent
e290ae285c
commit
ce6217be85
|
@ -125,16 +125,17 @@ public interface ClientRequest {
|
||||||
// Static builder methods
|
// Static builder methods
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a builder with the method, URI, headers, cookies, attributes, and body of the given request.
|
* Create a builder initialized with the HTTP method, url, headers, cookies,
|
||||||
* @param other the request to copy the method, URI, headers, cookies, attributes, and body from
|
* attributes, and body of the given request.
|
||||||
* @return the created builder
|
* @param other the request to copy from
|
||||||
|
* @return the builder instance
|
||||||
*/
|
*/
|
||||||
static Builder from(ClientRequest other) {
|
static Builder from(ClientRequest other) {
|
||||||
return new DefaultClientRequestBuilder(other);
|
return new DefaultClientRequestBuilder(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a builder with the given method and url.
|
* Create a builder with the given HTTP method and url.
|
||||||
* @param method the HTTP method (GET, POST, etc)
|
* @param method the HTTP method (GET, POST, etc)
|
||||||
* @param url the url (as a URI instance)
|
* @param url the url (as a URI instance)
|
||||||
* @return the created builder
|
* @return the created builder
|
||||||
|
@ -146,7 +147,7 @@ public interface ClientRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a request builder with the given method and url.
|
* Create a request builder with the given HTTP method and url.
|
||||||
* @param method the HTTP method (GET, POST, etc)
|
* @param method the HTTP method (GET, POST, etc)
|
||||||
* @param url the url (as a URI instance)
|
* @param url the url (as a URI instance)
|
||||||
* @return the created builder
|
* @return the created builder
|
||||||
|
|
|
@ -51,20 +51,24 @@ import static org.springframework.http.HttpMethod.POST;
|
||||||
*/
|
*/
|
||||||
public class DefaultClientRequestBuilderTests {
|
public class DefaultClientRequestBuilderTests {
|
||||||
|
|
||||||
|
private static final URI DEFAULT_URL = URI.create("https://example.com");
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void from() throws URISyntaxException {
|
public void from() {
|
||||||
ClientRequest other = ClientRequest.create(GET, URI.create("https://example.com"))
|
ClientRequest other = ClientRequest.create(GET, DEFAULT_URL)
|
||||||
.header("foo", "bar")
|
.header("foo", "bar")
|
||||||
.cookie("baz", "qux")
|
.cookie("baz", "qux")
|
||||||
.attribute("attributeKey", "attributeValue")
|
.attribute("attributeKey", "attributeValue")
|
||||||
.attribute("anotherAttributeKey", "anotherAttributeValue")
|
.attribute("anotherAttributeKey", "anotherAttributeValue")
|
||||||
.httpRequest(request -> {})
|
.httpRequest(request -> {})
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
ClientRequest result = ClientRequest.from(other)
|
ClientRequest result = ClientRequest.from(other)
|
||||||
.headers(httpHeaders -> httpHeaders.set("foo", "baar"))
|
.headers(httpHeaders -> httpHeaders.set("foo", "baar"))
|
||||||
.cookies(cookies -> cookies.set("baz", "quux"))
|
.cookies(cookies -> cookies.set("baz", "quux"))
|
||||||
.build();
|
.build();
|
||||||
assertThat(result.url()).isEqualTo(new URI("https://example.com"));
|
|
||||||
|
assertThat(result.url()).isEqualTo(DEFAULT_URL);
|
||||||
assertThat(result.method()).isEqualTo(GET);
|
assertThat(result.method()).isEqualTo(GET);
|
||||||
assertThat(result.headers().size()).isEqualTo(1);
|
assertThat(result.headers().size()).isEqualTo(1);
|
||||||
assertThat(result.headers().getFirst("foo")).isEqualTo("baar");
|
assertThat(result.headers().getFirst("foo")).isEqualTo("baar");
|
||||||
|
@ -81,13 +85,10 @@ public class DefaultClientRequestBuilderTests {
|
||||||
BodyInserter<String, ClientHttpRequest> inserter = (response, strategies) -> {
|
BodyInserter<String, ClientHttpRequest> inserter = (response, strategies) -> {
|
||||||
byte[] bodyBytes = body.getBytes(UTF_8);
|
byte[] bodyBytes = body.getBytes(UTF_8);
|
||||||
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes);
|
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes);
|
||||||
|
|
||||||
return response.writeWith(Mono.just(buffer));
|
return response.writeWith(Mono.just(buffer));
|
||||||
};
|
};
|
||||||
|
|
||||||
ClientRequest other = ClientRequest.create(POST, URI.create("https://example.com"))
|
ClientRequest other = ClientRequest.create(POST, DEFAULT_URL).body(inserter).build();
|
||||||
.body(inserter).build();
|
|
||||||
|
|
||||||
ClientRequest result = ClientRequest.from(other).build();
|
ClientRequest result = ClientRequest.from(other).build();
|
||||||
|
|
||||||
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
||||||
|
@ -105,9 +106,8 @@ public class DefaultClientRequestBuilderTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void method() throws URISyntaxException {
|
public void method() {
|
||||||
URI url = new URI("https://example.com");
|
ClientRequest.Builder builder = ClientRequest.create(DELETE, DEFAULT_URL);
|
||||||
ClientRequest.Builder builder = ClientRequest.create(DELETE, url);
|
|
||||||
assertThat(builder.build().method()).isEqualTo(DELETE);
|
assertThat(builder.build().method()).isEqualTo(DELETE);
|
||||||
|
|
||||||
builder.method(OPTIONS);
|
builder.method(OPTIONS);
|
||||||
|
@ -127,18 +127,17 @@ public class DefaultClientRequestBuilderTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cookie() {
|
public void cookie() {
|
||||||
ClientRequest result = ClientRequest.create(GET, URI.create("https://example.com"))
|
ClientRequest result = ClientRequest.create(GET, DEFAULT_URL).cookie("foo", "bar").build();
|
||||||
.cookie("foo", "bar").build();
|
|
||||||
assertThat(result.cookies().getFirst("foo")).isEqualTo("bar");
|
assertThat(result.cookies().getFirst("foo")).isEqualTo("bar");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void build() {
|
public void build() {
|
||||||
ClientRequest result = ClientRequest.create(GET, URI.create("https://example.com"))
|
ClientRequest result = ClientRequest.create(GET, DEFAULT_URL)
|
||||||
.header("MyKey", "MyValue")
|
.header("MyKey", "MyValue")
|
||||||
.cookie("foo", "bar")
|
.cookie("foo", "bar")
|
||||||
.httpRequest(request -> {
|
.httpRequest(request -> {
|
||||||
MockClientHttpRequest nativeRequest = (MockClientHttpRequest) request.getNativeRequest();
|
MockClientHttpRequest nativeRequest = request.getNativeRequest();
|
||||||
nativeRequest.getHeaders().add("MyKey2", "MyValue2");
|
nativeRequest.getHeaders().add("MyKey2", "MyValue2");
|
||||||
})
|
})
|
||||||
.build();
|
.build();
|
||||||
|
@ -158,16 +157,14 @@ public class DefaultClientRequestBuilderTests {
|
||||||
@Test
|
@Test
|
||||||
public void bodyInserter() {
|
public void bodyInserter() {
|
||||||
String body = "foo";
|
String body = "foo";
|
||||||
BodyInserter<String, ClientHttpRequest> inserter =
|
BodyInserter<String, ClientHttpRequest> inserter = (response, strategies) -> {
|
||||||
(response, strategies) -> {
|
|
||||||
byte[] bodyBytes = body.getBytes(UTF_8);
|
byte[] bodyBytes = body.getBytes(UTF_8);
|
||||||
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes);
|
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes);
|
||||||
|
|
||||||
return response.writeWith(Mono.just(buffer));
|
return response.writeWith(Mono.just(buffer));
|
||||||
};
|
};
|
||||||
|
|
||||||
ClientRequest result = ClientRequest.create(POST, URI.create("https://example.com"))
|
ClientRequest result = ClientRequest.create(POST, DEFAULT_URL).body(inserter).build();
|
||||||
.body(inserter).build();
|
|
||||||
|
|
||||||
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
||||||
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
|
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
|
||||||
|
@ -179,17 +176,14 @@ public class DefaultClientRequestBuilderTests {
|
||||||
result.writeTo(request, strategies).block();
|
result.writeTo(request, strategies).block();
|
||||||
assertThat(request.getBody()).isNotNull();
|
assertThat(request.getBody()).isNotNull();
|
||||||
|
|
||||||
StepVerifier.create(request.getBody())
|
StepVerifier.create(request.getBody()).expectNextCount(1).verifyComplete();
|
||||||
.expectNextCount(1)
|
|
||||||
.verifyComplete();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void bodyClass() {
|
public void bodyClass() {
|
||||||
String body = "foo";
|
String body = "foo";
|
||||||
Publisher<String> publisher = Mono.just(body);
|
Publisher<String> publisher = Mono.just(body);
|
||||||
ClientRequest result = ClientRequest.create(POST, URI.create("https://example.com"))
|
ClientRequest result = ClientRequest.create(POST, DEFAULT_URL).body(publisher, String.class).build();
|
||||||
.body(publisher, String.class).build();
|
|
||||||
|
|
||||||
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
||||||
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
|
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
|
||||||
|
@ -201,9 +195,7 @@ public class DefaultClientRequestBuilderTests {
|
||||||
result.writeTo(request, strategies).block();
|
result.writeTo(request, strategies).block();
|
||||||
assertThat(request.getBody()).isNotNull();
|
assertThat(request.getBody()).isNotNull();
|
||||||
|
|
||||||
StepVerifier.create(request.getBody())
|
StepVerifier.create(request.getBody()).expectNextCount(1).verifyComplete();
|
||||||
.expectNextCount(1)
|
|
||||||
.verifyComplete();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -211,8 +203,7 @@ public class DefaultClientRequestBuilderTests {
|
||||||
String body = "foo";
|
String body = "foo";
|
||||||
Publisher<String> publisher = Mono.just(body);
|
Publisher<String> publisher = Mono.just(body);
|
||||||
ParameterizedTypeReference<String> typeReference = new ParameterizedTypeReference<String>() {};
|
ParameterizedTypeReference<String> typeReference = new ParameterizedTypeReference<String>() {};
|
||||||
ClientRequest result = ClientRequest.create(POST, URI.create("https://example.com"))
|
ClientRequest result = ClientRequest.create(POST, DEFAULT_URL).body(publisher, typeReference).build();
|
||||||
.body(publisher, typeReference).build();
|
|
||||||
|
|
||||||
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
|
||||||
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
|
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
|
||||||
|
@ -224,9 +215,7 @@ public class DefaultClientRequestBuilderTests {
|
||||||
result.writeTo(request, strategies).block();
|
result.writeTo(request, strategies).block();
|
||||||
assertThat(request.getBody()).isNotNull();
|
assertThat(request.getBody()).isNotNull();
|
||||||
|
|
||||||
StepVerifier.create(request.getBody())
|
StepVerifier.create(request.getBody()).expectNextCount(1).verifyComplete();
|
||||||
.expectNextCount(1)
|
|
||||||
.verifyComplete();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue