|
|
|
|
@ -73,6 +73,8 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -73,6 +73,8 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
|
|
|
|
import static org.mockito.ArgumentMatchers.any; |
|
|
|
|
import static org.mockito.Mockito.atLeastOnce; |
|
|
|
|
import static org.mockito.Mockito.mock; |
|
|
|
|
import static org.mockito.Mockito.spy; |
|
|
|
|
import static org.mockito.Mockito.times; |
|
|
|
|
import static org.mockito.Mockito.verify; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -447,6 +449,18 @@ public class PrePostMethodSecurityConfigurationTests {
@@ -447,6 +449,18 @@ public class PrePostMethodSecurityConfigurationTests {
|
|
|
|
|
.autowire(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// gh-15651
|
|
|
|
|
@Test |
|
|
|
|
@WithMockUser(roles = "ADMIN") |
|
|
|
|
public void adviseWhenPrePostEnabledThenEachInterceptorRunsExactlyOnce() { |
|
|
|
|
this.spring.register(MethodSecurityServiceConfig.class, CustomMethodSecurityExpressionHandlerConfig.class) |
|
|
|
|
.autowire(); |
|
|
|
|
MethodSecurityExpressionHandler expressionHandler = this.spring.getContext() |
|
|
|
|
.getBean(MethodSecurityExpressionHandler.class); |
|
|
|
|
this.methodSecurityService.manyAnnotations(new ArrayList<>(Arrays.asList("harold", "jonathan", "tim", "bo"))); |
|
|
|
|
verify(expressionHandler, times(4)).createEvaluationContext(any(Supplier.class), any()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static Consumer<ConfigurableWebApplicationContext> disallowBeanOverriding() { |
|
|
|
|
return (context) -> ((AnnotationConfigWebApplicationContext) context).setAllowBeanDefinitionOverriding(false); |
|
|
|
|
} |
|
|
|
|
@ -523,6 +537,19 @@ public class PrePostMethodSecurityConfigurationTests {
@@ -523,6 +537,19 @@ public class PrePostMethodSecurityConfigurationTests {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Configuration |
|
|
|
|
@EnableMethodSecurity |
|
|
|
|
static class CustomMethodSecurityExpressionHandlerConfig { |
|
|
|
|
|
|
|
|
|
private final MethodSecurityExpressionHandler expressionHandler = spy( |
|
|
|
|
new DefaultMethodSecurityExpressionHandler()); |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
MethodSecurityExpressionHandler methodSecurityExpressionHandler() { |
|
|
|
|
return this.expressionHandler; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@EnableMethodSecurity |
|
|
|
|
static class CustomPermissionEvaluatorConfig { |
|
|
|
|
|
|
|
|
|
|