diff --git a/spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java index c3cad8ac5624..eb615ea422ed 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java @@ -353,12 +353,22 @@ public MultiValueMap read(@Nullable Class body = new LinkedMultiValueMap<>(); @@ -410,6 +432,17 @@ private void assertCannotWrite(MediaType mediaType) { assertThat(this.converter.canWrite(clazz, mediaType)).as(clazz.getSimpleName() + " : " + mediaType).isFalse(); } + private void assertInvalidFormIsRejectedWithSpecificException(String body) { + MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.ISO_8859_1)); + inputMessage.getHeaders().setContentType( + new MediaType("application", "x-www-form-urlencoded", StandardCharsets.ISO_8859_1)); + + assertThatThrownBy(() -> this.converter.read(null, inputMessage)) + .isInstanceOf(HttpMessageNotReadableException.class) + .hasCauseInstanceOf(IllegalArgumentException.class) + .hasMessage("Could not decode HTTP form payload"); + } + private static class MockHttpOutputMessageRequestContext implements UploadContext {