|
1 | 1 | /*
|
2 |
| - * Copyright 2012-2024 the original author or authors. |
| 2 | + * Copyright 2012-2025 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
24 | 24 | import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
|
25 | 25 | import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
26 | 26 | import org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration;
|
| 27 | +import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; |
| 28 | +import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; |
| 29 | +import org.springframework.boot.http.client.ClientHttpRequestFactorySettings.Redirects; |
27 | 30 | import org.springframework.boot.ssl.SslBundles;
|
28 | 31 | import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
29 | 32 | import org.springframework.boot.web.client.RestClientCustomizer;
|
@@ -171,6 +174,57 @@ void whenHasFactoryProperty() {
|
171 | 174 | });
|
172 | 175 | }
|
173 | 176 |
|
| 177 | + @Test |
| 178 | + void shouldSupplyRestClientBuilderConfigurerWithCustomSettings() { |
| 179 | + ClientHttpRequestFactorySettings clientHttpRequestFactorySettings = ClientHttpRequestFactorySettings.defaults() |
| 180 | + .withRedirects(Redirects.DONT_FOLLOW); |
| 181 | + ClientHttpRequestFactoryBuilder<?> clientHttpRequestFactoryBuilder = mock( |
| 182 | + ClientHttpRequestFactoryBuilder.class); |
| 183 | + RestClientCustomizer customizer1 = mock(RestClientCustomizer.class); |
| 184 | + RestClientCustomizer customizer2 = mock(RestClientCustomizer.class); |
| 185 | + HttpMessageConvertersRestClientCustomizer httpMessageConverterCustomizer = mock( |
| 186 | + HttpMessageConvertersRestClientCustomizer.class); |
| 187 | + this.contextRunner.withBean(ClientHttpRequestFactorySettings.class, () -> clientHttpRequestFactorySettings) |
| 188 | + .withBean(ClientHttpRequestFactoryBuilder.class, () -> clientHttpRequestFactoryBuilder) |
| 189 | + .withBean("customizer1", RestClientCustomizer.class, () -> customizer1) |
| 190 | + .withBean("customizer2", RestClientCustomizer.class, () -> customizer2) |
| 191 | + .withBean("httpMessageConverterCustomizer", HttpMessageConvertersRestClientCustomizer.class, |
| 192 | + () -> httpMessageConverterCustomizer) |
| 193 | + .run((context) -> { |
| 194 | + assertThat(context).hasSingleBean(RestClientBuilderConfigurer.class) |
| 195 | + .hasSingleBean(ClientHttpRequestFactorySettings.class) |
| 196 | + .hasSingleBean(ClientHttpRequestFactoryBuilder.class); |
| 197 | + RestClientBuilderConfigurer configurer = context.getBean(RestClientBuilderConfigurer.class); |
| 198 | + assertThat(configurer).hasFieldOrPropertyWithValue("requestFactoryBuilder", |
| 199 | + clientHttpRequestFactoryBuilder); |
| 200 | + assertThat(configurer).hasFieldOrPropertyWithValue("requestFactorySettings", |
| 201 | + clientHttpRequestFactorySettings); |
| 202 | + assertThat(configurer).hasFieldOrPropertyWithValue("customizers", |
| 203 | + List.of(customizer1, customizer2, httpMessageConverterCustomizer)); |
| 204 | + }); |
| 205 | + } |
| 206 | + |
| 207 | + @Test |
| 208 | + void shouldSupplyRestClientBuilderConfigurerWithAutoConfiguredHttpSettings() { |
| 209 | + RestClientCustomizer customizer1 = mock(RestClientCustomizer.class); |
| 210 | + RestClientCustomizer customizer2 = mock(RestClientCustomizer.class); |
| 211 | + this.contextRunner.withBean("customizer1", RestClientCustomizer.class, () -> customizer1) |
| 212 | + .withBean("customizer2", RestClientCustomizer.class, () -> customizer2) |
| 213 | + .run((context) -> { |
| 214 | + assertThat(context).hasSingleBean(RestClientBuilderConfigurer.class) |
| 215 | + .hasSingleBean(ClientHttpRequestFactorySettings.class) |
| 216 | + .hasSingleBean(ClientHttpRequestFactoryBuilder.class) |
| 217 | + .hasSingleBean(HttpMessageConvertersRestClientCustomizer.class); |
| 218 | + RestClientBuilderConfigurer configurer = context.getBean(RestClientBuilderConfigurer.class); |
| 219 | + assertThat(configurer).hasFieldOrPropertyWithValue("requestFactoryBuilder", |
| 220 | + context.getBean(ClientHttpRequestFactoryBuilder.class)); |
| 221 | + assertThat(configurer).hasFieldOrPropertyWithValue("requestFactorySettings", |
| 222 | + context.getBean(ClientHttpRequestFactorySettings.class)); |
| 223 | + assertThat(configurer).hasFieldOrPropertyWithValue("customizers", List.of(customizer1, customizer2, |
| 224 | + context.getBean(HttpMessageConvertersRestClientCustomizer.class))); |
| 225 | + }); |
| 226 | + } |
| 227 | + |
174 | 228 | @Configuration(proxyBeanMethods = false)
|
175 | 229 | static class CodecConfiguration {
|
176 | 230 |
|
|
0 commit comments