From d2e6d0269ba5816762b497471476193e581266ae Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Thu, 20 Jun 2019 11:35:18 +0300 Subject: [PATCH] Preliminary tests for multipart/related & multipart/mixed in RestTemplate See gh-23159 --- .../FormHttpMessageConverterTests.java | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/spring-web/src/test/java/org/springframework/http/converter/FormHttpMessageConverterTests.java b/spring-web/src/test/java/org/springframework/http/converter/FormHttpMessageConverterTests.java index 1a53897020..b56bdfd387 100644 --- a/spring-web/src/test/java/org/springframework/http/converter/FormHttpMessageConverterTests.java +++ b/spring-web/src/test/java/org/springframework/http/converter/FormHttpMessageConverterTests.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; @@ -48,8 +49,12 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; /** + * Unit tests for {@link FormHttpMessageConverter} and + * {@link AllEncompassingFormHttpMessageConverter}. + * * @author Arjen Poutsma * @author Rossen Stoyanchev + * @author Sam Brannen */ public class FormHttpMessageConverterTests { @@ -58,21 +63,31 @@ public class FormHttpMessageConverterTests { @Test public void canRead() { - assertThat(this.converter.canRead(MultiValueMap.class, - new MediaType("application", "x-www-form-urlencoded"))).isTrue(); - assertThat(this.converter.canRead(MultiValueMap.class, - new MediaType("multipart", "form-data"))).isFalse(); + assertThat(this.converter.canRead(MultiValueMap.class, new MediaType("application", "x-www-form-urlencoded"))).isTrue(); + assertThat(this.converter.canRead(MultiValueMap.class, new MediaType("multipart", "form-data"))).isFalse(); } @Test public void canWrite() { - assertThat(this.converter.canWrite(MultiValueMap.class, - new MediaType("application", "x-www-form-urlencoded"))).isTrue(); - assertThat(this.converter.canWrite(MultiValueMap.class, - new MediaType("multipart", "form-data"))).isTrue(); - assertThat(this.converter.canWrite(MultiValueMap.class, - new MediaType("multipart", "form-data", StandardCharsets.UTF_8))).isTrue(); - assertThat(this.converter.canWrite(MultiValueMap.class, MediaType.ALL)).isTrue(); + assertCanWrite(MultiValueMap.class, new MediaType("application", "x-www-form-urlencoded")); + assertCanWrite(MultiValueMap.class, new MediaType("multipart", "form-data")); + assertCanWrite(MultiValueMap.class, new MediaType("multipart", "form-data", StandardCharsets.UTF_8)); + assertCanWrite(MultiValueMap.class, MediaType.ALL); + } + + @Test + public void canWriteMultipartMixedAndMultipartRelated() { + List supportedMediaTypes = new ArrayList<>(this.converter.getSupportedMediaTypes()); + supportedMediaTypes.add(new MediaType("multipart", "mixed")); + supportedMediaTypes.add(new MediaType("multipart", "related")); + this.converter.setSupportedMediaTypes(supportedMediaTypes); + + assertCanWrite(MultiValueMap.class, new MediaType("multipart", "mixed")); + assertCanWrite(MultiValueMap.class, new MediaType("multipart", "related")); + } + + private void assertCanWrite(Class clazz, MediaType mediaType) { + assertThat(this.converter.canWrite(clazz, mediaType)).isTrue(); } @Test @@ -181,9 +196,7 @@ public class FormHttpMessageConverterTests { verify(outputMessage.getBody(), never()).close(); } - // SPR-13309 - - @Test + @Test // SPR-13309 public void writeMultipartOrder() throws Exception { MyBean myBean = new MyBean(); myBean.setString("foo");