diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/result/MockMvcResultMatchers.java b/spring-test/src/main/java/org/springframework/test/web/servlet/result/MockMvcResultMatchers.java index 60122452826..b5cbd3a1563 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/result/MockMvcResultMatchers.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/result/MockMvcResultMatchers.java @@ -85,7 +85,8 @@ public abstract class MockMvcResultMatchers { /** * Asserts the request was forwarded to the given URL. *
This method accepts only exact matches. - * @param expectedUrl the exact URL expected + * @param expectedUrl the exact URL expected; or {@code null} to assert + * that no forwarding occurred */ public static ResultMatcher forwardedUrl(@Nullable String expectedUrl) { return result -> assertEquals("Forwarded URL", expectedUrl, result.getResponse().getForwardedUrl()); @@ -124,9 +125,10 @@ public abstract class MockMvcResultMatchers { /** * Asserts the request was redirected to the given URL. *
This method accepts only exact matches.
- * @param expectedUrl the exact URL expected
+ * @param expectedUrl the exact URL expected; or {@code null} to assert
+ * that no redirect occurred
*/
- public static ResultMatcher redirectedUrl(String expectedUrl) {
+ public static ResultMatcher redirectedUrl(@Nullable String expectedUrl) {
return result -> assertEquals("Redirected URL", expectedUrl, result.getResponse().getRedirectedUrl());
}
diff --git a/spring-test/src/test/java/org/springframework/test/web/servlet/result/MockMvcResultMatchersTests.java b/spring-test/src/test/java/org/springframework/test/web/servlet/result/MockMvcResultMatchersTests.java
index bae29cbf992..7e1f4993f5c 100644
--- a/spring-test/src/test/java/org/springframework/test/web/servlet/result/MockMvcResultMatchersTests.java
+++ b/spring-test/src/test/java/org/springframework/test/web/servlet/result/MockMvcResultMatchersTests.java
@@ -39,11 +39,17 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
class MockMvcResultMatchersTests {
@Test
- void redirect() throws Exception {
+ void redirect() {
assertThatCode(() -> redirectedUrl("/resource/1").match(redirectedUrlStub("/resource/1")))
.doesNotThrowAnyException();
}
+ @Test // gh-37230
+ void redirectWithNullAssertsNoRedirectOccurred() {
+ assertThatCode(() -> redirectedUrl(null).match(noRedirectOrForwardStub()))
+ .doesNotThrowAnyException();
+ }
+
@Test
void redirectNonMatching() {
assertThatExceptionOfType(AssertionError.class)
@@ -58,6 +64,13 @@ class MockMvcResultMatchersTests {
.withMessageEndingWith("expected: but was: