@ -16,9 +16,12 @@
@@ -16,9 +16,12 @@
package org.springframework.web.servlet.mvc ;
import static org.junit.Assert.* ;
import java.util.List ;
import java.util.Properties ;
import org.hamcrest.Matchers ;
import org.junit.Before ;
import org.junit.Test ;
@ -26,10 +29,9 @@ import org.springframework.mock.web.test.MockHttpServletRequest;
@@ -26,10 +29,9 @@ import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.mock.web.test.MockHttpServletResponse ;
import org.springframework.web.servlet.support.WebContentGenerator ;
import static org.junit.Assert.* ;
/ * *
* @author Rick Evans
* @author Brian Clozel
* /
public class WebContentInterceptorTests {
@ -47,19 +49,18 @@ public class WebContentInterceptorTests {
@@ -47,19 +49,18 @@ public class WebContentInterceptorTests {
@Test
public void preHandleSetsCacheSecondsOnMatchingRequest ( ) throws Exception {
public void cacheResourcesConfiguration ( ) throws Exception {
WebContentInterceptor interceptor = new WebContentInterceptor ( ) ;
interceptor . setCacheSeconds ( 10 ) ;
interceptor . preHandle ( request , response , null ) ;
List cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertNotNull ( "'Cache-Control' header not set (must be) : null" , cacheControlHeaders ) ;
assertTrue ( "'Cache-Control' header not set (must be) : empty" , cacheControlHeaders . size ( ) > 0 ) ;
Iterable < String > cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertThat ( cacheControlHeaders , Matchers . hasItem ( "max-age=10" ) ) ;
}
@Test
public void preHandleSetsCacheSecondsOnMatchingRequestWithCustomCacheMapping ( ) throws Exception {
public void mappedCacheConfigurationOverridesGlobal ( ) throws Exception {
Properties mappings = new Properties ( ) ;
mappings . setProperty ( "**/*handle.vm" , "-1" ) ;
@ -70,46 +71,74 @@ public class WebContentInterceptorTests {
@@ -70,46 +71,74 @@ public class WebContentInterceptorTests {
request . setRequestURI ( "http://localhost:7070/example/adminhandle.vm" ) ;
interceptor . preHandle ( request , response , null ) ;
List cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertSame ( "'Cache-Control' header set must be empty" , 0 , cacheControlHeaders . siz e ( ) ) ;
Iterable < String > cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertThat ( cacheControlHeaders , Matchers . emptyIterabl e ( ) ) ;
request . setRequestURI ( "http://localhost:7070/example/bingo.html" ) ;
interceptor . preHandle ( request , response , null ) ;
cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertNotNull ( "'Cache-Control' header not set (must be) : null" , cacheControlHeaders ) ;
assertTrue ( "'Cache-Control' header not set (must be) : empty" , cacheControlHeaders . size ( ) > 0 ) ;
assertThat ( cacheControlHeaders , Matchers . hasItem ( "max-age=10" ) ) ;
}
@Test
public void preHandleSetsCacheSecondsOnMatchingRequestWithNoCaching ( ) throws Exception {
public void preventCacheConfiguration ( ) throws Exception {
WebContentInterceptor interceptor = new WebContentInterceptor ( ) ;
interceptor . setCacheSeconds ( 0 ) ;
interceptor . preHandle ( request , response , null ) ;
List cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertNotNull ( "'Cache-Control' header not set (must be) : null" , cacheControlHeaders ) ;
assertTrue ( "'Cache-Control' header not set (must be) : empty" , cacheControlHeaders . size ( ) > 0 ) ;
Iterable < String > cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertThat ( cacheControlHeaders , Matchers . contains ( "no-store" ) ) ;
}
@Test
public void preHandleSetsCacheSecondsOnMatchingRequestWithCachingDisabled ( ) throws Exception {
public void emptyCacheConfiguration ( ) throws Exception {
WebContentInterceptor interceptor = new WebContentInterceptor ( ) ;
interceptor . setCacheSeconds ( - 1 ) ;
interceptor . preHandle ( request , response , null ) ;
List expiresHeaders = response . getHeaders ( "Expires" ) ;
assertSame ( "'Expires' header set (must not be) : empty" , 0 , expiresHeaders . size ( ) ) ;
List cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertSame ( "'Cache-Control' header set (must not be) : empty" , 0 , cacheControlHeaders . size ( ) ) ;
Iterable < String > expiresHeaders = response . getHeaders ( "Expires" ) ;
assertThat ( expiresHeaders , Matchers . emptyIterable ( ) ) ;
Iterable < String > cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertThat ( cacheControlHeaders , Matchers . emptyIterable ( ) ) ;
}
@SuppressWarnings ( "deprecation" )
@Test
public void http10CachingConfigAndSpecificMapping ( ) throws Exception {
WebContentInterceptor interceptor = new WebContentInterceptor ( ) ;
interceptor . setCacheSeconds ( 0 ) ;
interceptor . setAlwaysMustRevalidate ( true ) ;
Properties mappings = new Properties ( ) ;
mappings . setProperty ( "**/*.cache.html" , "10" ) ;
interceptor . setCacheMappings ( mappings ) ;
request . setRequestURI ( "http://example.org/foo/page.html" ) ;
interceptor . preHandle ( request , response , null ) ;
Iterable < String > expiresHeaders = response . getHeaders ( "Expires" ) ;
assertThat ( expiresHeaders , Matchers . iterableWithSize ( 1 ) ) ;
Iterable < String > cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertThat ( cacheControlHeaders , Matchers . contains ( "no-cache" , "no-store" ) ) ;
Iterable < String > pragmaHeaders = response . getHeaders ( "Pragma" ) ;
assertThat ( pragmaHeaders , Matchers . contains ( "no-cache" ) ) ;
response = new MockHttpServletResponse ( ) ;
request . setRequestURI ( "http://example.org/page.cache.html" ) ;
interceptor . preHandle ( request , response , null ) ;
expiresHeaders = response . getHeaders ( "Expires" ) ;
assertThat ( expiresHeaders , Matchers . iterableWithSize ( 1 ) ) ;
cacheControlHeaders = response . getHeaders ( "Cache-Control" ) ;
assertThat ( cacheControlHeaders , Matchers . contains ( "max-age=10, must-revalidate" ) ) ;
}
@Test ( expected = IllegalArgumentException . class )
public void testSetPathMatcherToNull ( ) throws Exception {
WebContentInterceptor interceptor = new WebContentInterceptor ( ) ;
interceptor . setPathMatcher ( null ) ;
public void throwsExceptionWithNullPathMatcher ( ) throws Exception {
WebContentInterceptor interceptor = new WebContentInterceptor ( ) ;
interceptor . setPathMatcher ( null ) ;
}
}