16
16
17
17
package org .springframework .web .servlet .mvc ;
18
18
19
+ import static org .junit .Assert .*;
20
+
19
21
import java .util .List ;
20
22
import java .util .Properties ;
21
23
24
+ import org .hamcrest .Matchers ;
22
25
import org .junit .Before ;
23
26
import org .junit .Test ;
24
27
25
28
import org .springframework .mock .web .test .MockHttpServletRequest ;
26
29
import org .springframework .mock .web .test .MockHttpServletResponse ;
27
30
import org .springframework .web .servlet .support .WebContentGenerator ;
28
31
29
- import static org .junit .Assert .*;
30
-
31
32
/**
32
33
* @author Rick Evans
34
+ * @author Brian Clozel
33
35
*/
34
36
public class WebContentInterceptorTests {
35
37
@@ -47,19 +49,18 @@ public void setUp() throws Exception {
47
49
48
50
49
51
@ Test
50
- public void preHandleSetsCacheSecondsOnMatchingRequest () throws Exception {
52
+ public void cacheResourcesConfiguration () throws Exception {
51
53
WebContentInterceptor interceptor = new WebContentInterceptor ();
52
54
interceptor .setCacheSeconds (10 );
53
55
54
56
interceptor .preHandle (request , response , null );
55
57
56
- List cacheControlHeaders = response .getHeaders ("Cache-Control" );
57
- assertNotNull ("'Cache-Control' header not set (must be) : null" , cacheControlHeaders );
58
- assertTrue ("'Cache-Control' header not set (must be) : empty" , cacheControlHeaders .size () > 0 );
58
+ Iterable <String > cacheControlHeaders = response .getHeaders ("Cache-Control" );
59
+ assertThat (cacheControlHeaders , Matchers .hasItem ("max-age=10" ));
59
60
}
60
61
61
62
@ Test
62
- public void preHandleSetsCacheSecondsOnMatchingRequestWithCustomCacheMapping () throws Exception {
63
+ public void mappedCacheConfigurationOverridesGlobal () throws Exception {
63
64
Properties mappings = new Properties ();
64
65
mappings .setProperty ("**/*handle.vm" , "-1" );
65
66
@@ -70,46 +71,74 @@ public void preHandleSetsCacheSecondsOnMatchingRequestWithCustomCacheMapping() t
70
71
request .setRequestURI ("http://localhost:7070/example/adminhandle.vm" );
71
72
interceptor .preHandle (request , response , null );
72
73
73
- List cacheControlHeaders = response .getHeaders ("Cache-Control" );
74
- assertSame ( "'Cache-Control' header set must be empty" , 0 , cacheControlHeaders . size ());
74
+ Iterable < String > cacheControlHeaders = response .getHeaders ("Cache-Control" );
75
+ assertThat ( cacheControlHeaders , Matchers . emptyIterable ());
75
76
76
77
request .setRequestURI ("http://localhost:7070/example/bingo.html" );
77
78
interceptor .preHandle (request , response , null );
78
79
79
80
cacheControlHeaders = response .getHeaders ("Cache-Control" );
80
- assertNotNull ("'Cache-Control' header not set (must be) : null" , cacheControlHeaders );
81
- assertTrue ("'Cache-Control' header not set (must be) : empty" , cacheControlHeaders .size () > 0 );
81
+ assertThat (cacheControlHeaders , Matchers .hasItem ("max-age=10" ));
82
82
}
83
83
84
84
@ Test
85
- public void preHandleSetsCacheSecondsOnMatchingRequestWithNoCaching () throws Exception {
85
+ public void preventCacheConfiguration () throws Exception {
86
86
WebContentInterceptor interceptor = new WebContentInterceptor ();
87
87
interceptor .setCacheSeconds (0 );
88
88
89
89
interceptor .preHandle (request , response , null );
90
90
91
- List cacheControlHeaders = response .getHeaders ("Cache-Control" );
92
- assertNotNull ("'Cache-Control' header not set (must be) : null" , cacheControlHeaders );
93
- assertTrue ("'Cache-Control' header not set (must be) : empty" , cacheControlHeaders .size () > 0 );
91
+ Iterable <String > cacheControlHeaders = response .getHeaders ("Cache-Control" );
92
+ assertThat (cacheControlHeaders , Matchers .contains ("no-store" ));
94
93
}
95
94
96
95
@ Test
97
- public void preHandleSetsCacheSecondsOnMatchingRequestWithCachingDisabled () throws Exception {
96
+ public void emptyCacheConfiguration () throws Exception {
98
97
WebContentInterceptor interceptor = new WebContentInterceptor ();
99
98
interceptor .setCacheSeconds (-1 );
100
99
101
100
interceptor .preHandle (request , response , null );
102
101
103
- List expiresHeaders = response .getHeaders ("Expires" );
104
- assertSame ("'Expires' header set (must not be) : empty" , 0 , expiresHeaders .size ());
105
- List cacheControlHeaders = response .getHeaders ("Cache-Control" );
106
- assertSame ("'Cache-Control' header set (must not be) : empty" , 0 , cacheControlHeaders .size ());
102
+ Iterable <String > expiresHeaders = response .getHeaders ("Expires" );
103
+ assertThat (expiresHeaders , Matchers .emptyIterable ());
104
+ Iterable <String > cacheControlHeaders = response .getHeaders ("Cache-Control" );
105
+ assertThat (cacheControlHeaders , Matchers .emptyIterable ());
106
+ }
107
+
108
+ @ SuppressWarnings ("deprecation" )
109
+ @ Test
110
+ public void http10CachingConfigAndSpecificMapping () throws Exception {
111
+ WebContentInterceptor interceptor = new WebContentInterceptor ();
112
+ interceptor .setCacheSeconds (0 );
113
+ interceptor .setAlwaysMustRevalidate (true );
114
+ Properties mappings = new Properties ();
115
+ mappings .setProperty ("**/*.cache.html" , "10" );
116
+ interceptor .setCacheMappings (mappings );
117
+
118
+ request .setRequestURI ("http://example.org/foo/page.html" );
119
+ interceptor .preHandle (request , response , null );
120
+
121
+ Iterable <String > expiresHeaders = response .getHeaders ("Expires" );
122
+ assertThat (expiresHeaders , Matchers .iterableWithSize (1 ));
123
+ Iterable <String > cacheControlHeaders = response .getHeaders ("Cache-Control" );
124
+ assertThat (cacheControlHeaders , Matchers .contains ("no-cache" , "no-store" ));
125
+ Iterable <String > pragmaHeaders = response .getHeaders ("Pragma" );
126
+ assertThat (pragmaHeaders , Matchers .contains ("no-cache" ));
127
+
128
+ response = new MockHttpServletResponse ();
129
+ request .setRequestURI ("http://example.org/page.cache.html" );
130
+ interceptor .preHandle (request , response , null );
131
+
132
+ expiresHeaders = response .getHeaders ("Expires" );
133
+ assertThat (expiresHeaders , Matchers .iterableWithSize (1 ));
134
+ cacheControlHeaders = response .getHeaders ("Cache-Control" );
135
+ assertThat (cacheControlHeaders , Matchers .contains ("max-age=10, must-revalidate" ));
107
136
}
108
137
109
138
@ Test (expected = IllegalArgumentException .class )
110
- public void testSetPathMatcherToNull () throws Exception {
111
- WebContentInterceptor interceptor = new WebContentInterceptor ();
112
- interceptor .setPathMatcher (null );
139
+ public void throwsExceptionWithNullPathMatcher () throws Exception {
140
+ WebContentInterceptor interceptor = new WebContentInterceptor ();
141
+ interceptor .setPathMatcher (null );
113
142
}
114
143
115
144
}
0 commit comments