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) {
|
private void addFilter(ConfigurableMockMvcBuilder<?> builder, AbstractFilterRegistrationBean<?> registration) {
|
||||||
Filter filter = registration.getFilter();
|
Filter filter = registration.getFilter();
|
||||||
Collection<String> urls = registration.getUrlPatterns();
|
Collection<String> urls = registration.getUrlPatterns();
|
||||||
builder.addFilter(filter, registration.getInitParameters(), registration.determineDispatcherTypes(),
|
builder.addFilter(filter, registration.getFilterName(), registration.getInitParameters(),
|
||||||
StringUtils.toStringArray(urls));
|
registration.determineDispatcherTypes(), StringUtils.toStringArray(urls));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAddFilters(boolean addFilters) {
|
public void setAddFilters(boolean addFilters) {
|
||||||
|
@ -20,6 +20,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
@ -66,15 +67,18 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
|||||||
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(context);
|
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(context);
|
||||||
SpringBootMockMvcBuilderCustomizer customizer = new SpringBootMockMvcBuilderCustomizer(context);
|
SpringBootMockMvcBuilderCustomizer customizer = new SpringBootMockMvcBuilderCustomizer(context);
|
||||||
customizer.customize(builder);
|
customizer.customize(builder);
|
||||||
FilterRegistrationBean<?> registrationBean = (FilterRegistrationBean<?>) context
|
FilterRegistrationBean<?> registrationBean = (FilterRegistrationBean<?>) context.getBean("otherTestFilter");
|
||||||
.getBean("filterRegistrationBean");
|
TestFilter testFilter = context.getBean("testFilter", TestFilter.class);
|
||||||
Filter testFilter = (Filter) context.getBean("testFilter");
|
OtherTestFilter otherTestFilter = (OtherTestFilter) registrationBean.getFilter();
|
||||||
Filter otherTestFilter = registrationBean.getFilter();
|
|
||||||
assertThat(builder).extracting("filters", as(InstanceOfAssertFactories.LIST))
|
assertThat(builder).extracting("filters", as(InstanceOfAssertFactories.LIST))
|
||||||
.extracting("delegate", "initParams", "dispatcherTypes")
|
.extracting("delegate", "dispatcherTypes")
|
||||||
.containsExactlyInAnyOrder(tuple(testFilter, Collections.emptyMap(), EnumSet.of(DispatcherType.REQUEST)),
|
.containsExactlyInAnyOrder(tuple(testFilter, EnumSet.of(DispatcherType.REQUEST)),
|
||||||
tuple(otherTestFilter, Map.of("a", "alpha", "b", "bravo"),
|
tuple(otherTestFilter, EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR)));
|
||||||
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
|
@Test
|
||||||
@ -137,7 +141,7 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
|||||||
static class FilterConfiguration {
|
static class FilterConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
FilterRegistrationBean<OtherTestFilter> filterRegistrationBean() {
|
FilterRegistrationBean<OtherTestFilter> otherTestFilter() {
|
||||||
FilterRegistrationBean<OtherTestFilter> filterRegistrationBean = new FilterRegistrationBean<>(
|
FilterRegistrationBean<OtherTestFilter> filterRegistrationBean = new FilterRegistrationBean<>(
|
||||||
new OtherTestFilter());
|
new OtherTestFilter());
|
||||||
filterRegistrationBean.setInitParameters(Map.of("a", "alpha", "b", "bravo"));
|
filterRegistrationBean.setInitParameters(Map.of("a", "alpha", "b", "bravo"));
|
||||||
@ -158,9 +162,15 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
|||||||
|
|
||||||
static class TestFilter implements Filter {
|
static class TestFilter implements Filter {
|
||||||
|
|
||||||
|
private String filterName;
|
||||||
|
|
||||||
|
private Map<String, String> initParams = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(FilterConfig filterConfig) {
|
public void init(FilterConfig filterConfig) {
|
||||||
|
this.filterName = filterConfig.getFilterName();
|
||||||
|
Collections.list(filterConfig.getInitParameterNames())
|
||||||
|
.forEach((name) -> this.initParams.put(name, filterConfig.getInitParameter(name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -177,9 +187,15 @@ class SpringBootMockMvcBuilderCustomizerTests {
|
|||||||
|
|
||||||
static class OtherTestFilter implements Filter {
|
static class OtherTestFilter implements Filter {
|
||||||
|
|
||||||
|
private String filterName;
|
||||||
|
|
||||||
|
private Map<String, String> initParams = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(FilterConfig filterConfig) {
|
public void init(FilterConfig filterConfig) {
|
||||||
|
this.filterName = filterConfig.getFilterName();
|
||||||
|
Collections.list(filterConfig.getInitParameterNames())
|
||||||
|
.forEach((name) -> this.initParams.put(name, filterConfig.getInitParameter(name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -265,6 +265,15 @@ public abstract class AbstractFilterRegistrationBean<T extends Filter> extends D
|
|||||||
*/
|
*/
|
||||||
public abstract T getFilter();
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder(getOrDeduceName(this));
|
StringBuilder builder = new StringBuilder(getOrDeduceName(this));
|
||||||
|
Loading…
Reference in New Issue
Block a user