WebClient exposes API for access to native request

Closes gh-25115, gh-25493
This commit is contained in:
Rossen Stoyanchev
2020-08-22 16:13:06 +01:00
parent 0f7ad1b5bf
commit 7adeb461e0
13 changed files with 148 additions and 12 deletions

View File

@@ -46,6 +46,7 @@ import static org.springframework.http.HttpMethod.OPTIONS;
import static org.springframework.http.HttpMethod.POST;
/**
* Unit tests for {@link DefaultClientRequestBuilder}.
* @author Arjen Poutsma
*/
public class DefaultClientRequestBuilderTests {
@@ -54,17 +55,20 @@ public class DefaultClientRequestBuilderTests {
public void from() throws URISyntaxException {
ClientRequest other = ClientRequest.create(GET, URI.create("https://example.com"))
.header("foo", "bar")
.cookie("baz", "qux").build();
.cookie("baz", "qux")
.httpRequest(request -> {})
.build();
ClientRequest result = ClientRequest.from(other)
.headers(httpHeaders -> httpHeaders.set("foo", "baar"))
.cookies(cookies -> cookies.set("baz", "quux"))
.build();
.build();
assertThat(result.url()).isEqualTo(new URI("https://example.com"));
assertThat(result.method()).isEqualTo(GET);
assertThat(result.headers().size()).isEqualTo(1);
assertThat(result.headers().getFirst("foo")).isEqualTo("baar");
assertThat(result.cookies().size()).isEqualTo(1);
assertThat(result.cookies().getFirst("baz")).isEqualTo("quux");
assertThat(result.httpRequest()).isNotNull();
}
@Test
@@ -100,6 +104,10 @@ public class DefaultClientRequestBuilderTests {
ClientRequest result = ClientRequest.create(GET, URI.create("https://example.com"))
.header("MyKey", "MyValue")
.cookie("foo", "bar")
.httpRequest(request -> {
MockClientHttpRequest nativeRequest = (MockClientHttpRequest) request.getNativeRequest();
nativeRequest.getHeaders().add("MyKey2", "MyValue2");
})
.build();
MockClientHttpRequest request = new MockClientHttpRequest(GET, "/");
@@ -108,7 +116,9 @@ public class DefaultClientRequestBuilderTests {
result.writeTo(request, strategies).block();
assertThat(request.getHeaders().getFirst("MyKey")).isEqualTo("MyValue");
assertThat(request.getHeaders().getFirst("MyKey2")).isEqualTo("MyValue2");
assertThat(request.getCookies().getFirst("foo").getValue()).isEqualTo("bar");
StepVerifier.create(request.getBody()).expectComplete().verify();
}

View File

@@ -127,6 +127,16 @@ public class DefaultWebClientTests {
assertThat(request.cookies().getFirst("id")).isEqualTo("123");
}
@Test
public void httpRequest() {
this.builder.build().get().uri("/path")
.httpRequest(httpRequest -> {})
.exchange().block(Duration.ofSeconds(10));
ClientRequest request = verifyAndGetRequest();
assertThat(request.httpRequest()).isNotNull();
}
@Test
public void defaultHeaderAndCookie() {
WebClient client = this.builder