Reset charset field in MockHttpServletResponse
Prior to this commit, calling reset() on MockHttpServletResponse did not reset the `charset` field to `false` which could result in the "Content-Type" header containing `;charset=null` which in turn would result in errors when parsing the "Content-Type" header. This commit resets the charset field to `false` in MockHttpServletResponse's reset() method to avoid such errors. Closes gh-25501
This commit is contained in:
parent
785ab5798a
commit
5576321b04
|
|
@ -331,6 +331,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
public void reset() {
|
public void reset() {
|
||||||
resetBuffer();
|
resetBuffer();
|
||||||
this.characterEncoding = null;
|
this.characterEncoding = null;
|
||||||
|
this.charset = false;
|
||||||
this.contentLength = 0;
|
this.contentLength = 0;
|
||||||
this.contentType = null;
|
this.contentType = null;
|
||||||
this.locale = Locale.getDefault();
|
this.locale = Locale.getDefault();
|
||||||
|
|
|
||||||
|
|
@ -458,4 +458,27 @@ class MockHttpServletResponseTests {
|
||||||
assertThat(((MockCookie) cookie).getSameSite()).isEqualTo("Lax");
|
assertThat(((MockCookie) cookie).getSameSite()).isEqualTo("Lax");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test // gh-25501
|
||||||
|
void resetResetsCharset() {
|
||||||
|
assertThat(response.isCharset()).isFalse();
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
|
assertThat(response.isCharset()).isTrue();
|
||||||
|
assertThat(response.getCharacterEncoding()).isEqualTo("UTF-8");
|
||||||
|
response.setContentType("text/plain");
|
||||||
|
assertThat(response.getContentType()).isEqualTo("text/plain");
|
||||||
|
String contentTypeHeader = response.getHeader(CONTENT_TYPE);
|
||||||
|
assertThat(contentTypeHeader).isEqualTo("text/plain;charset=UTF-8");
|
||||||
|
|
||||||
|
response.reset();
|
||||||
|
|
||||||
|
assertThat(response.isCharset()).isFalse();
|
||||||
|
// Do not invoke setCharacterEncoding() since that sets the charset flag to true.
|
||||||
|
// response.setCharacterEncoding("UTF-8");
|
||||||
|
response.setContentType("text/plain");
|
||||||
|
assertThat(response.isCharset()).isFalse(); // should still be false
|
||||||
|
assertThat(response.getContentType()).isEqualTo("text/plain");
|
||||||
|
contentTypeHeader = response.getHeader(CONTENT_TYPE);
|
||||||
|
assertThat(contentTypeHeader).isEqualTo("text/plain");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -331,6 +331,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
public void reset() {
|
public void reset() {
|
||||||
resetBuffer();
|
resetBuffer();
|
||||||
this.characterEncoding = null;
|
this.characterEncoding = null;
|
||||||
|
this.charset = false;
|
||||||
this.contentLength = 0;
|
this.contentLength = 0;
|
||||||
this.contentType = null;
|
this.contentType = null;
|
||||||
this.locale = Locale.getDefault();
|
this.locale = Locale.getDefault();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue