Skip to content

Commit dff3780

Browse files
committed
Merge branch '6.3.x'
2 parents 8318a42 + 4c0d969 commit dff3780

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

config/src/test/java/org/springframework/security/config/annotation/method/configuration/PrePostMethodSecurityConfigurationTests.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@
104104
import static org.mockito.Mockito.clearInvocations;
105105
import static org.mockito.Mockito.mock;
106106
import static org.mockito.Mockito.never;
107+
import static org.mockito.Mockito.spy;
108+
import static org.mockito.Mockito.times;
107109
import static org.mockito.Mockito.verify;
108110

109111
/**
@@ -995,6 +997,18 @@ void autowireWhenAspectJAutoProxyAndFactoryBeanThenExactlyOneAdvisorPerAnnotatio
995997
"postFilterAuthorizationMethodInterceptor", "authorizeReturnObjectMethodInterceptor");
996998
}
997999

1000+
// gh-15651
1001+
@Test
1002+
@WithMockUser(roles = "ADMIN")
1003+
public void adviseWhenPrePostEnabledThenEachInterceptorRunsExactlyOnce() {
1004+
this.spring.register(MethodSecurityServiceConfig.class, CustomMethodSecurityExpressionHandlerConfig.class)
1005+
.autowire();
1006+
MethodSecurityExpressionHandler expressionHandler = this.spring.getContext()
1007+
.getBean(MethodSecurityExpressionHandler.class);
1008+
this.methodSecurityService.manyAnnotations(new ArrayList<>(Arrays.asList("harold", "jonathan", "tim", "bo")));
1009+
verify(expressionHandler, times(4)).createEvaluationContext(any(Supplier.class), any());
1010+
}
1011+
9981012
private static Consumer<ConfigurableWebApplicationContext> disallowBeanOverriding() {
9991013
return (context) -> ((AnnotationConfigWebApplicationContext) context).setAllowBeanDefinitionOverriding(false);
10001014
}
@@ -1090,6 +1104,19 @@ MethodSecurityService methodSecurityService() {
10901104
}
10911105

10921106
@Configuration
1107+
@EnableMethodSecurity
1108+
static class CustomMethodSecurityExpressionHandlerConfig {
1109+
1110+
private final MethodSecurityExpressionHandler expressionHandler = spy(
1111+
new DefaultMethodSecurityExpressionHandler());
1112+
1113+
@Bean
1114+
MethodSecurityExpressionHandler methodSecurityExpressionHandler() {
1115+
return this.expressionHandler;
1116+
}
1117+
1118+
}
1119+
10931120
@EnableMethodSecurity
10941121
static class CustomPermissionEvaluatorConfig {
10951122

0 commit comments

Comments
 (0)