Add shortcut to mutate + apply to WebTestClient

Issue: SPR-15770
This commit is contained in:
Rossen Stoyanchev
2017-07-14 16:24:15 +02:00
parent bcf9f21ecc
commit f5c54f90b3
3 changed files with 21 additions and 8 deletions

View File

@@ -141,6 +141,11 @@ class DefaultWebTestClient implements WebTestClient {
return this.builder;
}
@Override
public WebTestClient mutateWith(WebTestClientConfigurer configurer) {
return mutate().apply(configurer).build();
}
private class DefaultRequestBodyUriSpec implements RequestBodyUriSpec {

View File

@@ -135,12 +135,23 @@ public interface WebTestClient {
RequestBodyUriSpec method(HttpMethod method);
/**
* Return a builder to mutate properties of this web test client.
*/
Builder mutate();
/**
* Mutate the {@link WebTestClient}, apply the given configurer, and build
* a new instance. Essentially a shortcut for:
* <pre>
* mutate().apply(configurer).build();
* </pre>
* @param configurer the configurer to apply
* @return the mutated test client
*/
WebTestClient mutateWith(WebTestClientConfigurer configurer);
// Static, factory methods
/**

View File

@@ -47,7 +47,7 @@ public class ExchangeMutatorTests {
public void setUp() throws Exception {
this.webTestClient = WebTestClient.bindToController(new TestController())
.apply(globalIdentity("Pablo"))
.apply(identity("Pablo"))
.build();
}
@@ -62,7 +62,8 @@ public class ExchangeMutatorTests {
@Test
public void useLocallyConfiguredIdentity() throws Exception {
withIdentity(this.webTestClient, "Giovanni")
this.webTestClient
.mutateWith(identity("Giovanni"))
.get().uri("/userIdentity")
.exchange()
.expectStatus().isOk()
@@ -70,14 +71,10 @@ public class ExchangeMutatorTests {
}
private static MockServerConfigurer globalIdentity(String userName) {
private static IdentityConfigurer identity(String userName) {
return new IdentityConfigurer(userName);
}
private static WebTestClient withIdentity(WebTestClient client, String userName) {
return client.mutate().apply(new IdentityConfigurer(userName)).build();
}
@RestController
static class TestController {