@ -1,5 +1,5 @@
/ *
* Copyright 2012 - 201 8 the original author or authors .
* Copyright 2012 - 201 9 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 .
@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List ;
import java.util.Map ;
import java.util.Set ;
import java.util.function.Supplier ;
import org.apache.http.client.HttpClient ;
import org.apache.http.client.config.CookieSpecs ;
@ -38,6 +39,9 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HttpContext ;
import org.apache.http.ssl.SSLContextBuilder ;
import org.springframework.beans.BeanInstantiationException ;
import org.springframework.beans.BeanUtils ;
import org.springframework.boot.web.client.ClientHttpRequestFactorySupplier ;
import org.springframework.boot.web.client.RestTemplateBuilder ;
import org.springframework.boot.web.client.RootUriTemplateHandler ;
import org.springframework.core.ParameterizedTypeReference ;
@ -1023,7 +1027,10 @@ public class TestRestTemplate {
/ * *
* Creates a new { @code TestRestTemplate } with the same configuration as this one ,
* except that it will send basic authorization headers using the given
* { @code username } and { @code password } .
* { @code username } and { @code password } . Note , that a new instance of
* { @link ClientHttpRequestFactory } will be created ( if possible ) based on the current
* factory class , otherwise { @link ClientHttpRequestFactorySupplier } will be used to
* instantiate a { @link ClientHttpRequestFactory } .
* @param username the username
* @param password the password
* @return the new template
@ -1031,6 +1038,7 @@ public class TestRestTemplate {
* /
public TestRestTemplate withBasicAuth ( String username , String password ) {
RestTemplate restTemplate = new RestTemplateBuilder ( )
. requestFactory ( getRequestFactorySupplier ( ) )
. messageConverters ( getRestTemplate ( ) . getMessageConverters ( ) )
. interceptors ( getRestTemplate ( ) . getInterceptors ( ) )
. uriTemplateHandler ( getRestTemplate ( ) . getUriTemplateHandler ( ) ) . build ( ) ;
@ -1041,6 +1049,18 @@ public class TestRestTemplate {
return testRestTemplate ;
}
private Supplier < ClientHttpRequestFactory > getRequestFactorySupplier ( ) {
return ( ) - > {
try {
return BeanUtils
. instantiateClass ( getRequestFactoryClass ( getRestTemplate ( ) ) ) ;
}
catch ( BeanInstantiationException ex ) {
return new ClientHttpRequestFactorySupplier ( ) . get ( ) ;
}
} ;
}
@SuppressWarnings ( { "rawtypes" , "unchecked" } )
private RequestEntity < ? > createRequestEntityWithRootAppliedUri (
RequestEntity < ? > requestEntity ) {