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 7f778441639..4bbfa434f03 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +48,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.http.client.InterceptingClientHttpRequestFactory; import org.springframework.http.client.support.BasicAuthorizationInterceptor; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -144,11 +143,19 @@ public class TestRestTemplate { if (username == null) { return; } - List interceptors = Collections - .singletonList( - new BasicAuthorizationInterceptor(username, password)); - restTemplate.setRequestFactory(new InterceptingClientHttpRequestFactory( - restTemplate.getRequestFactory(), interceptors)); + List interceptors = restTemplate.getInterceptors(); + if (interceptors == null) { + interceptors = Collections.emptyList(); + } + interceptors = new ArrayList(interceptors); + Iterator iterator = interceptors.iterator(); + while (iterator.hasNext()) { + if (iterator.next() instanceof BasicAuthorizationInterceptor) { + iterator.remove(); + } + } + interceptors.add(new BasicAuthorizationInterceptor(username, password)); + restTemplate.setInterceptors(interceptors); } /** @@ -985,8 +992,7 @@ public class TestRestTemplate { public TestRestTemplate withBasicAuth(String username, String password) { RestTemplate restTemplate = new RestTemplate(); restTemplate.setMessageConverters(getRestTemplate().getMessageConverters()); - restTemplate.setInterceptors( - removeBasicAuthInterceptorIfPresent(getRestTemplate().getInterceptors())); + restTemplate.setInterceptors(getRestTemplate().getInterceptors()); restTemplate.setRequestFactory(getRestTemplate().getRequestFactory()); restTemplate.setUriTemplateHandler(getRestTemplate().getUriTemplateHandler()); TestRestTemplate testRestTemplate = new TestRestTemplate(restTemplate, username, @@ -996,19 +1002,6 @@ public class TestRestTemplate { return testRestTemplate; } - private List removeBasicAuthInterceptorIfPresent( - List interceptors) { - List updatedInterceptors = new ArrayList( - interceptors); - Iterator iterator = updatedInterceptors.iterator(); - while (iterator.hasNext()) { - if (iterator.next() instanceof BasicAuthorizationInterceptor) { - iterator.remove(); - } - } - return interceptors; - } - /** * Options used to customize the Apache Http Client if it 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 924e230c278..5b1549df134 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -160,16 +160,15 @@ public class TestRestTemplateTests { .isInstanceOf(CustomHttpComponentsClientHttpRequestFactory.class); assertThat(basicAuthTemplate.getRestTemplate().getUriTemplateHandler()) .isSameAs(originalTemplate.getRestTemplate().getUriTemplateHandler()); - assertThat(basicAuthTemplate.getRestTemplate().getInterceptors()) - .containsExactlyElementsOf( - originalTemplate.getRestTemplate().getInterceptors()); + assertThat(basicAuthTemplate.getRestTemplate().getInterceptors()).hasSize(1); assertBasicAuthorizationInterceptorCredentials(basicAuthTemplate, "user", "password"); } @Test public void withBasicAuthReplacesBasicAuthInterceptorWhenAlreadyPresent() { - TestRestTemplate original = new TestRestTemplate("foo", "bar"); + TestRestTemplate original = new TestRestTemplate("foo", "bar") + .withBasicAuth("replace", "repalce"); TestRestTemplate basicAuth = original.withBasicAuth("user", "password"); assertThat(basicAuth.getRestTemplate().getMessageConverters()) .containsExactlyElementsOf( @@ -181,8 +180,7 @@ public class TestRestTemplateTests { .isInstanceOf(CustomHttpComponentsClientHttpRequestFactory.class); assertThat(basicAuth.getRestTemplate().getUriTemplateHandler()) .isSameAs(original.getRestTemplate().getUriTemplateHandler()); - assertThat(basicAuth.getRestTemplate().getInterceptors()) - .containsExactlyElementsOf(original.getRestTemplate().getInterceptors()); + assertThat(basicAuth.getRestTemplate().getInterceptors()).hasSize(1); assertBasicAuthorizationInterceptorCredentials(basicAuth, "user", "password"); }