Skip to content

Commit be6dc1d

Browse files
committed
Polish MethodSecurityExpressionHandler Test
- Rename to follow convention - Use a mock object to verify usage Issue gh-15715
1 parent fc3de5e commit be6dc1d

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

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

+20-18
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.springframework.security.config.annotation.method.configuration;
1818

19-
import java.io.Serializable;
20-
2119
import org.junit.jupiter.api.Test;
2220
import org.junit.jupiter.api.extension.ExtendWith;
2321
import reactor.test.StepVerifier;
@@ -31,11 +29,17 @@
3129
import org.springframework.security.authorization.AuthorizationDeniedException;
3230
import org.springframework.security.config.test.SpringTestContext;
3331
import org.springframework.security.config.test.SpringTestContextExtension;
34-
import org.springframework.security.core.Authentication;
3532
import org.springframework.security.test.context.annotation.SecurityTestExecutionListeners;
3633
import org.springframework.security.test.context.support.WithMockUser;
3734
import org.springframework.test.context.junit.jupiter.SpringExtension;
3835

36+
import static org.mockito.ArgumentMatchers.any;
37+
import static org.mockito.ArgumentMatchers.eq;
38+
import static org.mockito.BDDMockito.given;
39+
import static org.mockito.Mockito.mock;
40+
import static org.mockito.Mockito.times;
41+
import static org.mockito.Mockito.verify;
42+
3943
@ExtendWith({ SpringExtension.class, SpringTestContextExtension.class })
4044
@SecurityTestExecutionListeners
4145
public class PrePostReactiveMethodSecurityConfigurationTests {
@@ -211,13 +215,17 @@ void preAuthorizeWhenAllowedAndHandlerWithCustomAnnotationUsingBeanThenInvokeMet
211215

212216
@Test
213217
@WithMockUser(roles = "ADMIN")
214-
public void customMethodSecurityExpressionHandler() {
218+
public void preAuthorizeWhenCustomMethodSecurityExpressionHandlerThenUses() {
215219
this.spring.register(MethodSecurityServiceEnabledConfig.class, PermissionEvaluatorConfig.class).autowire();
216220
ReactiveMethodSecurityService service = this.spring.getContext().getBean(ReactiveMethodSecurityService.class);
221+
PermissionEvaluator permissionEvaluator = this.spring.getContext().getBean(PermissionEvaluator.class);
222+
given(permissionEvaluator.hasPermission(any(), eq("grant"), any())).willReturn(true);
223+
given(permissionEvaluator.hasPermission(any(), eq("deny"), any())).willReturn(false);
217224
StepVerifier.create(service.preAuthorizeHasPermission("grant")).expectNext("ok").verifyComplete();
218225
StepVerifier.create(service.preAuthorizeHasPermission("deny"))
219226
.expectError(AuthorizationDeniedException.class)
220227
.verify();
228+
verify(permissionEvaluator, times(2)).hasPermission(any(), any(), any());
221229
}
222230

223231
@Configuration
@@ -234,23 +242,17 @@ ReactiveMethodSecurityService methodSecurityService() {
234242
@Configuration
235243
static class PermissionEvaluatorConfig {
236244

245+
@Bean
246+
static PermissionEvaluator permissionEvaluator() {
247+
return mock(PermissionEvaluator.class);
248+
}
249+
237250
@Bean
238251
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
239-
static DefaultMethodSecurityExpressionHandler methodSecurityExpressionHandler() {
252+
static DefaultMethodSecurityExpressionHandler methodSecurityExpressionHandler(
253+
PermissionEvaluator permissionEvaluator) {
240254
DefaultMethodSecurityExpressionHandler handler = new DefaultMethodSecurityExpressionHandler();
241-
handler.setPermissionEvaluator(new PermissionEvaluator() {
242-
@Override
243-
public boolean hasPermission(Authentication authentication, Object targetDomainObject,
244-
Object permission) {
245-
return "grant".equals(targetDomainObject);
246-
}
247-
248-
@Override
249-
public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType,
250-
Object permission) {
251-
throw new UnsupportedOperationException();
252-
}
253-
});
255+
handler.setPermissionEvaluator(permissionEvaluator);
254256
return handler;
255257
}
256258

0 commit comments

Comments
 (0)