diff --git a/spring-boot-test/src/main/java/org/springframework/boot/test/TestRestTemplate.java b/spring-boot-test/src/main/java/org/springframework/boot/test/TestRestTemplate.java index 398a0735eb6..9863d1c24ff 100644 --- a/spring-boot-test/src/main/java/org/springframework/boot/test/TestRestTemplate.java +++ b/spring-boot-test/src/main/java/org/springframework/boot/test/TestRestTemplate.java @@ -19,37 +19,70 @@ package org.springframework.boot.test; import org.springframework.web.client.RestTemplate; /** - * Convenient subclass of {@link RestTemplate} that is suitable for integration tests. - * They are fault tolerant, and optionally can carry Basic authentication headers. If - * Apache Http Client 4.3.2 or better is available (recommended) it will be used as the - * client, and by default configured to ignore cookies and redirects. + * Convenient subclass of {@link RestTemplate} that is suitable for integration + * tests. They are fault tolerant, and optionally can carry Basic authentication + * headers. If Apache Http Client 4.3.2 or better is available (recommended) it + * will be used as the client, and by default configured to ignore cookies and + * redirects. * * @author Dave Syer * @author Phillip Webb * @deprecated as of 1.4 in favor of - * {@link org.springframework.boot.test.web.client.TestRestTemplate} + * {@link org.springframework.boot.test.web.client.TestRestTemplate} */ @Deprecated -public class TestRestTemplate - extends org.springframework.boot.test.web.client.TestRestTemplate { +public class TestRestTemplate extends org.springframework.boot.test.web.client.TestRestTemplate { /** * Create a new {@link TestRestTemplate} instance. - * @param httpClientOptions client options to use if the Apache HTTP Client is used + * + * @param httpClientOptions + * client options to use if the Apache HTTP Client is used */ public TestRestTemplate(HttpClientOption... httpClientOptions) { - super(httpClientOptions); + super(options(httpClientOptions)); } /** - * Create a new {@link TestRestTemplate} instance with the specified credentials. - * @param username the username to use (or {@code null}) - * @param password the password (or {@code null}) - * @param httpClientOptions client options to use if the Apache HTTP Client is used + * Create a new {@link TestRestTemplate} instance with the specified + * credentials. + * + * @param username + * the username to use (or {@code null}) + * @param password + * the password (or {@code null}) + * @param httpClientOptions + * client options to use if the Apache HTTP Client is used */ - public TestRestTemplate(String username, String password, - HttpClientOption... httpClientOptions) { - super(username, password, httpClientOptions); + public TestRestTemplate(String username, String password, HttpClientOption... httpClientOptions) { + super(username, password, options(httpClientOptions)); + } + + private static org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption[] options( + HttpClientOption[] httpClientOptions) { + org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption[] result = new org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption[httpClientOptions.length]; + for (int i = 0; i < httpClientOptions.length; i++) { + HttpClientOption httpClientOption = httpClientOptions[i]; + result[i] = org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption.valueOf(httpClientOption.name()); + } + return result; + } + + /** + * Options used to customize the Apache Http Client if it is used. + */ + public enum HttpClientOption { + + /** + * Enable cookies. + */ + ENABLE_COOKIES, + + /** + * Enable redirects. + */ + ENABLE_REDIRECTS + } } diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/TestRestTemplateTests.java b/spring-boot-test/src/test/java/org/springframework/boot/test/TestRestTemplateTests.java new file mode 100644 index 00000000000..1d20ac5dbaf --- /dev/null +++ b/spring-boot-test/src/test/java/org/springframework/boot/test/TestRestTemplateTests.java @@ -0,0 +1,15 @@ +package org.springframework.boot.test; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; + +public class TestRestTemplateTests { + + @Test + public void canCreateTemplateFromOwnOptions() { + TestRestTemplate template = new TestRestTemplate(TestRestTemplate.HttpClientOption.ENABLE_REDIRECTS); + assertThat(template).isNotNull(); + } + +}