ServletWebRequestHttpMethodsTests.java (spring-framework-5.3.23) | : | ServletWebRequestHttpMethodsTests.java (spring-framework-5.3.24) | ||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
package org.springframework.web.context.request; | package org.springframework.web.context.request; | |||
import java.lang.annotation.ElementType; | import java.lang.annotation.ElementType; | |||
import java.lang.annotation.Retention; | import java.lang.annotation.Retention; | |||
import java.lang.annotation.RetentionPolicy; | import java.lang.annotation.RetentionPolicy; | |||
import java.lang.annotation.Target; | import java.lang.annotation.Target; | |||
import java.time.ZonedDateTime; | import java.time.ZonedDateTime; | |||
import java.util.Date; | import java.util.Date; | |||
import org.junit.jupiter.api.Test; | ||||
import org.junit.jupiter.params.ParameterizedTest; | import org.junit.jupiter.params.ParameterizedTest; | |||
import org.junit.jupiter.params.provider.ValueSource; | import org.junit.jupiter.params.provider.ValueSource; | |||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest; | import org.springframework.web.testfixture.servlet.MockHttpServletRequest; | |||
import org.springframework.web.testfixture.servlet.MockHttpServletResponse; | import org.springframework.web.testfixture.servlet.MockHttpServletResponse; | |||
import static java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME; | import static java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME; | |||
import static org.assertj.core.api.Assertions.assertThat; | import static org.assertj.core.api.Assertions.assertThat; | |||
/** | /** | |||
skipping to change at line 287 | skipping to change at line 288 | |||
String etag = "\"Bar\""; | String etag = "\"Bar\""; | |||
String multipleETags = String.format("\"Foo\", %s", etag); | String multipleETags = String.format("\"Foo\", %s", etag); | |||
servletRequest.addHeader("If-None-Match", multipleETags); | servletRequest.addHeader("If-None-Match", multipleETags); | |||
assertThat(request.checkNotModified(etag)).isTrue(); | assertThat(request.checkNotModified(etag)).isTrue(); | |||
assertThat(servletResponse.getStatus()).isEqualTo(304); | assertThat(servletResponse.getStatus()).isEqualTo(304); | |||
assertThat(servletResponse.getHeader("ETag")).isEqualTo(etag); | assertThat(servletResponse.getHeader("ETag")).isEqualTo(etag); | |||
} | } | |||
@ParameterizedHttpMethodTest | @Test | |||
void checkNotModifiedTimestampWithLengthPart(String method) { | void checkNotModifiedTimestampWithLengthPart() { | |||
setUpRequest(method); | setUpRequest("GET"); | |||
long epochTime = ZonedDateTime.parse(CURRENT_TIME, RFC_1123_DATE_ TIME).toInstant().toEpochMilli(); | long epochTime = ZonedDateTime.parse(CURRENT_TIME, RFC_1123_DATE_ TIME).toInstant().toEpochMilli(); | |||
servletRequest.setMethod("GET"); | servletRequest.setMethod("GET"); | |||
servletRequest.addHeader("If-Modified-Since", "Wed, 09 Apr 2014 0 9:57:42 GMT; length=13774"); | servletRequest.addHeader("If-Modified-Since", "Wed, 09 Apr 2014 0 9:57:42 GMT; length=13774"); | |||
assertThat(request.checkNotModified(epochTime)).isTrue(); | assertThat(request.checkNotModified(epochTime)).isTrue(); | |||
assertThat(servletResponse.getStatus()).isEqualTo(304); | assertThat(servletResponse.getStatus()).isEqualTo(304); | |||
assertThat(servletResponse.getDateHeader("Last-Modified") / 1000) .isEqualTo(epochTime / 1000); | assertThat(servletResponse.getDateHeader("Last-Modified") / 1000) .isEqualTo(epochTime / 1000); | |||
} | } | |||
@ParameterizedHttpMethodTest | @Test | |||
void checkModifiedTimestampWithLengthPart(String method) { | void checkModifiedTimestampWithLengthPart() { | |||
setUpRequest(method); | setUpRequest("GET"); | |||
long epochTime = ZonedDateTime.parse(CURRENT_TIME, RFC_1123_DATE_ TIME).toInstant().toEpochMilli(); | long epochTime = ZonedDateTime.parse(CURRENT_TIME, RFC_1123_DATE_ TIME).toInstant().toEpochMilli(); | |||
servletRequest.setMethod("GET"); | ||||
servletRequest.addHeader("If-Modified-Since", "Wed, 08 Apr 2014 0 9:57:42 GMT; length=13774"); | servletRequest.addHeader("If-Modified-Since", "Wed, 08 Apr 2014 0 9:57:42 GMT; length=13774"); | |||
assertThat(request.checkNotModified(epochTime)).isFalse(); | assertThat(request.checkNotModified(epochTime)).isFalse(); | |||
assertThat(servletResponse.getStatus()).isEqualTo(200); | assertThat(servletResponse.getStatus()).isEqualTo(200); | |||
assertThat(servletResponse.getDateHeader("Last-Modified") / 1000) .isEqualTo(epochTime / 1000); | assertThat(servletResponse.getDateHeader("Last-Modified") / 1000) .isEqualTo(epochTime / 1000); | |||
} | } | |||
@ParameterizedHttpMethodTest | @Test | |||
void checkNotModifiedTimestampConditionalPut(String method) { | void checkNotModifiedTimestampConditionalPut() { | |||
setUpRequest(method); | setUpRequest("PUT"); | |||
long currentEpoch = currentDate.getTime(); | long currentEpoch = currentDate.getTime(); | |||
long oneMinuteAgo = currentEpoch - (1000 * 60); | long oneMinuteAgo = currentEpoch - (1000 * 60); | |||
servletRequest.setMethod("PUT"); | ||||
servletRequest.addHeader("If-UnModified-Since", currentEpoch); | servletRequest.addHeader("If-UnModified-Since", currentEpoch); | |||
assertThat(request.checkNotModified(oneMinuteAgo)).isFalse(); | assertThat(request.checkNotModified(oneMinuteAgo)).isFalse(); | |||
assertThat(servletResponse.getStatus()).isEqualTo(200); | assertThat(servletResponse.getStatus()).isEqualTo(200); | |||
assertThat(servletResponse.getHeader("Last-Modified")).isNull(); | assertThat(servletResponse.getHeader("Last-Modified")).isNull(); | |||
} | } | |||
@ParameterizedHttpMethodTest | @Test | |||
void checkNotModifiedTimestampConditionalPutConflict(String method) { | void checkNotModifiedTimestampConditionalPutConflict() { | |||
setUpRequest(method); | setUpRequest("PUT"); | |||
long currentEpoch = currentDate.getTime(); | long currentEpoch = currentDate.getTime(); | |||
long oneMinuteAgo = currentEpoch - (1000 * 60); | long oneMinuteAgo = currentEpoch - (1000 * 60); | |||
servletRequest.setMethod("PUT"); | ||||
servletRequest.addHeader("If-UnModified-Since", oneMinuteAgo); | servletRequest.addHeader("If-UnModified-Since", oneMinuteAgo); | |||
assertThat(request.checkNotModified(currentEpoch)).isTrue(); | assertThat(request.checkNotModified(currentEpoch)).isTrue(); | |||
assertThat(servletResponse.getStatus()).isEqualTo(412); | assertThat(servletResponse.getStatus()).isEqualTo(412); | |||
assertThat(servletResponse.getHeader("Last-Modified")).isNull(); | assertThat(servletResponse.getHeader("Last-Modified")).isNull(); | |||
} | } | |||
@ParameterizedHttpMethodTest | ||||
void checkNotModifiedConditionalGet(String method) { | ||||
setUpRequest(method); | ||||
long currentEpoch = currentDate.getTime(); | ||||
long oneMinuteAgo = currentEpoch - (1000 * 60); | ||||
servletRequest.addHeader("If-UnModified-Since", currentEpoch); | ||||
assertThat(request.checkNotModified(oneMinuteAgo)).isFalse(); | ||||
assertThat(servletResponse.getStatus()).isEqualTo(200); | ||||
assertThat(servletResponse.getDateHeader("Last-Modified") / 1000) | ||||
.isEqualTo(oneMinuteAgo / 1000); | ||||
} | ||||
private void setUpRequest(String method) { | private void setUpRequest(String method) { | |||
this.servletRequest.setMethod(method); | this.servletRequest.setMethod(method); | |||
this.servletRequest.setRequestURI("https://example.org"); | this.servletRequest.setRequestURI("https://example.org"); | |||
} | } | |||
@Retention(RetentionPolicy.RUNTIME) | @Retention(RetentionPolicy.RUNTIME) | |||
@Target(ElementType.METHOD) | @Target(ElementType.METHOD) | |||
@ParameterizedTest(name = "[{index}] {0}") | @ParameterizedTest(name = "[{index}] {0}") | |||
@ValueSource(strings = { "GET", "HEAD" }) | @ValueSource(strings = { "GET", "HEAD" }) | |||
@interface ParameterizedHttpMethodTest { | @interface ParameterizedHttpMethodTest { | |||
End of changes. 9 change blocks. | ||||
15 lines changed or deleted | 26 lines changed or added |