diff --git a/spring-cloud-netflix-dependencies/pom.xml b/spring-cloud-netflix-dependencies/pom.xml index 0ed4dd48b..dd0f85f03 100644 --- a/spring-cloud-netflix-dependencies/pom.xml +++ b/spring-cloud-netflix-dependencies/pom.xml @@ -14,7 +14,7 @@ spring-cloud-netflix-dependencies Spring Cloud Netflix Dependencies - 2.0.0 + 2.0.1 diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java index efc4df4e5..26f2a8875 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClient.java @@ -66,6 +66,10 @@ public class RestTemplateEurekaHttpClient implements EurekaHttpClient { return this.serviceUrl; } + public RestTemplate getRestTemplate() { + return restTemplate; + } + @Override public EurekaHttpResponse register(InstanceInfo info) { String urlPath = serviceUrl + "apps/" + info.getAppName(); diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java index f068bc0c7..1f31e884c 100644 --- a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java @@ -28,7 +28,6 @@ import com.netflix.discovery.EurekaClient; import com.netflix.discovery.EurekaClientConfig; import com.netflix.discovery.shared.transport.jersey.TransportClientFactories; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -39,7 +38,6 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.SearchStrategy; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.context.event.ApplicationPreparedEvent; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.source.ConfigurationPropertySources; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -49,6 +47,7 @@ import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIndicator; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.cloud.commons.util.UtilAutoConfiguration; +import org.springframework.cloud.context.config.ContextRefreshedWithApplicationEvent; import org.springframework.cloud.context.refresh.ContextRefresher; import org.springframework.cloud.context.scope.GenericScope; import org.springframework.cloud.netflix.eureka.config.DiscoveryClientOptionalArgsConfiguration; @@ -471,9 +470,9 @@ class EurekaClientAutoConfigurationTests { ContextRefresher refresher = this.context.getBean(ContextRefresher.class); if (refresher instanceof ApplicationListener) { - ApplicationListener listener = (ApplicationListener) refresher; - listener.onApplicationEvent( - new ApplicationPreparedEvent(Mockito.mock(SpringApplication.class), new String[0], this.context)); + ApplicationListener listener = (ApplicationListener) refresher; + listener.onApplicationEvent(new ContextRefreshedWithApplicationEvent(Mockito.mock(SpringApplication.class), + new String[0], this.context)); } refresher.refresh(); @@ -501,16 +500,6 @@ class EurekaClientAutoConfigurationTests { assertThat(isShutdown.get()).isTrue(); } - @Test - @Disabled - void basicAuth() { - TestPropertyValues - .of("server.port=8989", "eureka.client.serviceUrl.defaultZone=https://user:foo@example.com:80/eureka") - .applyTo(this.context); - // FIXME: ApacheHttpClient4 http = this.context.getBean(ApacheHttpClient4.class); - // Mockito.verify(http).addFilter(Matchers.any(HTTPBasicAuthFilter.class)); - } - @Test void testDefaultAppName() { setupContext(); diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTests.java index b9a7b5f5b..355803062 100644 --- a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTests.java +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/http/RestTemplateEurekaHttpClientTests.java @@ -16,9 +16,13 @@ package org.springframework.cloud.netflix.eureka.http; +import java.util.List; + import com.netflix.appinfo.providers.EurekaConfigBasedInstanceInfoProvider; import com.netflix.discovery.shared.resolver.DefaultEndpoint; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -26,7 +30,12 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.cloud.commons.util.InetUtils; import org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean; +import org.springframework.http.client.ClientHttpRequestInterceptor; +import org.springframework.http.client.support.BasicAuthenticationInterceptor; import org.springframework.test.annotation.DirtiesContext; +import org.springframework.web.client.RestTemplate; + +import static org.assertj.core.api.Assertions.assertThat; /** * @author Daniel Lavoie @@ -63,4 +72,14 @@ class RestTemplateEurekaHttpClientTests extends AbstractEurekaHttpClientTests { info = new EurekaConfigBasedInstanceInfoProvider(config).get(); } + @Test + void basicAuth() { + assertThat(eurekaHttpClient).isInstanceOf(RestTemplateEurekaHttpClient.class); + RestTemplateEurekaHttpClient restTemplateEurekaHttpClient = (RestTemplateEurekaHttpClient) eurekaHttpClient; + RestTemplate restTemplate = restTemplateEurekaHttpClient.getRestTemplate(); + List interceptors = restTemplate.getInterceptors(); + boolean hasBasicAuth = interceptors.stream().anyMatch(interceptor -> interceptor instanceof BasicAuthenticationInterceptor); + assertThat(hasBasicAuth).as("Basic Auth not configured").isTrue(); + } + }