Support "*" mapping in MockMvc filter registration

Prior to this commit, configuring a Servlet filter in MockMvc with a
defined mapping would only consider "/*" as a catch-all pattern.

This commit relaxes this rule by also accepting "*" mappings.

Closes gh-28041
This commit is contained in:
Chen Jianbin 2022-02-11 23:18:25 +08:00 committed by Brian Clozel
parent 31a62ff8ba
commit 4bf995fa8b
2 changed files with 6 additions and 4 deletions

View File

@ -47,9 +47,11 @@ import org.springframework.web.util.UrlPathHelper;
*/
final class MockMvcFilterDecorator implements Filter {
private static final String EXTENSION_MAPPING_PATTERN = "*.";
private static final String ALL_MAPPING_PATTERN = "*";
private static final String PATH_MAPPING_PATTERN = "/*";
private static final String EXTENSION_MAPPING_PATTERN = ALL_MAPPING_PATTERN + ".";
private static final String PATH_MAPPING_PATTERN = "/" + ALL_MAPPING_PATTERN;
private final Filter delegate;
@ -103,7 +105,7 @@ final class MockMvcFilterDecorator implements Filter {
if (urlPattern.startsWith(EXTENSION_MAPPING_PATTERN)) {
this.endsWithMatches.add(urlPattern.substring(1));
}
else if (urlPattern.equals(PATH_MAPPING_PATTERN)) {
else if (urlPattern.equals(PATH_MAPPING_PATTERN) || urlPattern.equals(ALL_MAPPING_PATTERN)) {
this.startsWithMatches.add("");
}
else if (urlPattern.endsWith(PATH_MAPPING_PATTERN)) {

View File

@ -95,7 +95,7 @@ public class MockMvcFilterDecoratorTests {
@Test
public void matchPathMappingAll() throws Exception {
assertFilterInvoked("/test", "/*");
assertFilterInvoked("/test", "*");
}
@Test