Create RedirectMatcher

This commit creates RedirectMatcher for binary backward compatability with
Spring 4.3.x and Spring 5 to ensure that the Spring IO tests pass.

Issue gh-4080
This commit is contained in:
Rob Winch 2016-10-17 16:26:56 -05:00
parent 17cfd4707b
commit 52c6e3cf89
4 changed files with 51 additions and 6 deletions

View File

@ -0,0 +1,42 @@
/*
* Copyright 2002-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.security.test.web.servlet.response;
import static org.assertj.core.api.Assertions.assertThat;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.ResultMatcher;
/**
* Necessary to support binary compatibility for Spring IO Checks against Cario
* since Spring Framework changed the signature in Spring 5. See
* https://github.com/spring-projects/spring-framework/commit/
* a795fd47142bd3b206ce244b94b1fd1dd0adc2e9
*
* @author Rob Winch
*/
public class RedirectMatcher {
public static ResultMatcher redirectUrl(final String expectedUrl) {
return new ResultMatcher() {
@Override
public void match(MvcResult result) throws Exception {
assertThat(result.getResponse().getRedirectedUrl()).isEqualTo(expectedUrl);
}
};
}
}

View File

@ -16,6 +16,7 @@
package org.springframework.security.test.web.servlet.showcase.login;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.*;
import static org.springframework.security.test.web.servlet.response.RedirectMatcher.redirectUrl;
import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.*;
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
@ -67,7 +68,7 @@ public class AuthenticationTests {
@Test
public void authenticationSuccess() throws Exception {
mvc.perform(formLogin()).andExpect(status().isFound())
.andExpect(redirectedUrl("/"))
.andExpect(redirectUrl("/"))
.andExpect(authenticated().withUsername("user"));
}
@ -75,7 +76,8 @@ public class AuthenticationTests {
public void authenticationFailed() throws Exception {
mvc.perform(formLogin().user("user").password("invalid"))
.andExpect(status().isFound())
.andExpect(redirectedUrl("/login?error")).andExpect(unauthenticated());
.andExpect(redirectUrl("/login?error"))
.andExpect(unauthenticated());
}
@EnableWebSecurity

View File

@ -64,7 +64,7 @@ public class CustomConfigAuthenticationTests {
mvc.perform(
formLogin("/authenticate").user("user", "user").password("pass",
"password")).andExpect(status().isFound())
.andExpect(redirectedUrl("/"))
.andExpect(redirectUrl("/"))
.andExpect(authenticated().withUsername("user"));
}
@ -79,7 +79,7 @@ public class CustomConfigAuthenticationTests {
mvc.perform(
formLogin("/authenticate").user("user", "notfound").password("pass",
"invalid")).andExpect(status().isFound())
.andExpect(redirectedUrl("/authenticate?error"))
.andExpect(redirectUrl("/authenticate?error"))
.andExpect(unauthenticated());
}

View File

@ -15,6 +15,7 @@
*/
package org.springframework.security.test.web.servlet.showcase.login;
import static org.springframework.security.test.web.servlet.response.RedirectMatcher.redirectUrl;
import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.*;
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@ -55,7 +56,7 @@ public class CustomLoginRequestBuilderAuthenticationTests {
@Test
public void authenticationSuccess() throws Exception {
mvc.perform(login()).andExpect(status().isMovedTemporarily())
.andExpect(redirectedUrl("/"))
.andExpect(redirectUrl("/"))
.andExpect(authenticated().withUsername("user"));
}
@ -63,7 +64,7 @@ public class CustomLoginRequestBuilderAuthenticationTests {
public void authenticationFailed() throws Exception {
mvc.perform(login().user("notfound").password("invalid"))
.andExpect(status().isMovedTemporarily())
.andExpect(redirectedUrl("/authenticate?error"))
.andExpect(redirectUrl("/authenticate?error"))
.andExpect(unauthenticated());
}