Commit b8eff0a0 authored by Stephane Nicoll's avatar Stephane Nicoll

Migrate tests to ApplicationContextRunner

parent 85493367
...@@ -16,16 +16,9 @@ ...@@ -16,16 +16,9 @@
package org.springframework.boot.autoconfigure.session; package org.springframework.boot.autoconfigure.session;
import java.util.Collection;
import org.junit.After;
import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.DirectFieldAccessor;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.session.SessionRepository; import org.springframework.session.SessionRepository;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
...@@ -36,18 +29,11 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -36,18 +29,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public abstract class AbstractSessionAutoConfigurationTests { public abstract class AbstractSessionAutoConfigurationTests {
protected AnnotationConfigWebApplicationContext context;
@After
public void close() {
if (this.context != null) {
this.context.close();
}
}
protected <T extends SessionRepository<?>> T validateSessionRepository( protected <T extends SessionRepository<?>> T validateSessionRepository(
AssertableWebApplicationContext context,
Class<T> type) { Class<T> type) {
SessionRepository<?> repository = this.context.getBean(SessionRepository.class); assertThat(context).hasSingleBean(SessionRepository.class);
SessionRepository<?> repository = context.getBean(SessionRepository.class);
assertThat(repository).as("Wrong session repository type").isInstanceOf(type); assertThat(repository).as("Wrong session repository type").isInstanceOf(type);
return type.cast(repository); return type.cast(repository);
} }
...@@ -57,20 +43,4 @@ public abstract class AbstractSessionAutoConfigurationTests { ...@@ -57,20 +43,4 @@ public abstract class AbstractSessionAutoConfigurationTests {
.getPropertyValue("defaultMaxInactiveInterval"); .getPropertyValue("defaultMaxInactiveInterval");
} }
protected void load(String... environment) {
load(null, environment);
}
protected void load(Collection<Class<?>> configs, String... environment) {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
TestPropertyValues.of(environment).applyTo(ctx);
if (configs != null) {
ctx.register(configs.toArray(new Class<?>[configs.size()]));
}
ctx.register(ServerProperties.class, SessionAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class);
ctx.refresh();
this.context = ctx;
}
} }
/* /*
* Copyright 2012-2016 the original author or authors. * Copyright 2012-2017 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -16,13 +16,13 @@ ...@@ -16,13 +16,13 @@
package org.springframework.boot.autoconfigure.session; package org.springframework.boot.autoconfigure.session;
import java.util.Collections;
import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap; import com.hazelcast.core.IMap;
import org.junit.Test; import org.junit.Test;
import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.DirectFieldAccessor;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.session.hazelcast.HazelcastFlushMode; import org.springframework.session.hazelcast.HazelcastFlushMode;
...@@ -42,37 +42,43 @@ import static org.mockito.Mockito.verify; ...@@ -42,37 +42,43 @@ import static org.mockito.Mockito.verify;
public class SessionAutoConfigurationHazelcastTests public class SessionAutoConfigurationHazelcastTests
extends AbstractSessionAutoConfigurationTests { extends AbstractSessionAutoConfigurationTests {
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(SessionAutoConfiguration.class))
.withUserConfiguration(HazelcastConfiguration.class);
@Test @Test
public void defaultConfig() { public void defaultConfig() {
load(Collections.<Class<?>>singletonList(HazelcastConfiguration.class), this.contextRunner.withPropertyValues("spring.session.store-type=hazelcast")
"spring.session.store-type=hazelcast"); .run((context) -> {
validateSessionRepository(HazelcastSessionRepository.class); validateSessionRepository(context, HazelcastSessionRepository.class);
HazelcastInstance hazelcastInstance = this.context HazelcastInstance hazelcastInstance = context
.getBean(HazelcastInstance.class); .getBean(HazelcastInstance.class);
verify(hazelcastInstance, times(1)).getMap("spring:session:sessions"); verify(hazelcastInstance, times(1)).getMap("spring:session:sessions");
});
} }
@Test @Test
public void customMapName() { public void customMapName() {
load(Collections.<Class<?>>singletonList(HazelcastConfiguration.class), this.contextRunner.withPropertyValues("spring.session.store-type=hazelcast",
"spring.session.store-type=hazelcast", "spring.session.hazelcast.map-name=foo:bar:biz").run((context) -> {
"spring.session.hazelcast.map-name=foo:bar:biz"); validateSessionRepository(context, HazelcastSessionRepository.class);
validateSessionRepository(HazelcastSessionRepository.class); HazelcastInstance hazelcastInstance = context
HazelcastInstance hazelcastInstance = this.context .getBean(HazelcastInstance.class);
.getBean(HazelcastInstance.class); verify(hazelcastInstance, times(1)).getMap("foo:bar:biz");
verify(hazelcastInstance, times(1)).getMap("foo:bar:biz"); });
} }
@Test @Test
public void customFlushMode() { public void customFlushMode() {
load(Collections.<Class<?>>singletonList(HazelcastConfiguration.class), this.contextRunner.withPropertyValues("spring.session.store-type=hazelcast",
"spring.session.store-type=hazelcast", "spring.session.hazelcast.flush-mode=immediate").run((context) -> {
"spring.session.hazelcast.flush-mode=immediate"); HazelcastSessionRepository repository = validateSessionRepository(context,
HazelcastSessionRepository repository = validateSessionRepository( HazelcastSessionRepository.class);
HazelcastSessionRepository.class); assertThat(new DirectFieldAccessor(repository)
assertThat(new DirectFieldAccessor(repository) .getPropertyValue("hazelcastFlushMode"))
.getPropertyValue("hazelcastFlushMode")) .isEqualTo(HazelcastFlushMode.IMMEDIATE);
.isEqualTo(HazelcastFlushMode.IMMEDIATE); });
} }
@Configuration @Configuration
......
...@@ -16,17 +16,17 @@ ...@@ -16,17 +16,17 @@
package org.springframework.boot.autoconfigure.session; package org.springframework.boot.autoconfigure.session;
import java.util.Arrays;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.ExpectedException; import org.junit.rules.ExpectedException;
import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.DirectFieldAccessor;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.DatabaseInitializationMode; import org.springframework.boot.autoconfigure.DatabaseInitializationMode;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.jdbc.core.JdbcOperations; import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.session.jdbc.JdbcOperationsSessionRepository; import org.springframework.session.jdbc.JdbcOperationsSessionRepository;
...@@ -45,57 +45,61 @@ public class SessionAutoConfigurationJdbcTests ...@@ -45,57 +45,61 @@ public class SessionAutoConfigurationJdbcTests
@Rule @Rule
public ExpectedException thrown = ExpectedException.none(); public ExpectedException thrown = ExpectedException.none();
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
SessionAutoConfiguration.class))
.withPropertyValues("spring.datasource.generate-unique-name=true");
@Test @Test
public void defaultConfig() { public void defaultConfig() {
load(Arrays.asList(EmbeddedDataSourceConfiguration.class, this.contextRunner.withConfiguration(AutoConfigurations.of(
JdbcTemplateAutoConfiguration.class, JdbcTemplateAutoConfiguration.class))
DataSourceTransactionManagerAutoConfiguration.class), .withPropertyValues("spring.session.store-type=jdbc").run((context) -> {
"spring.session.store-type=jdbc"); JdbcOperationsSessionRepository repository = validateSessionRepository(context,
JdbcOperationsSessionRepository repository = validateSessionRepository( JdbcOperationsSessionRepository.class);
JdbcOperationsSessionRepository.class); assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName")) .isEqualTo("SPRING_SESSION");
.isEqualTo("SPRING_SESSION"); assertThat(context.getBean(JdbcSessionProperties.class).getInitializeSchema())
assertThat( .isEqualTo(DatabaseInitializationMode.EMBEDDED);
this.context.getBean(JdbcSessionProperties.class).getInitializeSchema()) assertThat(context.getBean(JdbcOperations.class)
.isEqualTo(DatabaseInitializationMode.EMBEDDED); .queryForList("select * from SPRING_SESSION")).isEmpty();
assertThat(this.context.getBean(JdbcOperations.class) });
.queryForList("select * from SPRING_SESSION")).isEmpty();
} }
@Test @Test
public void disableDatabaseInitializer() { public void disableDatabaseInitializer() {
load(Arrays.asList(EmbeddedDataSourceConfiguration.class, this.contextRunner.withPropertyValues(
DataSourceTransactionManagerAutoConfiguration.class),
"spring.session.store-type=jdbc", "spring.session.store-type=jdbc",
"spring.session.jdbc.initialize-schema=never"); "spring.session.jdbc.initialize-schema=never").run((context) -> {
JdbcOperationsSessionRepository repository = validateSessionRepository( JdbcOperationsSessionRepository repository = validateSessionRepository(context,
JdbcOperationsSessionRepository.class); JdbcOperationsSessionRepository.class);
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName")) assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
.isEqualTo("SPRING_SESSION"); .isEqualTo("SPRING_SESSION");
assertThat( assertThat(context.getBean(JdbcSessionProperties.class).getInitializeSchema())
this.context.getBean(JdbcSessionProperties.class).getInitializeSchema()) .isEqualTo(DatabaseInitializationMode.NEVER);
.isEqualTo(DatabaseInitializationMode.NEVER); this.thrown.expect(BadSqlGrammarException.class);
this.thrown.expect(BadSqlGrammarException.class); context.getBean(JdbcOperations.class).queryForList(
this.context.getBean(JdbcOperations.class) "select * from SPRING_SESSION");
.queryForList("select * from SPRING_SESSION"); });
} }
@Test @Test
public void customTableName() { public void customTableName() {
load(Arrays.asList(EmbeddedDataSourceConfiguration.class, this.contextRunner.withPropertyValues(
DataSourceTransactionManagerAutoConfiguration.class),
"spring.session.store-type=jdbc", "spring.session.store-type=jdbc",
"spring.session.jdbc.table-name=FOO_BAR", "spring.session.jdbc.table-name=FOO_BAR",
"spring.session.jdbc.schema=classpath:session/custom-schema-h2.sql"); "spring.session.jdbc.schema=classpath:session/custom-schema-h2.sql")
JdbcOperationsSessionRepository repository = validateSessionRepository( .run((context) -> {
JdbcOperationsSessionRepository.class); JdbcOperationsSessionRepository repository = validateSessionRepository(context,
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName")) JdbcOperationsSessionRepository.class);
.isEqualTo("FOO_BAR"); assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
assertThat( .isEqualTo("FOO_BAR");
this.context.getBean(JdbcSessionProperties.class).getInitializeSchema()) assertThat(context.getBean(JdbcSessionProperties.class).getInitializeSchema())
.isEqualTo(DatabaseInitializationMode.EMBEDDED); .isEqualTo(DatabaseInitializationMode.EMBEDDED);
assertThat(this.context.getBean(JdbcOperations.class) assertThat(context.getBean(JdbcOperations.class)
.queryForList("select * from FOO_BAR")).isEmpty(); .queryForList("select * from FOO_BAR")).isEmpty();
});
} }
} }
...@@ -16,13 +16,15 @@ ...@@ -16,13 +16,15 @@
package org.springframework.boot.autoconfigure.session; package org.springframework.boot.autoconfigure.session;
import java.util.Collections;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.DirectFieldAccessor;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
import org.springframework.boot.test.context.runner.ContextConsumer;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.boot.testsupport.rule.RedisTestServer; import org.springframework.boot.testsupport.rule.RedisTestServer;
import org.springframework.session.data.redis.RedisFlushMode; import org.springframework.session.data.redis.RedisFlushMode;
import org.springframework.session.data.redis.RedisOperationsSessionRepository; import org.springframework.session.data.redis.RedisOperationsSessionRepository;
...@@ -40,33 +42,38 @@ public class SessionAutoConfigurationRedisTests ...@@ -40,33 +42,38 @@ public class SessionAutoConfigurationRedisTests
@Rule @Rule
public final RedisTestServer redis = new RedisTestServer(); public final RedisTestServer redis = new RedisTestServer();
protected final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(SessionAutoConfiguration.class));
@Test @Test
public void redisSessionStore() { public void redisSessionStore() {
load(Collections.<Class<?>>singletonList(RedisAutoConfiguration.class), this.contextRunner.withConfiguration(AutoConfigurations.of(RedisAutoConfiguration.class))
"spring.session.store-type=redis"); .withPropertyValues("spring.session.store-type=redis")
validateSpringSessionUsesRedis(); .run(validateSpringSessionUsesRedis("spring:session:event:created:",
} RedisFlushMode.ON_SAVE));
private void validateSpringSessionUsesRedis() {
RedisOperationsSessionRepository repository = validateSessionRepository(
RedisOperationsSessionRepository.class);
assertThat(repository.getSessionCreatedChannelPrefix())
.isEqualTo("spring:session:event:created:");
assertThat(new DirectFieldAccessor(repository).getPropertyValue("redisFlushMode"))
.isEqualTo(RedisFlushMode.ON_SAVE);
} }
@Test @Test
public void redisSessionStoreWithCustomizations() { public void redisSessionStoreWithCustomizations() {
load(Collections.<Class<?>>singletonList(RedisAutoConfiguration.class), this.contextRunner.withConfiguration(AutoConfigurations.of(RedisAutoConfiguration.class))
"spring.session.store-type=redis", "spring.session.redis.namespace=foo", .withPropertyValues("spring.session.store-type=redis",
"spring.session.redis.flush-mode=immediate"); "spring.session.redis.namespace=foo",
RedisOperationsSessionRepository repository = validateSessionRepository( "spring.session.redis.flush-mode=immediate")
RedisOperationsSessionRepository.class); .run(validateSpringSessionUsesRedis("spring:session:foo:event:created:",
assertThat(repository.getSessionCreatedChannelPrefix()) RedisFlushMode.IMMEDIATE));
.isEqualTo("spring:session:foo:event:created:"); }
assertThat(new DirectFieldAccessor(repository).getPropertyValue("redisFlushMode"))
.isEqualTo(RedisFlushMode.IMMEDIATE); private ContextConsumer<AssertableWebApplicationContext> validateSpringSessionUsesRedis(
String sessionCreatedChannelPrefix, RedisFlushMode flushMode) {
return context -> {
RedisOperationsSessionRepository repository = validateSessionRepository(context,
RedisOperationsSessionRepository.class);
assertThat(repository.getSessionCreatedChannelPrefix())
.isEqualTo(sessionCreatedChannelPrefix);
assertThat(new DirectFieldAccessor(repository).getPropertyValue("redisFlushMode"))
.isEqualTo(flushMode);
};
} }
} }
...@@ -21,11 +21,12 @@ import java.util.EnumSet; ...@@ -21,11 +21,12 @@ import java.util.EnumSet;
import javax.servlet.DispatcherType; import javax.servlet.DispatcherType;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.BeanCreationException;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -46,95 +47,119 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -46,95 +47,119 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurationTests { public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurationTests {
@Rule private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
public ExpectedException thrown = ExpectedException.none(); .withConfiguration(AutoConfigurations.of(SessionAutoConfiguration.class));
@Test @Test
public void contextFailsIfStoreTypeNotSet() { public void contextFailsIfStoreTypeNotSet() {
this.thrown.expect(BeanCreationException.class); this.contextRunner.run((context) -> {
this.thrown.expectMessage("No Spring Session store is configured"); assertThat(context).hasFailed();
this.thrown.expectMessage("set the 'spring.session.store-type' property"); assertThat(context).getFailure().hasMessageContaining(
load(); "No Spring Session store is configured");
assertThat(context).getFailure().hasMessageContaining(
"set the 'spring.session.store-type' property");
});
} }
@Test @Test
public void contextFailsIfStoreTypeNotAvailable() { public void contextFailsIfStoreTypeNotAvailable() {
this.thrown.expect(BeanCreationException.class); this.contextRunner.withPropertyValues("spring.session.store-type=jdbc")
this.thrown.expectMessage("No session repository could be auto-configured"); .run((context) -> {
this.thrown.expectMessage("session store type is 'jdbc'"); assertThat(context).hasFailed();
load("spring.session.store-type=jdbc"); assertThat(context).getFailure().isInstanceOf(BeanCreationException.class);
assertThat(context).getFailure().hasMessageContaining(
"No session repository could be auto-configured");
assertThat(context).getFailure().hasMessageContaining(
"session store type is 'jdbc'");
});
} }
@Test @Test
public void autoConfigurationDisabledIfStoreTypeSetToNone() { public void autoConfigurationDisabledIfStoreTypeSetToNone() {
load("spring.session.store-type=none"); this.contextRunner.withPropertyValues("spring.session.store-type=none")
assertThat(this.context.getBeansOfType(SessionRepository.class)).hasSize(0); .run((context) -> assertThat(context)
.doesNotHaveBean(SessionRepository.class));
} }
@Test @Test
public void backOffIfSessionRepositoryIsPresent() { public void backOffIfSessionRepositoryIsPresent() {
load(Collections.singletonList(SessionRepositoryConfiguration.class), this.contextRunner.withUserConfiguration(SessionRepositoryConfiguration.class)
"spring.session.store-type=redis"); .withPropertyValues("spring.session.store-type=redis").run((context) -> {
MapSessionRepository repository = validateSessionRepository( MapSessionRepository repository = validateSessionRepository(context,
MapSessionRepository.class); MapSessionRepository.class);
assertThat(this.context.getBean("mySessionRepository")).isSameAs(repository); assertThat(context).getBean("mySessionRepository").isSameAs(repository);
});
} }
@Test @Test
public void hashMapSessionStore() { public void hashMapSessionStore() {
load("spring.session.store-type=hash-map"); this.contextRunner
MapSessionRepository repository = validateSessionRepository( .withPropertyValues("spring.session.store-type=hash-map")
MapSessionRepository.class); .run((context) -> {
assertThat(getSessionTimeout(repository)).isNull(); MapSessionRepository repository = validateSessionRepository(context,
MapSessionRepository.class);
assertThat(getSessionTimeout(repository)).isNull();
});
} }
@Test @Test
public void hashMapSessionStoreCustomTimeout() { public void hashMapSessionStoreCustomTimeout() {
load("spring.session.store-type=hash-map", "server.session.timeout=3000"); this.contextRunner.withUserConfiguration(ServerProperties.class).
MapSessionRepository repository = validateSessionRepository( withPropertyValues("spring.session.store-type=hash-map",
MapSessionRepository.class); "server.session.timeout=3000").run((context) -> {
assertThat(getSessionTimeout(repository)).isEqualTo(3000); MapSessionRepository repository = validateSessionRepository(context,
MapSessionRepository.class);
assertThat(getSessionTimeout(repository)).isEqualTo(3000);
});
} }
@Test @Test
public void springSessionTimeoutIsNotAValidProperty() { public void springSessionTimeoutIsNotAValidProperty() {
this.thrown.expect(BeanCreationException.class); this.contextRunner.withPropertyValues("spring.session.store-type=hash-map",
this.thrown.expectMessage("Could not bind"); "spring.session.timeout=3000").run((context) -> {
load("spring.session.store-type=hash-map", "spring.session.timeout=3000"); assertThat(context).hasFailed();
assertThat(context).getFailure().isInstanceOf(BeanCreationException.class);
assertThat(context).getFailure().hasMessageContaining("Could not bind");
});
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Test @Test
public void filterIsRegisteredWithAsyncErrorAndRequestDispatcherTypes() { public void filterIsRegisteredWithAsyncErrorAndRequestDispatcherTypes() {
load("spring.session.store-type=hash-map"); this.contextRunner.withPropertyValues(
FilterRegistrationBean<?> registration = this.context "spring.session.store-type=hash-map").run((context) -> {
.getBean(FilterRegistrationBean.class); FilterRegistrationBean<?> registration = context
assertThat(registration.getFilter()) .getBean(FilterRegistrationBean.class);
.isSameAs(this.context.getBean(SessionRepositoryFilter.class)); assertThat(registration.getFilter())
assertThat((EnumSet<DispatcherType>) ReflectionTestUtils.getField(registration, .isSameAs(context.getBean(SessionRepositoryFilter.class));
"dispatcherTypes")).containsOnly(DispatcherType.ASYNC, assertThat((EnumSet<DispatcherType>) ReflectionTestUtils.getField(registration,
DispatcherType.ERROR, DispatcherType.REQUEST); "dispatcherTypes")).containsOnly(DispatcherType.ASYNC,
DispatcherType.ERROR, DispatcherType.REQUEST);
});
} }
@Test @Test
public void filterOrderCanBeCustomized() { public void filterOrderCanBeCustomized() {
load("spring.session.store-type=hash-map", this.contextRunner.withPropertyValues("spring.session.store-type=hash-map",
"spring.session.servlet.filter-order=123"); "spring.session.servlet.filter-order=123").run((context) -> {
FilterRegistrationBean<?> registration = this.context FilterRegistrationBean<?> registration = context
.getBean(FilterRegistrationBean.class); .getBean(FilterRegistrationBean.class);
assertThat(registration.getOrder()).isEqualTo(123); assertThat(registration.getOrder()).isEqualTo(123);
});
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Test @Test
public void filterDispatcherTypesCanBeCustomized() { public void filterDispatcherTypesCanBeCustomized() {
load("spring.session.store-type=hash-map", this.contextRunner.withPropertyValues("spring.session.store-type=hash-map",
"spring.session.servlet.filter-dispatcher-types=error, request"); "spring.session.servlet.filter-dispatcher-types=error, request")
FilterRegistrationBean<?> registration = this.context .run((context) -> {
.getBean(FilterRegistrationBean.class); FilterRegistrationBean<?> registration = context
assertThat((EnumSet<DispatcherType>) ReflectionTestUtils.getField(registration, .getBean(FilterRegistrationBean.class);
"dispatcherTypes")).containsOnly(DispatcherType.ERROR, assertThat((EnumSet<DispatcherType>) ReflectionTestUtils.getField(registration,
DispatcherType.REQUEST); "dispatcherTypes")).containsOnly(DispatcherType.ERROR,
DispatcherType.REQUEST);
});
} }
@Configuration @Configuration
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment