@ -27,6 +27,7 @@ import org.junit.jupiter.api.Named;
@@ -27,6 +27,7 @@ import org.junit.jupiter.api.Named;
import org.junit.jupiter.api.Test ;
import org.springframework.http.HttpMethod ;
import org.springframework.util.ObjectUtils ;
import org.springframework.util.PathMatcher ;
import org.springframework.web.servlet.HandlerInterceptor ;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor ;
@ -52,23 +53,16 @@ class MappedInterceptorTests {
@@ -52,23 +53,16 @@ class MappedInterceptorTests {
return PathPatternsTestUtils . requestArguments ( ) ;
}
private MockHttpServletRequest requestWithMethod ( String method ) {
MockHttpServletRequest request = new MockHttpServletRequest ( ) ;
request . setRequestURI ( "/some/path" ) ;
request . setMethod ( method ) ;
ServletRequestPathUtils . parseAndCache ( request ) ;
return request ;
}
@PathPatternsParameterizedTest
void noPatterns ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , null , null , null , delegate ) ;
MappedInterceptor interceptor = new MappedInterceptor ( null , null , delegate ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo" ) ) ) . isTrue ( ) ;
}
@PathPatternsParameterizedTest
void includePattern ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/foo/*" } , null , null , null , delegate ) ;
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/foo/*" } , null , delegate ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo/bar" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/bar/foo" ) ) ) . isFalse ( ) ;
@ -76,13 +70,13 @@ class MappedInterceptorTests {
@@ -76,13 +70,13 @@ class MappedInterceptorTests {
@PathPatternsParameterizedTest
void includePatternWithMatrixVariables ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/foo*/*" } , null , null , null , delegate ) ;
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/foo*/*" } , null , delegate ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo;q=1/bar;s=2" ) ) ) . isTrue ( ) ;
}
@PathPatternsParameterizedTest
void excludePattern ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , new String [ ] { "/admin/**" } , null , null , delegate ) ;
MappedInterceptor interceptor = new MappedInterceptor ( null , new String [ ] { "/admin/**" } , delegate ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/admin/foo" ) ) ) . isFalse ( ) ;
@ -91,7 +85,7 @@ class MappedInterceptorTests {
@@ -91,7 +85,7 @@ class MappedInterceptorTests {
@PathPatternsParameterizedTest
void includeAndExcludePatterns ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor =
new MappedInterceptor ( new String [ ] { "/**" } , new String [ ] { "/admin/**" } , null , null , delegate ) ;
new MappedInterceptor ( new String [ ] { "/**" } , new String [ ] { "/admin/**" } , delegate ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/admin/foo" ) ) ) . isFalse ( ) ;
@ -99,7 +93,7 @@ class MappedInterceptorTests {
@@ -99,7 +93,7 @@ class MappedInterceptorTests {
@PathPatternsParameterizedTest // gh-26690
void includePatternWithFallbackOnPathMatcher ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/path1/**/path2" } , null , null , null , delegate ) ;
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/path1/**/path2" } , null , delegate ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/path1/foo/bar/path2" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/path1/foo/bar/path3" ) ) ) . isFalse ( ) ;
@ -109,97 +103,65 @@ class MappedInterceptorTests {
@@ -109,97 +103,65 @@ class MappedInterceptorTests {
@SuppressWarnings ( "removal" )
@PathPatternsParameterizedTest
void customPathMatcher ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/foo/[0-9]*" } , null , null , null , delegate ) ;
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/foo/[0-9]*" } , null , delegate ) ;
interceptor . setPathMatcher ( new TestPathMatcher ( ) ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo/123" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo/bar" ) ) ) . isFalse ( ) ;
}
@Test
void includeMethods ( ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , null , new HttpMethod [ ] { HttpMethod . GET } , null , delegate ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "GET" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "HEAD" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "POST" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PUT" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "DELETE" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "CONNECT" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "OPTIONS" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "TRACE" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PATCH" ) ) ) . isFalse ( ) ;
}
@Test
void includeMultipleMethods ( ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , null , new HttpMethod [ ] { HttpMethod . GET , HttpMethod . POST } , null , delegate ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "GET" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "HEAD" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "POST" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PUT" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "DELETE" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "CONNECT" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "OPTIONS" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "TRACE" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PATCH" ) ) ) . isFalse ( ) ;
}
@Test
void excludeMethods ( ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , null , null , new HttpMethod [ ] { HttpMethod . GET } , delegate ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "GET" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "HEAD" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "POST" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PUT" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "DELETE" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "CONNECT" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "OPTIONS" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "TRACE" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PATCH" ) ) ) . isTrue ( ) ;
testHttpMethods (
new HttpMethod [ ] { HttpMethod . GET , HttpMethod . POST } ,
new HttpMethod [ ] { } ,
"GET" , "POST" ) ;
}
@Test
void excludeMultipleMethods ( ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , null , null , new HttpMethod [ ] { HttpMethod . GET , HttpMethod . POST , HttpMethod . OPTIONS } , delegate ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "GET" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "HEAD" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "POST" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PUT" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "DELETE" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "CONNECT" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "OPTIONS" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "TRACE" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PATCH" ) ) ) . isTrue ( ) ;
void excludeMultipleMethods ( ) {
testHttpMethods (
new HttpMethod [ ] { } ,
new HttpMethod [ ] { HttpMethod . GET , HttpMethod . POST , HttpMethod . OPTIONS } ,
"HEAD" , "PUT" , "DELETE" , "TRACE" , "PATCH" ) ;
}
private void testHttpMethods ( HttpMethod [ ] include , HttpMethod [ ] exclude , String . . . expected ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , null , include , exclude , delegate , null ) ;
for ( HttpMethod httpMethod : HttpMethod . values ( ) ) {
boolean matches = ObjectUtils . containsElement ( expected , httpMethod . name ( ) ) ;
assertThat ( interceptor . matches ( requestWithMethod ( httpMethod . name ( ) ) ) )
. as ( "Expected " + httpMethod + " to " + ( matches ? "" : "not " ) + "match" )
. isEqualTo ( matches ) ;
}
}
@Test
void includeMethodsAndExcludeMethods ( ) {
MappedInterceptor interceptor = new MappedInterceptor ( null , null , new HttpMethod [ ] { HttpMethod . GET , HttpMethod . POST } , new HttpMethod [ ] { HttpMethod . OPTIONS } , delegate ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "GET" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "HEAD" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "POST" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PUT" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "DELETE" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "CONNECT" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "OPTIONS" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "TRACE" ) ) ) . isFalse ( ) ;
assertThat ( interceptor . matches ( requestWithMethod ( "PATCH" ) ) ) . isFalse ( ) ;
private MockHttpServletRequest requestWithMethod ( String method ) {
MockHttpServletRequest request = new MockHttpServletRequest ( ) ;
request . setRequestURI ( "/some/path" ) ;
request . setMethod ( method ) ;
ServletRequestPathUtils . parseAndCache ( request ) ;
return request ;
}
@PathPatternsParameterizedTest
void includePatternAndIncludeMethods ( Function < String , MockHttpServletRequest > requestFactory ) {
MappedInterceptor interceptor = new MappedInterceptor ( new String [ ] { "/foo/*" } , null , new HttpMethod [ ] { HttpMethod . GET } , null , delegate ) ;
void includePatternAndHttMethods ( Function < String , MockHttpServletRequest > requestFactory ) {
assertThat ( interceptor . matches ( requestFactory . apply ( "/foo/bar" ) ) ) . isTrue ( ) ;
assertThat ( interceptor . matches ( requestFactory . apply ( "/bar/foo" ) ) ) . isFalse ( ) ;
}
MappedInterceptor getInterceptor = new MappedInterceptor (
new String [ ] { "/foo/*" } , null , new HttpMethod [ ] { HttpMethod . GET } , null , delegate , null ) ;
MappedInterceptor putInterceptor = new MappedInterceptor (
new String [ ] { "/foo/*" } , null , new HttpMethod [ ] { HttpMethod . PUT } , null , delegate , null ) ;
assertThat ( getInterceptor . matches ( requestFactory . apply ( "/foo/bar" ) ) ) . isTrue ( ) ;
assertThat ( putInterceptor . matches ( requestFactory . apply ( "/foo/bar" ) ) ) . isFalse ( ) ;
}
@Test
void preHandle ( ) throws Exception {
HandlerInterceptor delegate = mock ( ) ;
new MappedInterceptor ( null , null , null , null , delegate ) . preHandle ( mock ( ) , mock ( ) , null ) ;
new MappedInterceptor ( null , null , delegate ) . preHandle ( mock ( ) , mock ( ) , null ) ;
then ( delegate ) . should ( ) . preHandle ( any ( HttpServletRequest . class ) , any ( HttpServletResponse . class ) , any ( ) ) ;
}
@ -208,7 +170,7 @@ class MappedInterceptorTests {
@@ -208,7 +170,7 @@ class MappedInterceptorTests {
void postHandle ( ) throws Exception {
HandlerInterceptor delegate = mock ( ) ;
new MappedInterceptor ( null , null , null , null , delegate ) . postHandle ( mock ( ) , mock ( ) , null , mock ( ) ) ;
new MappedInterceptor ( null , null , delegate ) . postHandle ( mock ( ) , mock ( ) , null , mock ( ) ) ;
then ( delegate ) . should ( ) . postHandle ( any ( ) , any ( ) , any ( ) , any ( ) ) ;
}
@ -217,7 +179,7 @@ class MappedInterceptorTests {
@@ -217,7 +179,7 @@ class MappedInterceptorTests {
void afterCompletion ( ) throws Exception {
HandlerInterceptor delegate = mock ( ) ;
new MappedInterceptor ( null , null , null , null , delegate ) . afterCompletion ( mock ( ) , mock ( ) , null , mock ( ) ) ;
new MappedInterceptor ( null , null , delegate ) . afterCompletion ( mock ( ) , mock ( ) , null , mock ( ) ) ;
then ( delegate ) . should ( ) . afterCompletion ( any ( ) , any ( ) , any ( ) , any ( ) ) ;
}