Skip to content

Commit 3ee5a96

Browse files
committed
Merge branch '5.8.x' into 6.2.x
Closes gh-15675
2 parents c06543d + 5c604b9 commit 3ee5a96

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
@@ -73,6 +73,8 @@
7373
import static org.mockito.ArgumentMatchers.any;
7474
import static org.mockito.Mockito.atLeastOnce;
7575
import static org.mockito.Mockito.mock;
76+
import static org.mockito.Mockito.spy;
77+
import static org.mockito.Mockito.times;
7678
import static org.mockito.Mockito.verify;
7779

7880
/**
@@ -447,6 +449,18 @@ public void configureWhenBeanOverridingDisallowedThenWorks() {
447449
.autowire();
448450
}
449451

452+
// gh-15651
453+
@Test
454+
@WithMockUser(roles = "ADMIN")
455+
public void adviseWhenPrePostEnabledThenEachInterceptorRunsExactlyOnce() {
456+
this.spring.register(MethodSecurityServiceConfig.class, CustomMethodSecurityExpressionHandlerConfig.class)
457+
.autowire();
458+
MethodSecurityExpressionHandler expressionHandler = this.spring.getContext()
459+
.getBean(MethodSecurityExpressionHandler.class);
460+
this.methodSecurityService.manyAnnotations(new ArrayList<>(Arrays.asList("harold", "jonathan", "tim", "bo")));
461+
verify(expressionHandler, times(4)).createEvaluationContext(any(Supplier.class), any());
462+
}
463+
450464
private static Consumer<ConfigurableWebApplicationContext> disallowBeanOverriding() {
451465
return (context) -> ((AnnotationConfigWebApplicationContext) context).setAllowBeanDefinitionOverriding(false);
452466
}
@@ -523,6 +537,19 @@ MethodSecurityService methodSecurityService() {
523537
}
524538

525539
@Configuration
540+
@EnableMethodSecurity
541+
static class CustomMethodSecurityExpressionHandlerConfig {
542+
543+
private final MethodSecurityExpressionHandler expressionHandler = spy(
544+
new DefaultMethodSecurityExpressionHandler());
545+
546+
@Bean
547+
MethodSecurityExpressionHandler methodSecurityExpressionHandler() {
548+
return this.expressionHandler;
549+
}
550+
551+
}
552+
526553
@EnableMethodSecurity
527554
static class CustomPermissionEvaluatorConfig {
528555

0 commit comments

Comments
 (0)