diff --git a/spring-test/src/main/java/org/springframework/test/http/MediaTypeAssert.java b/spring-test/src/main/java/org/springframework/test/http/MediaTypeAssert.java index 6f002c8f6d..5c6077cce6 100644 --- a/spring-test/src/main/java/org/springframework/test/http/MediaTypeAssert.java +++ b/spring-test/src/main/java/org/springframework/test/http/MediaTypeAssert.java @@ -49,10 +49,21 @@ public class MediaTypeAssert extends AbstractObjectAssert - * @param mediaType the media type with which to compare + * @param mediaType the media type with which to compare, as a String + * to be parsed into a MediaType */ public MediaTypeAssert isCompatibleWith(String mediaType) { return isCompatibleWith(parseMediaType(mediaType)); diff --git a/spring-test/src/test/java/org/springframework/test/http/MediaTypeAssertTests.java b/spring-test/src/test/java/org/springframework/test/http/MediaTypeAssertTests.java index 232d25400f..c8b1d71ee7 100644 --- a/spring-test/src/test/java/org/springframework/test/http/MediaTypeAssertTests.java +++ b/spring-test/src/test/java/org/springframework/test/http/MediaTypeAssertTests.java @@ -43,19 +43,35 @@ class MediaTypeAssertTests { } @Test - void isEqualWhenSameShouldPass() { + void isEqualWhenActualIsNullStringShouldFail() { + assertThatExceptionOfType(AssertionError.class) + .isThrownBy(() -> assertThat(null).isEqualTo("text/html")) + .withMessageContaining("Media type"); + } + + @Test + void isEqualWhenSameStringShouldPass() { assertThat(mediaType("application/json")).isEqualTo("application/json"); } @Test - void isEqualWhenDifferentShouldFail() { + void isEqualWhenDifferentStringShouldFail() { assertThatExceptionOfType(AssertionError.class) .isThrownBy(() -> assertThat(mediaType("application/json")).isEqualTo("text/html")) .withMessageContaining("Media type"); } @Test - void isEqualWhenActualIsNullShouldFail() { + void isEqualInvalidStringShouldFail() { + assertThatExceptionOfType(AssertionError.class) + .isThrownBy(() -> assertThat(mediaType("application/json")).isEqualTo("example of a bad value")) + .withMessageContaining("[Media type]") + .withMessageEndingWith("To be a valid media type but got:\n" + + " \"Invalid mime type \"example of a bad value\": does not contain '/'\"\n"); + } + + @Test + void isEqualWhenActualIsNullTypeShouldFail() { assertThatExceptionOfType(AssertionError.class) .isThrownBy(() -> assertThat(null).isEqualTo(MediaType.APPLICATION_JSON)) .withMessageContaining("Media type"); @@ -73,6 +89,49 @@ class MediaTypeAssertTests { .withMessageContaining("Media type"); } + @Test + void isNotEqualWhenActualIsNullStringShouldPass() { + assertThat(null).isNotEqualTo("application/json"); + } + + @Test + void isNotEqualWhenDifferentStringShouldPass() { + assertThat(mediaType("application/json")).isNotEqualTo("text/html"); + } + + @Test + void isNotEqualWhenSameStringShouldFail() { + assertThatExceptionOfType(AssertionError.class) + .isThrownBy(() -> assertThat(mediaType("application/json")).isNotEqualTo("application/json")) + .withMessageContaining("Media type"); + } + + @Test + void isNotEqualInvalidStringShouldFail() { + assertThatExceptionOfType(AssertionError.class) + .isThrownBy(() -> assertThat(mediaType("application/json")).isNotEqualTo("example of a bad value")) + .withMessageContaining("[Media type]") + .withMessageEndingWith("To be a valid media type but got:\n" + + " \"Invalid mime type \"example of a bad value\": does not contain '/'\"\n"); + } + + @Test + void isNotEqualWhenActualIsNullTypeShouldPass() { + assertThat(null).isNotEqualTo(MediaType.APPLICATION_JSON); + } + + @Test + void isNotEqualWhenDifferentTypeShouldPass() { + assertThat(mediaType("application/json")).isNotEqualTo(MediaType.TEXT_HTML); + } + + @Test + void isNotEqualWhenSameTypeShouldFail() { + assertThatExceptionOfType(AssertionError.class) + .isThrownBy(() -> assertThat(mediaType("application/json")).isNotEqualTo(MediaType.APPLICATION_JSON)) + .withMessageContaining("Media type"); + } + @Test void isCompatibleWhenSameShouldPass() { assertThat(mediaType("application/json")).isCompatibleWith("application/json");