@ -16,11 +16,11 @@
@@ -16,11 +16,11 @@
package org.springframework.web.context.request ;
import java.text.SimpleDateFormat ;
import java.time.Instant ;
import java.time.ZoneId ;
import java.time.ZonedDateTime ;
import java.util.Arrays ;
import java.util.Date ;
import java.util.Locale ;
import java.util.TimeZone ;
import org.junit.Before ;
import org.junit.Test ;
@ -32,6 +32,7 @@ import org.junit.runners.Parameterized.Parameters;
@@ -32,6 +32,7 @@ import org.junit.runners.Parameterized.Parameters;
import org.springframework.mock.web.test.MockHttpServletRequest ;
import org.springframework.mock.web.test.MockHttpServletResponse ;
import static java.time.format.DateTimeFormatter.* ;
import static org.junit.Assert.* ;
/ * *
@ -43,9 +44,9 @@ import static org.junit.Assert.*;
@@ -43,9 +44,9 @@ import static org.junit.Assert.*;
@RunWith ( Parameterized . class )
public class ServletWebRequestHttpMethodsTests {
private static final String CURRENT_TIME = "Wed, 09 Apr 2014 09:57:42 GMT" ;
private static final ZoneId GMT = ZoneId . of ( "GMT" ) ;
private SimpleDateFormat dateFormat ;
private static final String CURRENT_TIME = "Wed, 9 Apr 2014 09:57:42 GMT" ;
private MockHttpServletRequest servletRequest ;
@ -70,8 +71,6 @@ public class ServletWebRequestHttpMethodsTests {
@@ -70,8 +71,6 @@ public class ServletWebRequestHttpMethodsTests {
@Before
public void setup ( ) {
currentDate = new Date ( ) ;
dateFormat = new SimpleDateFormat ( "EEE, dd MMM yyyy HH:mm:ss z" , Locale . US ) ;
dateFormat . setTimeZone ( TimeZone . getTimeZone ( "GMT" ) ) ;
servletRequest = new MockHttpServletRequest ( method , "http://example.org" ) ;
servletResponse = new MockHttpServletResponse ( ) ;
request = new ServletWebRequest ( servletRequest , servletResponse ) ;
@ -127,7 +126,7 @@ public class ServletWebRequestHttpMethodsTests {
@@ -127,7 +126,7 @@ public class ServletWebRequestHttpMethodsTests {
assertTrue ( request . checkNotModified ( epochTime ) ) ;
assertEquals ( 304 , servletResponse . getStatus ( ) ) ;
assertEquals ( dateFormat . format ( epochTime ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
assertEquals ( RFC_1123_DATE_TIME . format ( Instant . ofEpochMilli ( epochTime ) . atZone ( GMT ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
}
@Test
@ -138,7 +137,7 @@ public class ServletWebRequestHttpMethodsTests {
@@ -138,7 +137,7 @@ public class ServletWebRequestHttpMethodsTests {
assertFalse ( request . checkNotModified ( currentDate . getTime ( ) ) ) ;
assertEquals ( 200 , servletResponse . getStatus ( ) ) ;
assertEquals ( dateFormat . format ( currentDate . getTime ( ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
assertEquals ( RFC_1123_DATE_TIME . format ( currentDate . toInstant ( ) . atZone ( GMT ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
}
@Test
@ -221,7 +220,7 @@ public class ServletWebRequestHttpMethodsTests {
@@ -221,7 +220,7 @@ public class ServletWebRequestHttpMethodsTests {
assertEquals ( 304 , servletResponse . getStatus ( ) ) ;
assertEquals ( eTag , servletResponse . getHeader ( "ETag" ) ) ;
assertEquals ( dateFormat . format ( currentDate . getTime ( ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
assertEquals ( RFC_1123_DATE_TIME . format ( currentDate . toInstant ( ) . atZone ( GMT ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
}
@Test // SPR-14224
@ -236,7 +235,7 @@ public class ServletWebRequestHttpMethodsTests {
@@ -236,7 +235,7 @@ public class ServletWebRequestHttpMethodsTests {
assertEquals ( 304 , servletResponse . getStatus ( ) ) ;
assertEquals ( eTag , servletResponse . getHeader ( "ETag" ) ) ;
assertEquals ( dateFormat . format ( currentEpoch ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
assertEquals ( RFC_1123_DATE_TIME . format ( Instant . ofEpochMilli ( currentEpoch ) . atZone ( GMT ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
}
@Test
@ -251,7 +250,7 @@ public class ServletWebRequestHttpMethodsTests {
@@ -251,7 +250,7 @@ public class ServletWebRequestHttpMethodsTests {
assertEquals ( 200 , servletResponse . getStatus ( ) ) ;
assertEquals ( currentETag , servletResponse . getHeader ( "ETag" ) ) ;
assertEquals ( dateFormat . format ( epochTime ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
assertEquals ( RFC_1123_DATE_TIME . format ( Instant . ofEpochMilli ( epochTime ) . atZone ( GMT ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
}
@Test
@ -291,26 +290,26 @@ public class ServletWebRequestHttpMethodsTests {
@@ -291,26 +290,26 @@ public class ServletWebRequestHttpMethodsTests {
@Test
public void checkNotModifiedTimestampWithLengthPart ( ) throws Exception {
long epochTime = dateFormat . parse ( CURRENT_TIME ) . getTime ( ) ;
long epochTime = ZonedDateTime . parse ( CURRENT_TIME , RFC_1123_DATE_TIME ) . toInstant ( ) . toEpochMilli ( ) ;
servletRequest . setMethod ( "GET" ) ;
servletRequest . addHeader ( "If-Modified-Since" , "Wed, 09 Apr 2014 09:57:42 GMT; length=13774" ) ;
assertTrue ( request . checkNotModified ( epochTime ) ) ;
assertEquals ( 304 , servletResponse . getStatus ( ) ) ;
assertEquals ( dateFormat . format ( epochTime ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
assertEquals ( RFC_1123_DATE_TIME . format ( Instant . ofEpochMilli ( epochTime ) . atZone ( GMT ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
}
@Test
public void checkModifiedTimestampWithLengthPart ( ) throws Exception {
long epochTime = dateFormat . parse ( CURRENT_TIME ) . getTime ( ) ;
long epochTime = ZonedDateTime . parse ( CURRENT_TIME , RFC_1123_DATE_TIME ) . toInstant ( ) . toEpochMilli ( ) ;
servletRequest . setMethod ( "GET" ) ;
servletRequest . addHeader ( "If-Modified-Since" , "Wed, 08 Apr 2014 09:57:42 GMT; length=13774" ) ;
assertFalse ( request . checkNotModified ( epochTime ) ) ;
assertEquals ( 200 , servletResponse . getStatus ( ) ) ;
assertEquals ( dateFormat . format ( epochTime ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
assertEquals ( RFC_1123_DATE_TIME . format ( Instant . ofEpochMilli ( epochTime ) . atZone ( GMT ) ) , servletResponse . getHeader ( "Last-Modified" ) ) ;
}
@Test