From 53d7fd5aabf04900cf6283f354ac97f0caf749f8 Mon Sep 17 00:00:00 2001 From: Maciej Walkowiak Date: Sat, 20 Aug 2016 22:46:34 +0200 Subject: [PATCH] Add constructor to TestRestTemplate that takes a RestTemplateBuilder Closes gh-6706 See gh-6702 --- .../boot/test/web/client/TestRestTemplate.java | 13 +++++++++++++ .../boot/test/web/client/TestRestTemplateTests.java | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java b/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java index 2ff38c93ca..44c14ea422 100644 --- a/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java +++ b/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java @@ -82,6 +82,19 @@ public class TestRestTemplate { private final RestTemplate restTemplate; + /** + * Create a new {@link TestRestTemplate} instance. + * @param restTemplateBuilder builder used to configure underlying {@link RestTemplate} + */ + public TestRestTemplate(RestTemplateBuilder restTemplateBuilder) { + this(buildRestTemplate(restTemplateBuilder)); + } + + private static RestTemplate buildRestTemplate(RestTemplateBuilder restTemplateBuilder) { + Assert.notNull(restTemplateBuilder, "RestTemplateBuilder must not be null"); + return restTemplateBuilder.build(); + } + /** * Create a new {@link TestRestTemplate} instance. * @param httpClientOptions client options to use if the Apache HTTP Client is used diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java b/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java index 80b0fa2e09..00a80c2493 100644 --- a/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java +++ b/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java @@ -24,6 +24,7 @@ import org.junit.Test; import org.springframework.boot.test.web.client.TestRestTemplate.CustomHttpComponentsClientHttpRequestFactory; import org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption; +import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.http.HttpMethod; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.InterceptingClientHttpRequestFactory; @@ -33,6 +34,7 @@ import org.springframework.web.client.RestOperations; import org.springframework.web.client.RestTemplate; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; /** @@ -43,6 +45,15 @@ import static org.mockito.Mockito.mock; */ public class TestRestTemplateTests { + @Test + public void fromRestTemplateBuilder() { + RestTemplateBuilder builder = mock(RestTemplateBuilder.class); + RestTemplate delegate = new RestTemplate(); + given(builder.build()).willReturn(delegate); + assertThat(new TestRestTemplate(builder).getRestTemplate()) + .isEqualTo(delegate); + } + @Test public void simple() { // The Apache client is on the classpath so we get the fully-fledged factory