diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java index 71b0476e753..4e47fffa328 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java +++ b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java @@ -78,6 +78,7 @@ import org.springframework.web.util.UriTemplateHandler; * @author Dave Syer * @author Phillip Webb * @author Andy Wilkinson + * @author Kristine Jetzke * @since 1.4.0 */ public class TestRestTemplate { @@ -165,6 +166,19 @@ public class TestRestTemplate { this.restTemplate.setUriTemplateHandler(handler); } + /** + * Returns the root URI applied by a {@link RootUriTemplateHandler} or {@code ""} if + * the root URI is not available. + * @return the root URI + */ + public String getRootUri() { + UriTemplateHandler uriTemplateHandler = this.restTemplate.getUriTemplateHandler(); + if (uriTemplateHandler instanceof RootUriTemplateHandler) { + return ((RootUriTemplateHandler) uriTemplateHandler).getRootUri(); + } + return ""; + } + /** * Retrieve a representation by doing a GET on the specified URL. The response (if * any) is converted and returned. diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java index 76f0306a82f..3740c0e4e2a 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java +++ b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java @@ -63,6 +63,7 @@ import static org.mockito.Mockito.verify; * @author Phillip Webb * @author Stephane Nicoll * @author Andy Wilkinson + * @author Kristine Jetzke */ public class TestRestTemplateTests { @@ -81,6 +82,29 @@ public class TestRestTemplateTests { .isInstanceOf(HttpComponentsClientHttpRequestFactory.class); } + @Test + public void getRootUriRootUriSetViaRestTemplateBuilder() { + String rootUri = "http://example.com"; + RestTemplate delegate = new RestTemplateBuilder().rootUri(rootUri).build(); + assertThat(new TestRestTemplate(delegate).getRootUri()).isEqualTo(rootUri); + } + + @Test + public void getRootUriRootUriSetViaLocalHostUriTemplateHandler() { + String rootUri = "http://example.com"; + TestRestTemplate template = new TestRestTemplate(); + LocalHostUriTemplateHandler templateHandler = mock( + LocalHostUriTemplateHandler.class); + given(templateHandler.getRootUri()).willReturn(rootUri); + template.setUriTemplateHandler(templateHandler); + assertThat(template.getRootUri()).isEqualTo(rootUri); + } + + @Test + public void getRootUriRootUriNotSet() { + assertThat(new TestRestTemplate().getRootUri()).isEqualTo(""); + } + @Test public void authenticated() { assertThat(new TestRestTemplate("user", "password").getRestTemplate()