Skip to content

Commit

Permalink
Allow overriding registration client in blocking or reactive env (#2004)
Browse files Browse the repository at this point in the history
  • Loading branch information
Fuud committed Mar 18, 2022
1 parent 6920683 commit 81eb97b
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
Expand Up @@ -137,7 +137,7 @@ public static class BlockingRegistrationClientConfig {

@Bean
@ConditionalOnMissingBean
public BlockingRegistrationClient registrationClient(ClientProperties client) {
public RegistrationClient registrationClient(ClientProperties client) {
RestTemplateBuilder builder = new RestTemplateBuilder().setConnectTimeout(client.getConnectTimeout())
.setReadTimeout(client.getReadTimeout());
if (client.getUsername() != null && client.getPassword() != null) {
Expand All @@ -155,7 +155,7 @@ public static class ReactiveRegistrationClientConfig {

@Bean
@ConditionalOnMissingBean
public ReactiveRegistrationClient registrationClient(ClientProperties client, WebClient.Builder webClient) {
public RegistrationClient registrationClient(ClientProperties client, WebClient.Builder webClient) {
if (client.getUsername() != null && client.getPassword() != null) {
webClient = webClient.filter(basicAuthentication(client.getUsername(), client.getPassword()));
}
Expand Down
Expand Up @@ -23,11 +23,17 @@
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
import org.springframework.boot.context.annotation.UserConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import de.codecentric.boot.admin.client.registration.ApplicationRegistrator;
import de.codecentric.boot.admin.client.registration.BlockingRegistrationClient;
import de.codecentric.boot.admin.client.registration.RegistrationClient;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -76,4 +82,44 @@ public void reactiveEnvironment() {
.run((context) -> assertThat(context).hasSingleBean(ApplicationRegistrator.class));
}

@Test
public void customBlockingClientInReactiveEnvironment() {
ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner()
.withConfiguration(UserConfigurations.of(CustomBlockingConfiguration.class)).withConfiguration(
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class));
reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081")
.run((context) -> {
assertThat(context).hasSingleBean(ApplicationRegistrator.class);
assertThat(context).getBean("registrationClient")
.isEqualTo(context.getBean(CustomBlockingConfiguration.class).registrationClient);
});
}

@Test
public void customBlockingClientInBlockingEnvironment() {
ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner()
.withConfiguration(UserConfigurations.of(CustomBlockingConfiguration.class)).withConfiguration(
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
RestTemplateAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class));
reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081")
.run((context) -> {
assertThat(context).hasSingleBean(ApplicationRegistrator.class);
assertThat(context).getBean("registrationClient")
.isEqualTo(context.getBean(CustomBlockingConfiguration.class).registrationClient);
});
}

@Configuration
public static class CustomBlockingConfiguration {

RegistrationClient registrationClient = new BlockingRegistrationClient(new RestTemplate());

@Bean
public RegistrationClient registrationClient() {
return registrationClient;
}

}

}

0 comments on commit 81eb97b

Please sign in to comment.