20
20
import java .util .Arrays ;
21
21
import java .util .Date ;
22
22
import java .util .Locale ;
23
+ import java .util .TimeZone ;
23
24
24
25
import org .junit .Before ;
25
26
import org .junit .Test ;
42
43
@ RunWith (Parameterized .class )
43
44
public class ServletWebRequestHttpMethodsTests {
44
45
46
+ private static final String CURRENT_TIME = "Wed, 09 Apr 2014 09:57:42 GMT" ;
47
+
45
48
private SimpleDateFormat dateFormat ;
46
49
47
50
private MockHttpServletRequest servletRequest ;
@@ -50,6 +53,8 @@ public class ServletWebRequestHttpMethodsTests {
50
53
51
54
private ServletWebRequest request ;
52
55
56
+ private Date currentDate ;
57
+
53
58
@ Parameter
54
59
public String method ;
55
60
@@ -63,33 +68,57 @@ static public Iterable<Object[]> safeMethods() {
63
68
64
69
@ Before
65
70
public void setUp () {
71
+ currentDate = new Date ();
66
72
dateFormat = new SimpleDateFormat ("EEE, dd MMM yyyy HH:mm:ss z" , Locale .US );
73
+ dateFormat .setTimeZone (TimeZone .getTimeZone ("GMT" ));
67
74
servletRequest = new MockHttpServletRequest (method , "http://example.org" );
68
75
servletResponse = new MockHttpServletResponse ();
69
76
request = new ServletWebRequest (servletRequest , servletResponse );
70
77
}
71
78
72
79
@ Test
73
- public void checkNotModifiedTimestamp () {
74
- long currentTime = new Date ().getTime ();
75
- servletRequest .addHeader ("If-Modified-Since" , currentTime );
80
+ public void checkNotModifiedNon2xxStatus () {
81
+ long epochTime = currentDate .getTime ();
82
+ servletRequest .addHeader ("If-Modified-Since" , epochTime );
83
+ servletResponse .setStatus (304 );
84
+
85
+ assertFalse (request .checkNotModified (epochTime ));
86
+ assertEquals (304 , servletResponse .getStatus ());
87
+ assertNull (servletResponse .getHeader ("Last-Modified" ));
88
+ }
89
+
90
+ @ Test
91
+ public void checkNotModifiedHeaderAlreadySet () {
92
+ long epochTime = currentDate .getTime ();
93
+ servletRequest .addHeader ("If-Modified-Since" , epochTime );
94
+ servletResponse .addHeader ("Last-Modified" , CURRENT_TIME );
95
+
96
+ assertFalse (request .checkNotModified (epochTime ));
97
+ assertEquals (200 , servletResponse .getStatus ());
98
+ assertEquals (1 , servletResponse .getHeaders ("Last-Modified" ).size ());
99
+ assertEquals (CURRENT_TIME , servletResponse .getHeader ("Last-Modified" ));
100
+ }
101
+
102
+ @ Test
103
+ public void checkNotModifiedTimestamp () throws Exception {
104
+ long epochTime = currentDate .getTime ();
105
+ servletRequest .addHeader ("If-Modified-Since" , epochTime );
76
106
77
- assertTrue (request .checkNotModified (currentTime ));
107
+ assertTrue (request .checkNotModified (epochTime ));
78
108
79
109
assertEquals (304 , servletResponse .getStatus ());
80
- assertEquals ("" + currentTime , servletResponse .getHeader ("Last-Modified" ));
110
+ assertEquals (dateFormat . format ( currentDate ) , servletResponse .getHeader ("Last-Modified" ));
81
111
}
82
112
83
113
@ Test
84
114
public void checkModifiedTimestamp () {
85
- long currentTime = new Date ().getTime ();
86
- long oneMinuteAgo = currentTime - (1000 * 60 );
115
+ long oneMinuteAgo = currentDate .getTime () - (1000 * 60 );
87
116
servletRequest .addHeader ("If-Modified-Since" , oneMinuteAgo );
88
117
89
- assertFalse (request .checkNotModified (currentTime ));
118
+ assertFalse (request .checkNotModified (currentDate . getTime () ));
90
119
91
120
assertEquals (200 , servletResponse .getStatus ());
92
- assertEquals ("" + currentTime , servletResponse .getHeader ("Last-Modified" ));
121
+ assertEquals (dateFormat . format ( currentDate ) , servletResponse .getHeader ("Last-Modified" ));
93
122
}
94
123
95
124
@ Test
@@ -154,44 +183,43 @@ public void checkNotModifiedWildcardETag() {
154
183
public void checkNotModifiedETagAndTimestamp () {
155
184
String eTag = "\" Foo\" " ;
156
185
servletRequest .addHeader ("If-None-Match" , eTag );
157
- long currentTime = new Date ().getTime ();
158
- servletRequest .addHeader ("If-Modified-Since" , currentTime );
186
+ servletRequest .addHeader ("If-Modified-Since" , currentDate .getTime ());
159
187
160
- assertTrue (request .checkNotModified (eTag , currentTime ));
188
+ assertTrue (request .checkNotModified (eTag , currentDate . getTime () ));
161
189
162
190
assertEquals (304 , servletResponse .getStatus ());
163
191
assertEquals (eTag , servletResponse .getHeader ("ETag" ));
164
- assertEquals ("" + currentTime , servletResponse .getHeader ("Last-Modified" ));
192
+ assertEquals (dateFormat . format ( currentDate ) , servletResponse .getHeader ("Last-Modified" ));
165
193
}
166
194
167
195
@ Test
168
196
public void checkNotModifiedETagAndModifiedTimestamp () {
169
197
String eTag = "\" Foo\" " ;
170
198
servletRequest .addHeader ("If-None-Match" , eTag );
171
- long currentTime = new Date () .getTime ();
172
- long oneMinuteAgo = currentTime - (1000 * 60 );
199
+ long currentEpoch = currentDate .getTime ();
200
+ long oneMinuteAgo = currentEpoch - (1000 * 60 );
173
201
servletRequest .addHeader ("If-Modified-Since" , oneMinuteAgo );
174
202
175
- assertFalse (request .checkNotModified (eTag , currentTime ));
203
+ assertFalse (request .checkNotModified (eTag , currentEpoch ));
176
204
177
205
assertEquals (200 , servletResponse .getStatus ());
178
206
assertEquals (eTag , servletResponse .getHeader ("ETag" ));
179
- assertEquals ("" + currentTime , servletResponse .getHeader ("Last-Modified" ));
207
+ assertEquals (dateFormat . format ( currentDate ) , servletResponse .getHeader ("Last-Modified" ));
180
208
}
181
209
182
210
@ Test
183
- public void checkModifiedETagAndNotModifiedTimestamp () {
211
+ public void checkModifiedETagAndNotModifiedTimestamp () throws Exception {
184
212
String currentETag = "\" Foo\" " ;
185
213
String oldEtag = "\" Bar\" " ;
186
214
servletRequest .addHeader ("If-None-Match" , oldEtag );
187
- long currentTime = new Date () .getTime ();
188
- servletRequest .addHeader ("If-Modified-Since" , currentTime );
215
+ long epochTime = currentDate .getTime ();
216
+ servletRequest .addHeader ("If-Modified-Since" , epochTime );
189
217
190
- assertFalse (request .checkNotModified (currentETag , currentTime ));
218
+ assertFalse (request .checkNotModified (currentETag , epochTime ));
191
219
192
220
assertEquals (200 , servletResponse .getStatus ());
193
221
assertEquals (currentETag , servletResponse .getHeader ("ETag" ));
194
- assertEquals ("" + currentTime , servletResponse .getHeader ("Last-Modified" ));
222
+ assertEquals (dateFormat . format ( currentDate ) , servletResponse .getHeader ("Last-Modified" ));
195
223
}
196
224
197
225
@ Test
@@ -231,26 +259,26 @@ public void checkNotModifiedMultipleETags() {
231
259
232
260
@ Test
233
261
public void checkNotModifiedTimestampWithLengthPart () throws Exception {
234
- long currentTime = dateFormat .parse ("Wed, 09 Apr 2014 09:57:42 GMT" ).getTime ();
262
+ long epochTime = dateFormat .parse (CURRENT_TIME ).getTime ();
235
263
servletRequest .setMethod ("GET" );
236
264
servletRequest .addHeader ("If-Modified-Since" , "Wed, 09 Apr 2014 09:57:42 GMT; length=13774" );
237
265
238
- assertTrue (request .checkNotModified (currentTime ));
266
+ assertTrue (request .checkNotModified (epochTime ));
239
267
240
268
assertEquals (304 , servletResponse .getStatus ());
241
- assertEquals ("" + currentTime , servletResponse .getHeader ("Last-Modified" ));
269
+ assertEquals (CURRENT_TIME , servletResponse .getHeader ("Last-Modified" ));
242
270
}
243
271
244
272
@ Test
245
273
public void checkModifiedTimestampWithLengthPart () throws Exception {
246
- long currentTime = dateFormat .parse ("Wed, 09 Apr 2014 09:57:42 GMT" ).getTime ();
274
+ long epochTime = dateFormat .parse (CURRENT_TIME ).getTime ();
247
275
servletRequest .setMethod ("GET" );
248
276
servletRequest .addHeader ("If-Modified-Since" , "Wed, 08 Apr 2014 09:57:42 GMT; length=13774" );
249
277
250
- assertFalse (request .checkNotModified (currentTime ));
278
+ assertFalse (request .checkNotModified (epochTime ));
251
279
252
280
assertEquals (200 , servletResponse .getStatus ());
253
- assertEquals ("" + currentTime , servletResponse .getHeader ("Last-Modified" ));
281
+ assertEquals (CURRENT_TIME , servletResponse .getHeader ("Last-Modified" ));
254
282
}
255
283
256
284
}
0 commit comments