Skip to content

Commit 4c0d969

Browse files
committed
Merge branch '6.2.x' into 6.3.x
Closes gh-15676
2 parents 9791801 + 3ee5a96 commit 4c0d969

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
@@ -101,6 +101,8 @@
101101
import static org.mockito.Mockito.clearInvocations;
102102
import static org.mockito.Mockito.mock;
103103
import static org.mockito.Mockito.never;
104+
import static org.mockito.Mockito.spy;
105+
import static org.mockito.Mockito.times;
104106
import static org.mockito.Mockito.verify;
105107

106108
/**
@@ -984,6 +986,18 @@ void autowireWhenAspectJAutoProxyAndFactoryBeanThenExactlyOneAdvisorPerAnnotatio
984986
"postFilterAuthorizationMethodInterceptor", "authorizeReturnObjectMethodInterceptor");
985987
}
986988

989+
// gh-15651
990+
@Test
991+
@WithMockUser(roles = "ADMIN")
992+
public void adviseWhenPrePostEnabledThenEachInterceptorRunsExactlyOnce() {
993+
this.spring.register(MethodSecurityServiceConfig.class, CustomMethodSecurityExpressionHandlerConfig.class)
994+
.autowire();
995+
MethodSecurityExpressionHandler expressionHandler = this.spring.getContext()
996+
.getBean(MethodSecurityExpressionHandler.class);
997+
this.methodSecurityService.manyAnnotations(new ArrayList<>(Arrays.asList("harold", "jonathan", "tim", "bo")));
998+
verify(expressionHandler, times(4)).createEvaluationContext(any(Supplier.class), any());
999+
}
1000+
9871001
private static Consumer<ConfigurableWebApplicationContext> disallowBeanOverriding() {
9881002
return (context) -> ((AnnotationConfigWebApplicationContext) context).setAllowBeanDefinitionOverriding(false);
9891003
}
@@ -1079,6 +1093,19 @@ MethodSecurityService methodSecurityService() {
10791093
}
10801094

10811095
@Configuration
1096+
@EnableMethodSecurity
1097+
static class CustomMethodSecurityExpressionHandlerConfig {
1098+
1099+
private final MethodSecurityExpressionHandler expressionHandler = spy(
1100+
new DefaultMethodSecurityExpressionHandler());
1101+
1102+
@Bean
1103+
MethodSecurityExpressionHandler methodSecurityExpressionHandler() {
1104+
return this.expressionHandler;
1105+
}
1106+
1107+
}
1108+
10821109
@EnableMethodSecurity
10831110
static class CustomPermissionEvaluatorConfig {
10841111

0 commit comments

Comments
 (0)