@Test public void notModifiedLastModified() { ZonedDateTime now = ZonedDateTime.now(); ZonedDateTime oneMinuteBeforeNow = now.minus(1, ChronoUnit.MINUTES); RenderingResponse responseMono = RenderingResponse.create("bar") .header(HttpHeaders.LAST_MODIFIED, DateTimeFormatter.RFC_1123_DATE_TIME.format(oneMinuteBeforeNow)) .build() .block(); MockServerHttpRequest request = MockServerHttpRequest.get("http://example.com") .header(HttpHeaders.IF_MODIFIED_SINCE, DateTimeFormatter.RFC_1123_DATE_TIME.format(now)) .build(); MockServerWebExchange exchange = MockServerWebExchange.from(request); responseMono.writeTo(exchange, DefaultServerResponseBuilderTests.EMPTY_CONTEXT); MockServerHttpResponse response = exchange.getResponse(); assertEquals(HttpStatus.NOT_MODIFIED, response.getStatusCode()); StepVerifier.create(response.getBody()) .expectError(IllegalStateException.class) .verify(); }
@Test public void notModifiedEtag() { String etag = "\"foo\""; RenderingResponse responseMono = RenderingResponse.create("bar") .header(HttpHeaders.ETAG, etag) .build() .block(); MockServerHttpRequest request = MockServerHttpRequest.get("http://example.com") .header(HttpHeaders.IF_NONE_MATCH, etag) .build(); MockServerWebExchange exchange = MockServerWebExchange.from(request); responseMono.writeTo(exchange, DefaultServerResponseBuilderTests.EMPTY_CONTEXT); MockServerHttpResponse response = exchange.getResponse(); assertEquals(HttpStatus.NOT_MODIFIED, response.getStatusCode()); StepVerifier.create(response.getBody()) .expectError(IllegalStateException.class) .verify(); }