|
27 | 27 | import org.springframework.beans.DirectFieldAccessor;
|
28 | 28 | import org.springframework.boot.autoconfigure.AutoConfigurations;
|
29 | 29 | import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
| 30 | +import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; |
30 | 31 | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
31 | 32 | import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
32 | 33 | import org.springframework.context.annotation.Bean;
|
@@ -254,6 +255,35 @@ void testRoutingDataSourceIsNotDecorated() {
|
254 | 255 | });
|
255 | 256 | }
|
256 | 257 |
|
| 258 | + @Test |
| 259 | + void testUnwrapsRealDataSourceForFlyway() { |
| 260 | + ApplicationContextRunner contextRunner = this.contextRunner |
| 261 | + .withConfiguration(AutoConfigurations.of(FlywayAutoConfiguration.class)) |
| 262 | + .withPropertyValues("spring.flyway.user=sa"); |
| 263 | + |
| 264 | + contextRunner.run(context -> { |
| 265 | + DataSource dataSource = context.getBean(DataSource.class); |
| 266 | + assertThat(dataSource).isInstanceOf(DecoratedDataSource.class); |
| 267 | + assertThat(dataSource.unwrap(HikariDataSource.class)).isInstanceOf(HikariDataSource.class); |
| 268 | + assertThat(dataSource.unwrap(DataSource.class)).isInstanceOf(HikariDataSource.class); |
| 269 | + }); |
| 270 | + } |
| 271 | + |
| 272 | + @Test |
| 273 | + void testUnwrapsProxyDataSourcesFromChain() { |
| 274 | + ApplicationContextRunner contextRunner = this.contextRunner |
| 275 | + .withConfiguration(AutoConfigurations.of(FlywayAutoConfiguration.class)) |
| 276 | + .withPropertyValues("spring.flyway.user=sa"); |
| 277 | + |
| 278 | + contextRunner.run(context -> { |
| 279 | + DataSource dataSource = context.getBean(DataSource.class); |
| 280 | + assertThat(dataSource).isInstanceOf(DecoratedDataSource.class); |
| 281 | + assertThat(dataSource.unwrap(ProxyDataSource.class)).isInstanceOf(ProxyDataSource.class); |
| 282 | + assertThat(dataSource.unwrap(P6DataSource.class)).isInstanceOf(P6DataSource.class); |
| 283 | + assertThat(dataSource.unwrap(FlexyPoolDataSource.class)).isInstanceOf(FlexyPoolDataSource.class); |
| 284 | + }); |
| 285 | + } |
| 286 | + |
257 | 287 | private AbstractListAssert<?, List<?>, Object, ObjectAssert<Object>> assertThatDataSourceDecoratingChain(DataSource dataSource) {
|
258 | 288 | return assertThat(((DecoratedDataSource) dataSource).getDecoratingChain()).extracting("dataSource").extracting("class");
|
259 | 289 | }
|
|
0 commit comments