|
21 | 21 | import org.apache.commons.dbcp2.BasicDataSource;
|
22 | 22 | import org.junit.jupiter.api.Test;
|
23 | 23 |
|
| 24 | +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; |
24 | 25 | import org.springframework.boot.autoconfigure.AutoConfigurations;
|
25 |
| -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; |
| 26 | +import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; |
26 | 27 | import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
|
| 28 | +import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; |
27 | 29 | import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;
|
| 30 | +import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; |
28 | 31 | import org.springframework.boot.autoconfigure.session.JdbcSessionConfiguration.SpringBootJdbcHttpSessionConfiguration;
|
29 | 32 | import org.springframework.boot.autoconfigure.web.ServerProperties;
|
30 | 33 | import org.springframework.boot.jdbc.DataSourceInitializationMode;
|
|
57 | 60 | class SessionAutoConfigurationJdbcTests extends AbstractSessionAutoConfigurationTests {
|
58 | 61 |
|
59 | 62 | private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
|
60 |
| - .withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class, |
61 |
| - DataSourceTransactionManagerAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, |
62 |
| - SessionAutoConfiguration.class)) |
| 63 | + .withConfiguration(AutoConfigurations.of(DataSourceTransactionManagerAutoConfiguration.class, |
| 64 | + JdbcTemplateAutoConfiguration.class, SessionAutoConfiguration.class)) |
| 65 | + .withUserConfiguration(EmbeddedDataSourceConfiguration.class) |
63 | 66 | .withPropertyValues("spring.datasource.generate-unique-name=true");
|
64 | 67 |
|
65 | 68 | @Test
|
@@ -190,6 +193,51 @@ void sessionDataSourceIsUsedWhenAvailable() {
|
190 | 193 | });
|
191 | 194 | }
|
192 | 195 |
|
| 196 | + @Test |
| 197 | + void sessionRepositoryBeansDependOnJdbcSessionDataSourceInitializer() { |
| 198 | + this.contextRunner.withPropertyValues("spring.session.store-type=jdbc").run((context) -> { |
| 199 | + ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); |
| 200 | + String[] sessionRepositoryNames = beanFactory.getBeanNamesForType(JdbcIndexedSessionRepository.class); |
| 201 | + assertThat(sessionRepositoryNames).isNotEmpty(); |
| 202 | + for (String sessionRepositoryName : sessionRepositoryNames) { |
| 203 | + assertThat(beanFactory.getBeanDefinition(sessionRepositoryName).getDependsOn()) |
| 204 | + .contains("jdbcSessionDataSourceInitializer"); |
| 205 | + } |
| 206 | + }); |
| 207 | + } |
| 208 | + |
| 209 | + @Test |
| 210 | + void sessionRepositoryBeansDependOnFlyway() { |
| 211 | + this.contextRunner.withConfiguration(AutoConfigurations.of(FlywayAutoConfiguration.class)) |
| 212 | + .withPropertyValues("spring.session.store-type=jdbc", "spring.session.jdbc.initialize-schema=never") |
| 213 | + .run((context) -> { |
| 214 | + ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); |
| 215 | + String[] sessionRepositoryNames = beanFactory |
| 216 | + .getBeanNamesForType(JdbcIndexedSessionRepository.class); |
| 217 | + assertThat(sessionRepositoryNames).isNotEmpty(); |
| 218 | + for (String sessionRepositoryName : sessionRepositoryNames) { |
| 219 | + assertThat(beanFactory.getBeanDefinition(sessionRepositoryName).getDependsOn()) |
| 220 | + .contains("flyway", "flywayInitializer"); |
| 221 | + } |
| 222 | + }); |
| 223 | + } |
| 224 | + |
| 225 | + @Test |
| 226 | + void sessionRepositoryBeansDependOnLiquibase() { |
| 227 | + this.contextRunner.withConfiguration(AutoConfigurations.of(LiquibaseAutoConfiguration.class)) |
| 228 | + .withPropertyValues("spring.session.store-type=jdbc", "spring.session.jdbc.initialize-schema=never") |
| 229 | + .run((context) -> { |
| 230 | + ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); |
| 231 | + String[] sessionRepositoryNames = beanFactory |
| 232 | + .getBeanNamesForType(JdbcIndexedSessionRepository.class); |
| 233 | + assertThat(sessionRepositoryNames).isNotEmpty(); |
| 234 | + for (String sessionRepositoryName : sessionRepositoryNames) { |
| 235 | + assertThat(beanFactory.getBeanDefinition(sessionRepositoryName).getDependsOn()) |
| 236 | + .contains("liquibase"); |
| 237 | + } |
| 238 | + }); |
| 239 | + } |
| 240 | + |
193 | 241 | @Configuration
|
194 | 242 | static class SessionDataSourceConfiguration {
|
195 | 243 |
|
|
0 commit comments