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 71b0476e7531..8b0ac4d801e0 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 @@ * @author Dave Syer * @author Phillip Webb * @author Andy Wilkinson + * @author Kristine Jetzke * @since 1.4.0 */ public class TestRestTemplate { @@ -165,6 +166,15 @@ public void setUriTemplateHandler(UriTemplateHandler handler) { this.restTemplate.setUriTemplateHandler(handler); } + public String getRootUri() { + UriTemplateHandler uriTemplateHandler = this.restTemplate.getUriTemplateHandler(); + if (RootUriTemplateHandler.class + .isAssignableFrom(uriTemplateHandler.getClass())) { + 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 76f0306a82fe..ec053b00547a 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 @@ * @author Phillip Webb * @author Stephane Nicoll * @author Andy Wilkinson + * @author Kristine Jetzke */ public class TestRestTemplateTests { @@ -81,6 +82,31 @@ public void simple() { .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()