Skip to content

Commit 0950d44

Browse files
committed
Pass in filter's name when adding to MockMvc
Closes gh-38001
1 parent 4c3de96 commit 0950d44

File tree

3 files changed

+38
-13
lines changed

3 files changed

+38
-13
lines changed

spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/SpringBootMockMvcBuilderCustomizer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ private void addFilters(ConfigurableMockMvcBuilder<?> builder) {
116116
private void addFilter(ConfigurableMockMvcBuilder<?> builder, AbstractFilterRegistrationBean<?> registration) {
117117
Filter filter = registration.getFilter();
118118
Collection<String> urls = registration.getUrlPatterns();
119-
builder.addFilter(filter, registration.getInitParameters(), registration.determineDispatcherTypes(),
120-
StringUtils.toStringArray(urls));
119+
builder.addFilter(filter, registration.getFilterName(), registration.getInitParameters(),
120+
registration.determineDispatcherTypes(), StringUtils.toStringArray(urls));
121121
}
122122

123123
public void setAddFilters(boolean addFilters) {

spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/SpringBootMockMvcBuilderCustomizerTests.java

+27-11
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Arrays;
2121
import java.util.Collections;
2222
import java.util.EnumSet;
23+
import java.util.HashMap;
2324
import java.util.List;
2425
import java.util.Map;
2526
import java.util.concurrent.CountDownLatch;
@@ -66,15 +67,18 @@ void customizeShouldAddFilters() {
6667
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(context);
6768
SpringBootMockMvcBuilderCustomizer customizer = new SpringBootMockMvcBuilderCustomizer(context);
6869
customizer.customize(builder);
69-
FilterRegistrationBean<?> registrationBean = (FilterRegistrationBean<?>) context
70-
.getBean("filterRegistrationBean");
71-
Filter testFilter = (Filter) context.getBean("testFilter");
72-
Filter otherTestFilter = registrationBean.getFilter();
70+
FilterRegistrationBean<?> registrationBean = (FilterRegistrationBean<?>) context.getBean("otherTestFilter");
71+
TestFilter testFilter = context.getBean("testFilter", TestFilter.class);
72+
OtherTestFilter otherTestFilter = (OtherTestFilter) registrationBean.getFilter();
7373
assertThat(builder).extracting("filters", as(InstanceOfAssertFactories.LIST))
74-
.extracting("delegate", "initParams", "dispatcherTypes")
75-
.containsExactlyInAnyOrder(tuple(testFilter, Collections.emptyMap(), EnumSet.of(DispatcherType.REQUEST)),
76-
tuple(otherTestFilter, Map.of("a", "alpha", "b", "bravo"),
77-
EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR)));
74+
.extracting("delegate", "dispatcherTypes")
75+
.containsExactlyInAnyOrder(tuple(testFilter, EnumSet.of(DispatcherType.REQUEST)),
76+
tuple(otherTestFilter, EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR)));
77+
builder.build();
78+
assertThat(testFilter.filterName).isEqualTo("testFilter");
79+
assertThat(testFilter.initParams).isEmpty();
80+
assertThat(otherTestFilter.filterName).isEqualTo("otherTestFilter");
81+
assertThat(otherTestFilter.initParams).isEqualTo(Map.of("a", "alpha", "b", "bravo"));
7882
}
7983

8084
@Test
@@ -137,7 +141,7 @@ TestServlet testServlet() {
137141
static class FilterConfiguration {
138142

139143
@Bean
140-
FilterRegistrationBean<OtherTestFilter> filterRegistrationBean() {
144+
FilterRegistrationBean<OtherTestFilter> otherTestFilter() {
141145
FilterRegistrationBean<OtherTestFilter> filterRegistrationBean = new FilterRegistrationBean<>(
142146
new OtherTestFilter());
143147
filterRegistrationBean.setInitParameters(Map.of("a", "alpha", "b", "bravo"));
@@ -158,9 +162,15 @@ static class TestServlet extends HttpServlet {
158162

159163
static class TestFilter implements Filter {
160164

165+
private String filterName;
166+
167+
private Map<String, String> initParams = new HashMap<>();
168+
161169
@Override
162170
public void init(FilterConfig filterConfig) {
163-
171+
this.filterName = filterConfig.getFilterName();
172+
Collections.list(filterConfig.getInitParameterNames())
173+
.forEach((name) -> this.initParams.put(name, filterConfig.getInitParameter(name)));
164174
}
165175

166176
@Override
@@ -177,9 +187,15 @@ public void destroy() {
177187

178188
static class OtherTestFilter implements Filter {
179189

190+
private String filterName;
191+
192+
private Map<String, String> initParams = new HashMap<>();
193+
180194
@Override
181195
public void init(FilterConfig filterConfig) {
182-
196+
this.filterName = filterConfig.getFilterName();
197+
Collections.list(filterConfig.getInitParameterNames())
198+
.forEach((name) -> this.initParams.put(name, filterConfig.getInitParameter(name)));
183199
}
184200

185201
@Override

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/AbstractFilterRegistrationBean.java

+9
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,15 @@ protected void configure(FilterRegistration.Dynamic registration) {
265265
*/
266266
public abstract T getFilter();
267267

268+
/**
269+
* Returns the filter name that will be registered.
270+
* @return the filter name
271+
* @since 3.2.0
272+
*/
273+
public String getFilterName() {
274+
return getOrDeduceName(getFilter());
275+
}
276+
268277
@Override
269278
public String toString() {
270279
StringBuilder builder = new StringBuilder(getOrDeduceName(this));

0 commit comments

Comments
 (0)