diff --git a/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java b/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java index 3156b8b3476..a36cd55a62d 100644 --- a/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java +++ b/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,32 +17,33 @@ package org.springframework.web.filter; import java.io.InputStream; -import java.nio.charset.StandardCharsets; import jakarta.servlet.FilterChain; import jakarta.servlet.http.HttpServletResponse; import org.junit.jupiter.api.Test; -import org.springframework.http.MediaType; import org.springframework.util.FileCopyUtils; import org.springframework.web.testfixture.servlet.MockHttpServletRequest; import org.springframework.web.testfixture.servlet.MockHttpServletResponse; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.http.MediaType.TEXT_PLAIN_VALUE; /** * Tests for {@link ShallowEtagHeaderFilter}. + * * @author Arjen Poutsma * @author Brian Clozel * @author Juergen Hoeller */ -public class ShallowEtagHeaderFilterTests { +class ShallowEtagHeaderFilterTests { private final ShallowEtagHeaderFilter filter = new ShallowEtagHeaderFilter(); @Test - public void isEligibleForEtag() { + void isEligibleForEtag() { MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -61,15 +62,15 @@ public class ShallowEtagHeaderFilterTests { } @Test - public void filterNoMatch() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterNoMatch() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); - final byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); ((HttpServletResponse) filterResponse).setStatus(HttpServletResponse.SC_OK); - filterResponse.setContentType(MediaType.TEXT_PLAIN_VALUE); + filterResponse.setContentType(TEXT_PLAIN_VALUE); FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); }; filter.doFilter(request, response, filterChain); @@ -77,21 +78,21 @@ public class ShallowEtagHeaderFilterTests { assertThat(response.getStatus()).as("Invalid status").isEqualTo(200); assertThat(response.getHeader("ETag")).as("Invalid ETag").isEqualTo("\"0b10a8db164e0754105b7a99be72e3fe5\""); assertThat(response.getContentLength()).as("Invalid Content-Length header").isGreaterThan(0); - assertThat(response.getContentType()).as("Invalid Content-Type header").isEqualTo(MediaType.TEXT_PLAIN_VALUE); + assertThat(response.getContentType()).as("Invalid Content-Type header").isEqualTo(TEXT_PLAIN_VALUE); assertThat(response.getContentAsByteArray()).as("Invalid content").isEqualTo(responseBody); } @Test - public void filterNoMatchWeakETag() throws Exception { + void filterNoMatchWeakETag() throws Exception { this.filter.setWriteWeakETag(true); - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); - final byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); ((HttpServletResponse) filterResponse).setStatus(HttpServletResponse.SC_OK); - filterResponse.setContentType(MediaType.TEXT_PLAIN_VALUE); + filterResponse.setContentType(TEXT_PLAIN_VALUE); FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); }; filter.doFilter(request, response, filterChain); @@ -99,22 +100,22 @@ public class ShallowEtagHeaderFilterTests { assertThat(response.getStatus()).as("Invalid status").isEqualTo(200); assertThat(response.getHeader("ETag")).as("Invalid ETag").isEqualTo("W/\"0b10a8db164e0754105b7a99be72e3fe5\""); assertThat(response.getContentLength()).as("Invalid Content-Length header").isGreaterThan(0); - assertThat(response.getContentType()).as("Invalid Content-Type header").isEqualTo(MediaType.TEXT_PLAIN_VALUE); + assertThat(response.getContentType()).as("Invalid Content-Type header").isEqualTo(TEXT_PLAIN_VALUE); assertThat(response.getContentAsByteArray()).as("Invalid content").isEqualTo(responseBody); } @Test - public void filterMatch() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterMatch() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); String etag = "\"0b10a8db164e0754105b7a99be72e3fe5\""; request.addHeader("If-None-Match", etag); MockHttpServletResponse response = new MockHttpServletResponse(); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); - byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); filterResponse.setContentLength(responseBody.length); - filterResponse.setContentType(MediaType.TEXT_PLAIN_VALUE); + filterResponse.setContentType(TEXT_PLAIN_VALUE); FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); }; filter.doFilter(request, response, filterChain); @@ -123,20 +124,19 @@ public class ShallowEtagHeaderFilterTests { assertThat(response.getHeader("ETag")).as("Invalid ETag").isEqualTo("\"0b10a8db164e0754105b7a99be72e3fe5\""); assertThat(response.containsHeader("Content-Length")).as("Response has Content-Length header").isFalse(); assertThat(response.containsHeader("Content-Type")).as("Response has Content-Type header").isFalse(); - byte[] expecteds = new byte[0]; - assertThat(response.getContentAsByteArray()).as("Invalid content").isEqualTo(expecteds); + assertThat(response.getContentAsByteArray()).as("Invalid content").isEmpty(); } @Test - public void filterMatchWeakEtag() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterMatchWeakEtag() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); String etag = "\"0b10a8db164e0754105b7a99be72e3fe5\""; request.addHeader("If-None-Match", "W/" + etag); MockHttpServletResponse response = new MockHttpServletResponse(); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); - byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); filterResponse.setContentLength(responseBody.length); }; @@ -145,13 +145,12 @@ public class ShallowEtagHeaderFilterTests { assertThat(response.getStatus()).as("Invalid status").isEqualTo(304); assertThat(response.getHeader("ETag")).as("Invalid ETag").isEqualTo("\"0b10a8db164e0754105b7a99be72e3fe5\""); assertThat(response.containsHeader("Content-Length")).as("Response has Content-Length header").isFalse(); - byte[] expecteds = new byte[0]; - assertThat(response.getContentAsByteArray()).as("Invalid content").isEqualTo(expecteds); + assertThat(response.getContentAsByteArray()).as("Invalid content").isEmpty(); } @Test - public void filterWriter() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterWriter() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); String etag = "\"0b10a8db164e0754105b7a99be72e3fe5\""; request.addHeader("If-None-Match", etag); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -167,16 +166,15 @@ public class ShallowEtagHeaderFilterTests { assertThat(response.getStatus()).as("Invalid status").isEqualTo(304); assertThat(response.getHeader("ETag")).as("Invalid ETag").isEqualTo("\"0b10a8db164e0754105b7a99be72e3fe5\""); assertThat(response.containsHeader("Content-Length")).as("Response has Content-Length header").isFalse(); - byte[] expecteds = new byte[0]; - assertThat(response.getContentAsByteArray()).as("Invalid content").isEqualTo(expecteds); + assertThat(response.getContentAsByteArray()).as("Invalid content").isEmpty(); } @Test // SPR-12960 - public void filterWriterWithDisabledCaching() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterWriterWithDisabledCaching() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); - final byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); ((HttpServletResponse) filterResponse).setStatus(HttpServletResponse.SC_OK); @@ -192,11 +190,11 @@ public class ShallowEtagHeaderFilterTests { } @Test - public void filterSendError() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterSendError() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); - final byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); response.setContentLength(100); @@ -212,11 +210,11 @@ public class ShallowEtagHeaderFilterTests { } @Test - public void filterSendErrorMessage() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterSendErrorMessage() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); - final byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); response.setContentLength(100); @@ -233,11 +231,11 @@ public class ShallowEtagHeaderFilterTests { } @Test - public void filterSendRedirect() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterSendRedirect() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); - final byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); response.setContentLength(100); @@ -254,11 +252,11 @@ public class ShallowEtagHeaderFilterTests { } @Test // SPR-13717 - public void filterFlushResponse() throws Exception { - final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); + void filterFlushResponse() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); MockHttpServletResponse response = new MockHttpServletResponse(); - final byte[] responseBody = "Hello World".getBytes(StandardCharsets.UTF_8); + byte[] responseBody = "Hello World".getBytes(UTF_8); FilterChain filterChain = (filterRequest, filterResponse) -> { assertThat(filterRequest).as("Invalid request passed").isEqualTo(request); ((HttpServletResponse) filterResponse).setStatus(HttpServletResponse.SC_OK);