mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Pass in filter's name when adding to MockMvc
Closes gh-38001
This commit is contained in:
parent
4c3de96d74
commit
0950d4416a
@ -116,8 +116,8 @@ public class SpringBootMockMvcBuilderCustomizer implements MockMvcBuilderCustomi
|
||||
private void addFilter(ConfigurableMockMvcBuilder<?> builder, AbstractFilterRegistrationBean<?> registration) {
|
||||
Filter filter = registration.getFilter();
|
||||
Collection<String> urls = registration.getUrlPatterns();
|
||||
builder.addFilter(filter, registration.getInitParameters(), registration.determineDispatcherTypes(),
|
||||
StringUtils.toStringArray(urls));
|
||||
builder.addFilter(filter, registration.getFilterName(), registration.getInitParameters(),
|
||||
registration.determineDispatcherTypes(), StringUtils.toStringArray(urls));
|
||||
}
|
||||
|
||||
public void setAddFilters(boolean addFilters) {
|
||||
|
@ -20,6 +20,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
@ -66,15 +67,18 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
||||
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(context);
|
||||
SpringBootMockMvcBuilderCustomizer customizer = new SpringBootMockMvcBuilderCustomizer(context);
|
||||
customizer.customize(builder);
|
||||
FilterRegistrationBean<?> registrationBean = (FilterRegistrationBean<?>) context
|
||||
.getBean("filterRegistrationBean");
|
||||
Filter testFilter = (Filter) context.getBean("testFilter");
|
||||
Filter otherTestFilter = registrationBean.getFilter();
|
||||
FilterRegistrationBean<?> registrationBean = (FilterRegistrationBean<?>) context.getBean("otherTestFilter");
|
||||
TestFilter testFilter = context.getBean("testFilter", TestFilter.class);
|
||||
OtherTestFilter otherTestFilter = (OtherTestFilter) registrationBean.getFilter();
|
||||
assertThat(builder).extracting("filters", as(InstanceOfAssertFactories.LIST))
|
||||
.extracting("delegate", "initParams", "dispatcherTypes")
|
||||
.containsExactlyInAnyOrder(tuple(testFilter, Collections.emptyMap(), EnumSet.of(DispatcherType.REQUEST)),
|
||||
tuple(otherTestFilter, Map.of("a", "alpha", "b", "bravo"),
|
||||
EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR)));
|
||||
.extracting("delegate", "dispatcherTypes")
|
||||
.containsExactlyInAnyOrder(tuple(testFilter, EnumSet.of(DispatcherType.REQUEST)),
|
||||
tuple(otherTestFilter, EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR)));
|
||||
builder.build();
|
||||
assertThat(testFilter.filterName).isEqualTo("testFilter");
|
||||
assertThat(testFilter.initParams).isEmpty();
|
||||
assertThat(otherTestFilter.filterName).isEqualTo("otherTestFilter");
|
||||
assertThat(otherTestFilter.initParams).isEqualTo(Map.of("a", "alpha", "b", "bravo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -137,7 +141,7 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
||||
static class FilterConfiguration {
|
||||
|
||||
@Bean
|
||||
FilterRegistrationBean<OtherTestFilter> filterRegistrationBean() {
|
||||
FilterRegistrationBean<OtherTestFilter> otherTestFilter() {
|
||||
FilterRegistrationBean<OtherTestFilter> filterRegistrationBean = new FilterRegistrationBean<>(
|
||||
new OtherTestFilter());
|
||||
filterRegistrationBean.setInitParameters(Map.of("a", "alpha", "b", "bravo"));
|
||||
@ -158,9 +162,15 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
||||
|
||||
static class TestFilter implements Filter {
|
||||
|
||||
private String filterName;
|
||||
|
||||
private Map<String, String> initParams = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) {
|
||||
|
||||
this.filterName = filterConfig.getFilterName();
|
||||
Collections.list(filterConfig.getInitParameterNames())
|
||||
.forEach((name) -> this.initParams.put(name, filterConfig.getInitParameter(name)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -177,9 +187,15 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
||||
|
||||
static class OtherTestFilter implements Filter {
|
||||
|
||||
private String filterName;
|
||||
|
||||
private Map<String, String> initParams = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) {
|
||||
|
||||
this.filterName = filterConfig.getFilterName();
|
||||
Collections.list(filterConfig.getInitParameterNames())
|
||||
.forEach((name) -> this.initParams.put(name, filterConfig.getInitParameter(name)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -265,6 +265,15 @@ public abstract class AbstractFilterRegistrationBean<T extends Filter> extends D
|
||||
*/
|
||||
public abstract T getFilter();
|
||||
|
||||
/**
|
||||
* Returns the filter name that will be registered.
|
||||
* @return the filter name
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public String getFilterName() {
|
||||
return getOrDeduceName(getFilter());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder(getOrDeduceName(this));
|
||||
|
Loading…
Reference in New Issue
Block a user