Ver Fonte

Fix SwitchUserFilter.setSwitchFailureUrl assertion

Fixes gh-4198
Rob Winch há 8 anos atrás
pai
commit
247f54dc41

+ 2 - 5
web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.java

@@ -58,7 +58,6 @@ import org.springframework.security.web.authentication.SimpleUrlAuthenticationSu
 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
 import org.springframework.security.web.util.UrlUtils;
 import org.springframework.util.Assert;
-import org.springframework.util.StringUtils;
 import org.springframework.web.filter.GenericFilterBean;
 
 /**
@@ -494,10 +493,8 @@ public class SwitchUserFilter extends GenericFilterBean
 	 * @param switchFailureUrl the url to redirect to.
 	 */
 	public void setSwitchFailureUrl(String switchFailureUrl) {
-		Assert.isTrue(
-				StringUtils.hasText(this.switchUserUrl)
-						&& UrlUtils.isValidRedirectUrl(switchFailureUrl),
-				"switchFailureUrl cannot be empty and must be a valid redirect URL");
+		Assert.isTrue(UrlUtils.isValidRedirectUrl(switchFailureUrl),
+				"switchFailureUrl must be a valid redirect URL");
 		this.switchFailureUrl = switchFailureUrl;
 	}
 

+ 17 - 0
web/src/test/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilterTests.java

@@ -464,6 +464,23 @@ public class SwitchUserFilterTests {
 		assertThat(switchAuthorityRole).isEqualTo(switchedFrom.getAuthority());
 	}
 
+	@Test(expected = IllegalArgumentException.class)
+	public void setSwitchFailureUrlWhenNullThenThrowException() {
+		SwitchUserFilter filter = new SwitchUserFilter();
+		filter.setSwitchFailureUrl(null);
+	}
+
+	@Test(expected = IllegalArgumentException.class)
+	public void setSwitchFailureUrlWhenEmptyThenThrowException() {
+		SwitchUserFilter filter = new SwitchUserFilter();
+		filter.setSwitchFailureUrl("");
+	}
+
+	@Test
+	public void setSwitchFailureUrlWhenValidThenNoException() {
+		SwitchUserFilter filter = new SwitchUserFilter();
+		filter.setSwitchFailureUrl("/foo");
+	}
 	// ~ Inner Classes
 	// ==================================================================================================