Revert "Disable tests that need Spring MVC mocked in classpath"
This reverts commit c6978fba7c
.
This commit is contained in:
parent
35f7e46d05
commit
5002199be3
|
@ -16,11 +16,12 @@
|
|||
|
||||
package org.springframework.security.config.annotation.web;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.List;
|
||||
|
||||
import jakarta.servlet.DispatcherType;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
|
@ -112,7 +113,8 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void requestMatchersWhenPatternAndMvcPresentThenReturnMvcRequestMatcherType() {
|
||||
public void requestMatchersWhenPatternAndMvcPresentThenReturnMvcRequestMatcherType() throws Exception {
|
||||
mockMvcPresentClasspath(true);
|
||||
mockMvcIntrospector(true);
|
||||
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers("/path");
|
||||
assertThat(requestMatchers).isNotEmpty();
|
||||
|
@ -121,7 +123,8 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void requestMatchersWhenHttpMethodAndPatternAndMvcPresentThenReturnMvcRequestMatcherType() {
|
||||
public void requestMatchersWhenHttpMethodAndPatternAndMvcPresentThenReturnMvcRequestMatcherType() throws Exception {
|
||||
mockMvcPresentClasspath(true);
|
||||
mockMvcIntrospector(true);
|
||||
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers(HttpMethod.GET, "/path");
|
||||
assertThat(requestMatchers).isNotEmpty();
|
||||
|
@ -130,7 +133,8 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void requestMatchersWhenHttpMethodAndMvcPresentThenReturnMvcRequestMatcherType() {
|
||||
public void requestMatchersWhenHttpMethodAndMvcPresentThenReturnMvcRequestMatcherType() throws Exception {
|
||||
mockMvcPresentClasspath(true);
|
||||
mockMvcIntrospector(true);
|
||||
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers(HttpMethod.GET);
|
||||
assertThat(requestMatchers).isNotEmpty();
|
||||
|
@ -139,8 +143,8 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
public void requestMatchersWhenPatternAndMvcNotPresentThenReturnAntPathRequestMatcherType() {
|
||||
public void requestMatchersWhenPatternAndMvcNotPresentThenReturnAntPathRequestMatcherType() throws Exception {
|
||||
mockMvcPresentClasspath(false);
|
||||
mockMvcIntrospector(false);
|
||||
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers("/path");
|
||||
assertThat(requestMatchers).isNotEmpty();
|
||||
|
@ -149,8 +153,9 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
public void requestMatchersWhenHttpMethodAndPatternAndMvcNotPresentThenReturnAntPathRequestMatcherType() {
|
||||
public void requestMatchersWhenHttpMethodAndPatternAndMvcNotPresentThenReturnAntPathRequestMatcherType()
|
||||
throws Exception {
|
||||
mockMvcPresentClasspath(false);
|
||||
mockMvcIntrospector(false);
|
||||
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers(HttpMethod.GET, "/path");
|
||||
assertThat(requestMatchers).isNotEmpty();
|
||||
|
@ -159,8 +164,8 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
public void requestMatchersWhenHttpMethodAndMvcNotPresentThenReturnAntPathMatcherType() {
|
||||
public void requestMatchersWhenHttpMethodAndMvcNotPresentThenReturnAntPathMatcherType() throws Exception {
|
||||
mockMvcPresentClasspath(false);
|
||||
mockMvcIntrospector(false);
|
||||
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers(HttpMethod.GET);
|
||||
assertThat(requestMatchers).isNotEmpty();
|
||||
|
@ -169,7 +174,9 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void requestMatchersWhenMvcPresentInClassPathAndMvcIntrospectorBeanNotAvailableThenException() {
|
||||
public void requestMatchersWhenMvcPresentInClassPathAndMvcIntrospectorBeanNotAvailableThenException()
|
||||
throws Exception {
|
||||
mockMvcPresentClasspath(true);
|
||||
mockMvcIntrospector(false);
|
||||
assertThatExceptionOfType(NoSuchBeanDefinitionException.class)
|
||||
.isThrownBy(() -> this.matcherRegistry.requestMatchers("/path")).withMessageContaining(
|
||||
|
@ -181,6 +188,15 @@ public class AbstractRequestMatcherRegistryTests {
|
|||
given(context.containsBean("mvcHandlerMappingIntrospector")).willReturn(isPresent);
|
||||
}
|
||||
|
||||
private void mockMvcPresentClasspath(Object newValue) throws Exception {
|
||||
Field mvcPresentField = AbstractRequestMatcherRegistry.class.getDeclaredField("mvcPresent");
|
||||
mvcPresentField.setAccessible(true);
|
||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
||||
modifiersField.setAccessible(true);
|
||||
modifiersField.setInt(mvcPresentField, mvcPresentField.getModifiers() & ~Modifier.FINAL);
|
||||
mvcPresentField.set(null, newValue);
|
||||
}
|
||||
|
||||
private static class TestRequestMatcherRegistry extends AbstractRequestMatcherRegistry<List<RequestMatcher>> {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -16,10 +16,12 @@
|
|||
|
||||
package org.springframework.security.config.annotation.web.configurers;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -32,6 +34,7 @@ import org.springframework.mock.web.MockFilterChain;
|
|||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.mock.web.MockServletContext;
|
||||
import org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
|
@ -75,6 +78,7 @@ public class HttpSecuritySecurityMatchersTests {
|
|||
this.request.setMethod("GET");
|
||||
this.response = new MockHttpServletResponse();
|
||||
this.chain = new MockFilterChain();
|
||||
mockMvcPresentClasspath(true);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
|
@ -101,8 +105,8 @@ public class HttpSecuritySecurityMatchersTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
public void securityMatcherWhenNoMvcThenAntMatcher() throws Exception {
|
||||
mockMvcPresentClasspath(false);
|
||||
loadConfig(SecurityMatcherNoMvcConfig.class, LegacyMvcMatchingConfig.class);
|
||||
this.request.setServletPath("/path");
|
||||
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
|
||||
|
@ -233,6 +237,20 @@ public class HttpSecuritySecurityMatchersTests {
|
|||
this.context.getAutowireCapableBeanFactory().autowireBean(this);
|
||||
}
|
||||
|
||||
private void mockMvcPresentClasspath(Object newValue) throws Exception {
|
||||
mockMvcPresentClasspath(HttpSecurity.class, newValue);
|
||||
mockMvcPresentClasspath(AbstractRequestMatcherRegistry.class, newValue);
|
||||
}
|
||||
|
||||
private void mockMvcPresentClasspath(Class<?> clazz, Object newValue) throws Exception {
|
||||
Field mvcPresentField = clazz.getDeclaredField("mvcPresent");
|
||||
mvcPresentField.setAccessible(true);
|
||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
||||
modifiersField.setAccessible(true);
|
||||
modifiersField.setInt(mvcPresentField, mvcPresentField.getModifiers() & ~Modifier.FINAL);
|
||||
mvcPresentField.set(null, newValue);
|
||||
}
|
||||
|
||||
@EnableWebSecurity
|
||||
@Configuration
|
||||
@EnableWebMvc
|
||||
|
|
Loading…
Reference in New Issue