Add test for dispatcher types behavior

See gh-16500
This commit is contained in:
Moritz Halbritter
2025-04-08 10:45:34 +02:00
parent d5460697b4
commit 62e145e7fd

View File

@@ -16,6 +16,8 @@
package org.springframework.boot.web.servlet;
import java.util.EnumSet;
import jakarta.servlet.DispatcherType;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
@@ -24,6 +26,8 @@ import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSessionIdListener;
import org.assertj.core.api.ThrowingConsumer;
import org.junit.jupiter.api.Test;
@@ -34,6 +38,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.filter.OncePerRequestFilter;
import static org.assertj.core.api.Assertions.assertThat;
@@ -139,6 +144,17 @@ class ServletContextInitializerBeansTests {
});
}
@Test
@SuppressWarnings("unchecked")
void shouldApplyFilterRegistrationAnnotationWithDefaultDispatcherTypes() {
load(FilterConfigurationWithAnnotationAndDefaultDispatcherTypes.class);
ServletContextInitializerBeans initializerBeans = new ServletContextInitializerBeans(
this.context.getBeanFactory(), TestServletContextInitializer.class);
assertThatSingleRegistration(initializerBeans, FilterRegistrationBean.class,
(filterRegistrationBean) -> assertThat(filterRegistrationBean.determineDispatcherTypes())
.containsExactlyElementsOf(EnumSet.allOf(DispatcherType.class)));
}
@Test
void shouldApplyOrderFromBean() {
load(OrderedServletConfiguration.class);
@@ -287,6 +303,26 @@ class ServletContextInitializerBeansTests {
}
@Configuration(proxyBeanMethods = false)
static class FilterConfigurationWithAnnotationAndDefaultDispatcherTypes {
@Bean
@FilterRegistration(name = "test")
TestOncePerRequestFilter testFilter() {
return new TestOncePerRequestFilter();
}
static class TestOncePerRequestFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) {
}
}
}
@Configuration(proxyBeanMethods = false)
static class MultipleInterfacesConfiguration {