Polishing tests

This commit is contained in:
rstoyanchev 2022-02-02 17:09:04 +00:00
parent 8d5a6520ce
commit c4e362500b
13 changed files with 132 additions and 107 deletions

View File

@ -63,8 +63,10 @@ public class ByteArrayHttpMessageConverterTests {
byte[] body = new byte[]{0x1, 0x2};
converter.write(body, null, outputMessage);
assertThat(outputMessage.getBodyAsBytes()).as("Invalid result").isEqualTo(body);
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "octet-stream"));
assertThat(outputMessage.getHeaders().getContentLength()).as("Invalid content-length").isEqualTo(2);
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_OCTET_STREAM);
assertThat(outputMessage.getHeaders().getContentLength())
.as("Invalid content-length").isEqualTo(2);
}
}

View File

@ -147,9 +147,12 @@ public class FormHttpMessageConverterTests {
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
this.converter.write(body, APPLICATION_FORM_URLENCODED, outputMessage);
assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_8)).as("Invalid result").isEqualTo("name+1=value+1&name+2=value+2%2B1&name+2=value+2%2B2&name+3");
assertThat(outputMessage.getHeaders().getContentType().toString()).as("Invalid content-type").isEqualTo("application/x-www-form-urlencoded;charset=UTF-8");
assertThat(outputMessage.getHeaders().getContentLength()).as("Invalid content-length").isEqualTo(outputMessage.getBodyAsBytes().length);
assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_8))
.as("Invalid result").isEqualTo("name+1=value+1&name+2=value+2%2B1&name+2=value+2%2B2&name+3");
assertThat(outputMessage.getHeaders().getContentType().toString())
.as("Invalid content-type").isEqualTo("application/x-www-form-urlencoded;charset=UTF-8");
assertThat(outputMessage.getHeaders().getContentLength())
.as("Invalid content-length").isEqualTo(outputMessage.getBodyAsBytes().length);
}
@Test

View File

@ -106,8 +106,10 @@ public class ResourceHttpMessageConverterTests {
Resource body = new ClassPathResource("logo.jpg", getClass());
converter.write(body, null, outputMessage);
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(MediaType.IMAGE_JPEG);
assertThat(outputMessage.getHeaders().getContentLength()).as("Invalid content-length").isEqualTo(body.getFile().length());
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.IMAGE_JPEG);
assertThat(outputMessage.getHeaders().getContentLength())
.as("Invalid content-length").isEqualTo(body.getFile().length());
}
@Test // SPR-10848

View File

@ -138,7 +138,8 @@ public class GsonHttpMessageConverterTests {
assertThat(result.contains("\"array\":[\"Foo\",\"Bar\"]")).isTrue();
assertThat(result.contains("\"bool\":true")).isTrue();
assertThat(result.contains("\"bytes\":[1,2]")).isTrue();
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
verify(outputMessage.getBody(), never()).close();
}
@ -161,7 +162,8 @@ public class GsonHttpMessageConverterTests {
assertThat(result.contains("\"array\":[\"Foo\",\"Bar\"]")).isTrue();
assertThat(result.contains("\"bool\":true")).isTrue();
assertThat(result.contains("\"bytes\":[1,2]")).isTrue();
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
}
@Test
@ -177,7 +179,7 @@ public class GsonHttpMessageConverterTests {
@Test
public void readInvalidJson() throws IOException {
String body = "FooBar";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
this.converter.read(MyBean.class, inputMessage));

View File

@ -138,7 +138,8 @@ public class JsonbHttpMessageConverterTests {
assertThat(result.contains("\"array\":[\"Foo\",\"Bar\"]")).isTrue();
assertThat(result.contains("\"bool\":true")).isTrue();
assertThat(result.contains("\"bytes\":[1,2]")).isTrue();
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
verify(outputMessage.getBody(), never()).close();
}
@ -161,7 +162,8 @@ public class JsonbHttpMessageConverterTests {
assertThat(result.contains("\"array\":[\"Foo\",\"Bar\"]")).isTrue();
assertThat(result.contains("\"bool\":true")).isTrue();
assertThat(result.contains("\"bytes\":[1,2]")).isTrue();
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(new MediaType("application", "json", utf8));
}
@Test

View File

@ -160,7 +160,7 @@ public class MappingJackson2HttpMessageConverterTests {
"\"string\":\"Foo\"," +
"\"bool\":true," +
"\"fraction\":42.0}";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
HashMap<String, Object> result = (HashMap<String, Object>) converter.read(HashMap.class, inputMessage);
assertThat(result.get("string")).isEqualTo("Foo");
@ -192,7 +192,8 @@ public class MappingJackson2HttpMessageConverterTests {
assertThat(result.contains("\"array\":[\"Foo\",\"Bar\"]")).isTrue();
assertThat(result.contains("\"bool\":true")).isTrue();
assertThat(result.contains("\"bytes\":\"AQI=\"")).isTrue();
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(MediaType.APPLICATION_JSON);
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_JSON);
verify(outputMessage.getBody(), never()).close();
}
@ -214,7 +215,8 @@ public class MappingJackson2HttpMessageConverterTests {
assertThat(result.contains("\"array\":[\"Foo\",\"Bar\"]")).isTrue();
assertThat(result.contains("\"bool\":true")).isTrue();
assertThat(result.contains("\"bytes\":\"AQI=\"")).isTrue();
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(MediaType.APPLICATION_JSON);
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_JSON);
}
@Test
@ -230,16 +232,16 @@ public class MappingJackson2HttpMessageConverterTests {
@Test
public void readInvalidJson() throws IOException {
String body = "FooBar";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
converter.read(MyBean.class, inputMessage));
assertThatExceptionOfType(HttpMessageNotReadableException.class)
.isThrownBy(() -> converter.read(MyBean.class, inputMessage));
}
@Test
public void readValidJsonWithUnknownProperty() throws IOException {
String body = "{\"string\":\"string\",\"unknownProperty\":\"value\"}";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
converter.read(MyBean.class, inputMessage);
// Assert no HttpMessageNotReadableException is thrown
@ -266,7 +268,7 @@ public class MappingJackson2HttpMessageConverterTests {
"\"string\":\"Foo\"," +
"\"bool\":true," +
"\"fraction\":42.0}]";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
List<MyBean> results = (List<MyBean>) converter.read(List.class, inputMessage);
@ -280,7 +282,7 @@ public class MappingJackson2HttpMessageConverterTests {
assertThat(result.getBytes()).isEqualTo(new byte[] {0x1, 0x2});
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
converter.write(results, new MediaType("application", "json"), outputMessage);
converter.write(results, MediaType.APPLICATION_JSON, outputMessage);
JSONAssert.assertEquals(body, outputMessage.getBodyAsString(StandardCharsets.UTF_8), true);
}
@ -296,8 +298,8 @@ public class MappingJackson2HttpMessageConverterTests {
"\"string\":\"Foo\"," +
"\"bool\":true," +
"\"fraction\":42.0}]";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_JSON);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
List<MyBean> results = (List<MyBean>) converter.read(beansList.getType(), null, inputMessage);
@ -311,7 +313,7 @@ public class MappingJackson2HttpMessageConverterTests {
assertThat(result.getBytes()).isEqualTo(new byte[] {0x1, 0x2});
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
converter.write(results, beansList.getType(), new MediaType("application", "json"), outputMessage);
converter.write(results, beansList.getType(), MediaType.APPLICATION_JSON, outputMessage);
JSONAssert.assertEquals(body, outputMessage.getBodyAsString(StandardCharsets.UTF_8), true);
}
@ -328,8 +330,8 @@ public class MappingJackson2HttpMessageConverterTests {
"\"string\":\"Foo\"," +
"\"bool\":true," +
"\"fraction\":42.0}]";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_JSON);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
List<MyBean> results = (List<MyBean>) converter.read(beansList.getType(), null, inputMessage);
@ -343,7 +345,7 @@ public class MappingJackson2HttpMessageConverterTests {
assertThat(result.getBytes()).isEqualTo(new byte[] {0x1, 0x2});
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
converter.write(results, baseList.getType(), new MediaType("application", "json"), outputMessage);
converter.write(results, baseList.getType(), MediaType.APPLICATION_JSON, outputMessage);
JSONAssert.assertEquals(body, outputMessage.getBodyAsString(StandardCharsets.UTF_8), true);
}
@ -489,7 +491,7 @@ public class MappingJackson2HttpMessageConverterTests {
public void readWithNoDefaultConstructor() throws Exception {
String body = "{\"property1\":\"foo\",\"property2\":\"bar\"}";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(new MediaType("application", "json"));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_JSON);
assertThatExceptionOfType(HttpMessageConversionException.class).isThrownBy(() ->
converter.read(BeanWithNoDefaultConstructor.class, inputMessage))
.withMessageStartingWith("Type definition error:");

View File

@ -19,7 +19,7 @@ package org.springframework.http.converter.protobuf;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import com.google.protobuf.ExtensionRegistry;
import com.google.protobuf.Message;
@ -158,7 +158,7 @@ public class ProtobufHttpMessageConverterTests {
assertThat(outputMessage.getHeaders().getContentType()).isEqualTo(contentType);
final String body = outputMessage.getBodyAsString(Charset.forName("UTF-8"));
final String body = outputMessage.getBodyAsString(StandardCharsets.UTF_8);
assertThat(body.isEmpty()).as("body is empty").isFalse();
Msg.Builder builder = Msg.newBuilder();
@ -182,7 +182,7 @@ public class ProtobufHttpMessageConverterTests {
assertThat(outputMessage.getHeaders().getContentType()).isEqualTo(contentType);
final String body = outputMessage.getBodyAsString(Charset.forName("UTF-8"));
final String body = outputMessage.getBodyAsString(StandardCharsets.UTF_8);
assertThat(body.isEmpty()).as("body is empty").isFalse();
Msg.Builder builder = Msg.newBuilder();
@ -197,7 +197,8 @@ public class ProtobufHttpMessageConverterTests {
@Test
public void defaultContentType() throws Exception {
assertThat(this.converter.getDefaultContentType(this.testMsg)).isEqualTo(ProtobufHttpMessageConverter.PROTOBUF);
assertThat(this.converter.getDefaultContentType(this.testMsg))
.isEqualTo(ProtobufHttpMessageConverter.PROTOBUF);
}
@Test

View File

@ -94,7 +94,8 @@ public class MappingJackson2SmileHttpMessageConverterTests {
body.setBytes(new byte[]{0x1, 0x2});
converter.write(body, null, outputMessage);
assertThat(outputMessage.getBodyAsBytes()).isEqualTo(mapper.writeValueAsBytes(body));
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "x-jackson-smile"));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(new MediaType("application", "x-jackson-smile"));
verify(outputMessage.getBody(), never()).close();
}

View File

@ -99,7 +99,7 @@ public class Jaxb2CollectionHttpMessageConverterTests {
@SuppressWarnings("unchecked")
public void readXmlRootElementSet() throws Exception {
String content = "<set><rootElement><type s=\"1\"/></rootElement><rootElement><type s=\"2\"/></rootElement></set>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
Set<RootElement> result = (Set<RootElement>) converter.read(rootElementSetType, null, inputMessage);
assertThat(result.size()).as("Invalid result").isEqualTo(2);
@ -111,7 +111,7 @@ public class Jaxb2CollectionHttpMessageConverterTests {
@SuppressWarnings("unchecked")
public void readXmlTypeList() throws Exception {
String content = "<list><foo s=\"1\"/><bar s=\"2\"/></list>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
List<TestType> result = (List<TestType>) converter.read(typeListType, null, inputMessage);
assertThat(result.size()).as("Invalid result").isEqualTo(2);
@ -123,7 +123,7 @@ public class Jaxb2CollectionHttpMessageConverterTests {
@SuppressWarnings("unchecked")
public void readXmlTypeSet() throws Exception {
String content = "<set><foo s=\"1\"/><bar s=\"2\"/></set>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
Set<TestType> result = (Set<TestType>) converter.read(typeSetType, null, inputMessage);
assertThat(result.size()).as("Invalid result").isEqualTo(2);
@ -139,7 +139,7 @@ public class Jaxb2CollectionHttpMessageConverterTests {
" <!ELEMENT external ANY >\n" +
" <!ENTITY ext SYSTEM \"" + external.getURI() + "\" >]>" +
" <list><rootElement><type s=\"1\"/><external>&ext;</external></rootElement></list>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
converter = new Jaxb2CollectionHttpMessageConverter<Collection<Object>>() {
@Override
@ -168,7 +168,7 @@ public class Jaxb2CollectionHttpMessageConverterTests {
" <!ELEMENT external ANY >\n" +
" <!ENTITY ext SYSTEM \"" + external.getURI() + "\" >]>" +
" <list><rootElement><type s=\"1\"/><external>&ext;</external></rootElement></list>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
Jaxb2CollectionHttpMessageConverter<?> c = new Jaxb2CollectionHttpMessageConverter<Collection<Object>>() {
@Override
@ -203,10 +203,10 @@ public class Jaxb2CollectionHttpMessageConverterTests {
" <!ENTITY lol9 \"&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;\">\n" +
"]>\n" +
"<list><rootElement><external>&lol9;</external></rootElement></list>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
this.converter.read(this.rootElementListType, null, inputMessage))
.withMessageContaining("\"lol9\"");
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
assertThatExceptionOfType(HttpMessageNotReadableException.class)
.isThrownBy(() -> this.converter.read(this.rootElementListType, null, inputMessage))
.withMessageContaining("\"lol9\"");
}

View File

@ -85,21 +85,27 @@ public class Jaxb2RootElementHttpMessageConverterTests {
@Test
public void canRead() {
assertThat(converter.canRead(RootElement.class, null)).as("Converter does not support reading @XmlRootElement").isTrue();
assertThat(converter.canRead(Type.class, null)).as("Converter does not support reading @XmlType").isTrue();
assertThat(converter.canRead(RootElement.class, null))
.as("Converter does not support reading @XmlRootElement").isTrue();
assertThat(converter.canRead(Type.class, null))
.as("Converter does not support reading @XmlType").isTrue();
}
@Test
public void canWrite() {
assertThat(converter.canWrite(RootElement.class, null)).as("Converter does not support writing @XmlRootElement").isTrue();
assertThat(converter.canWrite(RootElementSubclass.class, null)).as("Converter does not support writing @XmlRootElement subclass").isTrue();
assertThat(converter.canWrite(rootElementCglib.getClass(), null)).as("Converter does not support writing @XmlRootElement subclass").isTrue();
assertThat(converter.canWrite(Type.class, null)).as("Converter supports writing @XmlType").isFalse();
assertThat(converter.canWrite(RootElement.class, null))
.as("Converter does not support writing @XmlRootElement").isTrue();
assertThat(converter.canWrite(RootElementSubclass.class, null))
.as("Converter does not support writing @XmlRootElement subclass").isTrue();
assertThat(converter.canWrite(rootElementCglib.getClass(), null))
.as("Converter does not support writing @XmlRootElement subclass").isTrue();
assertThat(converter.canWrite(Type.class, null))
.as("Converter supports writing @XmlType").isFalse();
}
@Test
public void readXmlRootElement() throws Exception {
byte[] body = "<rootElement><type s=\"Hello World\"/></rootElement>".getBytes("UTF-8");
byte[] body = "<rootElement><type s=\"Hello World\"/></rootElement>".getBytes(StandardCharsets.UTF_8);
InputStream inputStream = spy(new ByteArrayInputStream(body));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(inputStream);
RootElement result = (RootElement) converter.read(RootElement.class, inputMessage);
@ -109,7 +115,7 @@ public class Jaxb2RootElementHttpMessageConverterTests {
@Test
public void readXmlRootElementSubclass() throws Exception {
byte[] body = "<rootElement><type s=\"Hello World\"/></rootElement>".getBytes("UTF-8");
byte[] body = "<rootElement><type s=\"Hello World\"/></rootElement>".getBytes(StandardCharsets.UTF_8);
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body);
RootElementSubclass result = (RootElementSubclass) converter.read(RootElementSubclass.class, inputMessage);
assertThat(result.getType().s).as("Invalid result").isEqualTo("Hello World");
@ -117,7 +123,7 @@ public class Jaxb2RootElementHttpMessageConverterTests {
@Test
public void readXmlType() throws Exception {
byte[] body = "<foo s=\"Hello World\"/>".getBytes("UTF-8");
byte[] body = "<foo s=\"Hello World\"/>".getBytes(StandardCharsets.UTF_8);
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body);
Type result = (Type) converter.read(Type.class, inputMessage);
assertThat(result.s).as("Invalid result").isEqualTo("Hello World");
@ -130,7 +136,7 @@ public class Jaxb2RootElementHttpMessageConverterTests {
" <!ELEMENT external ANY >\n" +
" <!ENTITY ext SYSTEM \"" + external.getURI() + "\" >]>" +
" <rootElement><external>&ext;</external></rootElement>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
converter.setSupportDtd(true);
RootElement rootElement = (RootElement) converter.read(RootElement.class, inputMessage);
@ -144,7 +150,7 @@ public class Jaxb2RootElementHttpMessageConverterTests {
" <!ELEMENT external ANY >\n" +
" <!ENTITY ext SYSTEM \"" + external.getURI() + "\" >]>" +
" <rootElement><external>&ext;</external></rootElement>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
this.converter.setProcessExternalEntities(true);
RootElement rootElement = (RootElement) converter.read(RootElement.class, inputMessage);
@ -170,7 +176,7 @@ public class Jaxb2RootElementHttpMessageConverterTests {
" <!ENTITY lol9 \"&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;\">\n" +
"]>\n" +
"<rootElement><external>&lol9;</external></rootElement>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
this.converter.read(RootElement.class, inputMessage))
.withMessageContaining("DOCTYPE");
@ -180,7 +186,8 @@ public class Jaxb2RootElementHttpMessageConverterTests {
public void writeXmlRootElement() throws Exception {
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
converter.write(rootElement, null, outputMessage);
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "xml"));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_XML);
DifferenceEvaluator ev = chain(Default, downgradeDifferencesToEqual(XML_STANDALONE));
assertThat(XmlContent.of(outputMessage.getBodyAsString(StandardCharsets.UTF_8)))
.isSimilarTo("<rootElement><type s=\"Hello World\"/></rootElement>", ev);
@ -191,7 +198,8 @@ public class Jaxb2RootElementHttpMessageConverterTests {
public void writeXmlRootElementSubclass() throws Exception {
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
converter.write(rootElementCglib, null, outputMessage);
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "xml"));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_XML);
DifferenceEvaluator ev = chain(Default, downgradeDifferencesToEqual(XML_STANDALONE));
assertThat(XmlContent.of(outputMessage.getBodyAsString(StandardCharsets.UTF_8)))
.isSimilarTo("<rootElement><type s=\"Hello World\"/></rootElement>", ev);
@ -211,7 +219,7 @@ public class Jaxb2RootElementHttpMessageConverterTests {
@Test
public void customizeUnmarshaller() throws Exception {
byte[] body = "<myRootElement><element>a|||b</element></myRootElement>".getBytes("UTF-8");
byte[] body = "<myRootElement><element>a|||b</element></myRootElement>".getBytes(StandardCharsets.UTF_8);
MyJaxb2RootElementHttpMessageConverter myConverter = new MyJaxb2RootElementHttpMessageConverter();
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body);
MyRootElement result = (MyRootElement) myConverter.read(MyRootElement.class, inputMessage);

View File

@ -110,15 +110,16 @@ public class MappingJackson2XmlHttpMessageConverterTests {
assertThat(result.contains("<array><array>Foo</array><array>Bar</array></array>")).isTrue();
assertThat(result.contains("<bool>true</bool>")).isTrue();
assertThat(result.contains("<bytes>AQI=</bytes>")).isTrue();
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "xml", StandardCharsets.UTF_8));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(new MediaType("application", "xml", StandardCharsets.UTF_8));
verify(outputMessage.getBody(), never()).close();
}
@Test
public void readInvalidXml() throws IOException {
String body = "FooBar";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
converter.read(MyBean.class, inputMessage));
}
@ -126,8 +127,8 @@ public class MappingJackson2XmlHttpMessageConverterTests {
@Test
public void readValidXmlWithUnknownProperty() throws IOException {
String body = "<MyBean><string>string</string><unknownProperty>value</unknownProperty></MyBean>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
converter.read(MyBean.class, inputMessage);
// Assert no HttpMessageNotReadableException is thrown
}
@ -164,8 +165,8 @@ public class MappingJackson2XmlHttpMessageConverterTests {
new ClassPathResource("external.txt", getClass()).getURI() +
"\" >]><MyBean><string>&ext;</string></MyBean>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
this.converter.read(MyBean.class, inputMessage));
@ -191,8 +192,8 @@ public class MappingJackson2XmlHttpMessageConverterTests {
"]>\n" +
"<MyBean>&lol9;</MyBean>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
this.converter.read(MyBean.class, inputMessage));

View File

@ -108,12 +108,12 @@ public class MarshallingHttpMessageConverterTests {
Marshaller marshaller = mock(Marshaller.class);
Unmarshaller unmarshaller = mock(Unmarshaller.class);
given(unmarshaller.unmarshal(isA(StreamSource.class))).willReturn(Integer.valueOf(3));
given(unmarshaller.unmarshal(isA(StreamSource.class))).willReturn(3);
MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter(marshaller, unmarshaller);
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
converter.read(String.class, inputMessage))
.withCauseInstanceOf(TypeMismatchException.class);
assertThatExceptionOfType(HttpMessageNotReadableException.class)
.isThrownBy(() -> converter.read(String.class, inputMessage))
.withCauseInstanceOf(TypeMismatchException.class);
}
@Test
@ -127,9 +127,8 @@ public class MarshallingHttpMessageConverterTests {
MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter();
converter.setUnmarshaller(unmarshaller);
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
converter.read(Object.class, inputMessage))
.withCause(ex);
assertThatExceptionOfType(HttpMessageNotReadableException.class)
.isThrownBy(() -> converter.read(Object.class, inputMessage)).withCause(ex);
}
@Test
@ -143,7 +142,8 @@ public class MarshallingHttpMessageConverterTests {
MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter(marshaller);
converter.write(body, null, outputMessage);
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "xml"));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(new MediaType("application", "xml"));
verify(outputMessage.getBody(), never()).close();
}
@ -157,13 +157,12 @@ public class MarshallingHttpMessageConverterTests {
willThrow(ex).given(marshaller).marshal(eq(body), isA(Result.class));
MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter(marshaller);
assertThatExceptionOfType(HttpMessageNotWritableException.class).isThrownBy(() ->
converter.write(body, null, outputMessage))
.withCause(ex);
assertThatExceptionOfType(HttpMessageNotWritableException.class)
.isThrownBy(() -> converter.write(body, null, outputMessage)).withCause(ex);
}
@Test
public void supports() throws Exception {
public void supports() {
assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(() ->
new MarshallingHttpMessageConverter().supports(Object.class));
}

View File

@ -95,9 +95,9 @@ public class SourceHttpMessageConverterTests {
@Test
public void readDOMSource() throws Exception {
InputStream inputStream = spy(new ByteArrayInputStream(BODY.getBytes("UTF-8")));
InputStream inputStream = spy(new ByteArrayInputStream(BODY.getBytes(StandardCharsets.UTF_8)));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(inputStream);
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
DOMSource result = (DOMSource) converter.read(DOMSource.class, inputMessage);
Document document = (Document) result.getNode();
assertThat(document.getDocumentElement().getLocalName()).as("Invalid result").isEqualTo("root");
@ -106,8 +106,8 @@ public class SourceHttpMessageConverterTests {
@Test
public void readDOMSourceExternal() throws Exception {
MockHttpInputMessage inputMessage = new MockHttpInputMessage(bodyExternal.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(bodyExternal.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
converter.setSupportDtd(true);
DOMSource result = (DOMSource) converter.read(DOMSource.class, inputMessage);
Document document = (Document) result.getNode();
@ -134,7 +134,7 @@ public class SourceHttpMessageConverterTests {
" <!ENTITY lol9 \"&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;\">\n" +
"]>\n" +
"<root>&lol9;</root>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
assertThatExceptionOfType(HttpMessageNotReadableException.class).isThrownBy(() ->
this.converter.read(DOMSource.class, inputMessage))
@ -143,8 +143,8 @@ public class SourceHttpMessageConverterTests {
@Test
public void readSAXSource() throws Exception {
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
SAXSource result = (SAXSource) converter.read(SAXSource.class, inputMessage);
InputSource inputSource = result.getInputSource();
String s = FileCopyUtils.copyToString(new InputStreamReader(inputSource.getByteStream()));
@ -153,8 +153,8 @@ public class SourceHttpMessageConverterTests {
@Test
public void readSAXSourceExternal() throws Exception {
MockHttpInputMessage inputMessage = new MockHttpInputMessage(bodyExternal.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(bodyExternal.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
converter.setSupportDtd(true);
SAXSource result = (SAXSource) converter.read(SAXSource.class, inputMessage);
InputSource inputSource = result.getInputSource();
@ -189,20 +189,19 @@ public class SourceHttpMessageConverterTests {
"]>\n" +
"<root>&lol9;</root>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
SAXSource result = (SAXSource) this.converter.read(SAXSource.class, inputMessage);
InputSource inputSource = result.getInputSource();
XMLReader reader = result.getXMLReader();
assertThatExceptionOfType(SAXException.class).isThrownBy(() ->
reader.parse(inputSource))
.withMessageContaining("DOCTYPE");
assertThatExceptionOfType(SAXException.class)
.isThrownBy(() -> reader.parse(inputSource)).withMessageContaining("DOCTYPE");
}
@Test
public void readStAXSource() throws Exception {
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
StAXSource result = (StAXSource) converter.read(StAXSource.class, inputMessage);
XMLStreamReader streamReader = result.getXMLStreamReader();
assertThat(streamReader.hasNext()).isTrue();
@ -216,8 +215,8 @@ public class SourceHttpMessageConverterTests {
@Test
public void readStAXSourceExternal() throws Exception {
MockHttpInputMessage inputMessage = new MockHttpInputMessage(bodyExternal.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(bodyExternal.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
converter.setSupportDtd(true);
StAXSource result = (StAXSource) converter.read(StAXSource.class, inputMessage);
XMLStreamReader streamReader = result.getXMLStreamReader();
@ -255,7 +254,7 @@ public class SourceHttpMessageConverterTests {
" <!ENTITY lol9 \"&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;\">\n" +
"]>\n" +
"<root>&lol9;</root>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes("UTF-8"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(content.getBytes(StandardCharsets.UTF_8));
StAXSource result = (StAXSource) this.converter.read(StAXSource.class, inputMessage);
XMLStreamReader streamReader = result.getXMLStreamReader();
@ -264,15 +263,14 @@ public class SourceHttpMessageConverterTests {
streamReader.next();
String s = streamReader.getLocalName();
assertThat(s).isEqualTo("root");
assertThatExceptionOfType(XMLStreamException.class).isThrownBy(() ->
streamReader.getElementText())
.withMessageContaining("\"lol9\"");
assertThatExceptionOfType(XMLStreamException.class)
.isThrownBy(streamReader::getElementText).withMessageContaining("\"lol9\"");
}
@Test
public void readStreamSource() throws Exception {
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
StreamSource result = (StreamSource) converter.read(StreamSource.class, inputMessage);
String s = FileCopyUtils.copyToString(new InputStreamReader(result.getInputStream()));
assertThat(XmlContent.of(s)).isSimilarTo(BODY);
@ -280,8 +278,8 @@ public class SourceHttpMessageConverterTests {
@Test
public void readSource() throws Exception {
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
MockHttpInputMessage inputMessage = new MockHttpInputMessage(BODY.getBytes(StandardCharsets.UTF_8));
inputMessage.getHeaders().setContentType(MediaType.APPLICATION_XML);
converter.read(Source.class, inputMessage);
}
@ -299,8 +297,10 @@ public class SourceHttpMessageConverterTests {
converter.write(domSource, null, outputMessage);
assertThat(XmlContent.of(outputMessage.getBodyAsString(StandardCharsets.UTF_8)))
.isSimilarTo("<root>Hello World</root>");
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "xml"));
assertThat(outputMessage.getHeaders().getContentLength()).as("Invalid content-length").isEqualTo(outputMessage.getBodyAsBytes().length);
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_XML);
assertThat(outputMessage.getHeaders().getContentLength())
.as("Invalid content-length").isEqualTo(outputMessage.getBodyAsBytes().length);
verify(outputMessage.getBody(), never()).close();
}
@ -313,7 +313,8 @@ public class SourceHttpMessageConverterTests {
converter.write(saxSource, null, outputMessage);
assertThat(XmlContent.of(outputMessage.getBodyAsString(StandardCharsets.UTF_8)))
.isSimilarTo("<root>Hello World</root>");
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "xml"));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_XML);
}
@Test
@ -325,7 +326,8 @@ public class SourceHttpMessageConverterTests {
converter.write(streamSource, null, outputMessage);
assertThat(XmlContent.of(outputMessage.getBodyAsString(StandardCharsets.UTF_8)))
.isSimilarTo("<root>Hello World</root>");
assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(new MediaType("application", "xml"));
assertThat(outputMessage.getHeaders().getContentType())
.as("Invalid content-type").isEqualTo(MediaType.APPLICATION_XML);
}
}