|
20 | 20 | import java.lang.annotation.RetentionPolicy;
|
21 | 21 | import java.lang.annotation.Target;
|
22 | 22 | import java.lang.reflect.Method;
|
23 |
| -import java.util.function.Function; |
24 | 23 |
|
25 | 24 | import org.junit.After;
|
26 | 25 | import org.junit.Before;
|
27 | 26 | import org.junit.Test;
|
28 | 27 |
|
29 | 28 | import org.springframework.core.MethodParameter;
|
30 |
| -import org.springframework.expression.AccessException; |
31 | 29 | import org.springframework.expression.BeanResolver;
|
32 | 30 | import org.springframework.expression.spel.SpelEvaluationException;
|
33 | 31 | import org.springframework.security.authentication.TestingAuthenticationToken;
|
|
41 | 39 |
|
42 | 40 | import static org.assertj.core.api.Assertions.assertThat;
|
43 | 41 | import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
| 42 | +import static org.mockito.ArgumentMatchers.any; |
| 43 | +import static org.mockito.ArgumentMatchers.eq; |
| 44 | +import static org.mockito.BDDMockito.mock; |
| 45 | +import static org.mockito.BDDMockito.verify; |
| 46 | +import static org.mockito.BDDMockito.when; |
44 | 47 |
|
45 | 48 | /**
|
46 | 49 | * @author Dan Zheng
|
|
49 | 52 | */
|
50 | 53 | public class CurrentSecurityContextArgumentResolverTests {
|
51 | 54 |
|
52 |
| - private final BeanResolver beanResolver = ((context, beanName) -> { |
53 |
| - if (!"test".equals(beanName)) { |
54 |
| - throw new AccessException("Could not resolve bean reference against BeanFactory"); |
55 |
| - } |
56 |
| - return (Function<SecurityContext, Authentication>) SecurityContext::getAuthentication; |
57 |
| - }); |
| 55 | + private BeanResolver beanResolver; |
58 | 56 |
|
59 | 57 | private CurrentSecurityContextArgumentResolver resolver;
|
60 | 58 |
|
61 | 59 | @Before
|
62 | 60 | public void setup() {
|
| 61 | + this.beanResolver = mock(BeanResolver.class); |
63 | 62 | this.resolver = new CurrentSecurityContextArgumentResolver();
|
64 | 63 | this.resolver.setBeanResolver(this.beanResolver);
|
65 | 64 | }
|
@@ -117,12 +116,12 @@ public void resolveArgumentWithAuthentication() {
|
117 | 116 | }
|
118 | 117 |
|
119 | 118 | @Test
|
120 |
| - public void resolveArgumentWithAuthenticationWithBean() { |
| 119 | + public void resolveArgumentWithAuthenticationWithBean() throws Exception { |
121 | 120 | String principal = "john";
|
122 |
| - setAuthenticationPrincipal(principal); |
123 |
| - Authentication auth1 = (Authentication) this.resolver |
124 |
| - .resolveArgument(showSecurityContextAuthenticationWithBean(), null, null, null); |
125 |
| - assertThat(auth1.getPrincipal()).isEqualTo(principal); |
| 121 | + when(this.beanResolver.resolve(any(), eq("test"))).thenReturn(principal); |
| 122 | + assertThat(this.resolver.resolveArgument(showSecurityContextAuthenticationWithBean(), null, null, null)) |
| 123 | + .isEqualTo(principal); |
| 124 | + verify(this.beanResolver).resolve(any(), eq("test")); |
126 | 125 | }
|
127 | 126 |
|
128 | 127 | @Test
|
@@ -239,7 +238,7 @@ private MethodParameter showSecurityContextAuthenticationAnnotation() {
|
239 | 238 | }
|
240 | 239 |
|
241 | 240 | public MethodParameter showSecurityContextAuthenticationWithBean() {
|
242 |
| - return getMethodParameter("showSecurityContextAuthenticationWithBean", Authentication.class); |
| 241 | + return getMethodParameter("showSecurityContextAuthenticationWithBean", String.class); |
243 | 242 | }
|
244 | 243 |
|
245 | 244 | private MethodParameter showSecurityContextAuthenticationWithOptionalPrincipal() {
|
@@ -305,7 +304,7 @@ public void showSecurityContextAuthenticationAnnotation(@CurrentSecurityContext(
|
305 | 304 | }
|
306 | 305 |
|
307 | 306 | public void showSecurityContextAuthenticationWithBean(
|
308 |
| - @CurrentSecurityContext(expression = "@test.apply(#this)") Authentication authentication) { |
| 307 | + @CurrentSecurityContext(expression = "@test") String name) { |
309 | 308 | }
|
310 | 309 |
|
311 | 310 | public void showSecurityContextAuthenticationWithOptionalPrincipal(@CurrentSecurityContext(expression = "authentication?.principal") Object principal) {
|
|
0 commit comments