|
@@ -23,7 +23,6 @@ import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Iterator;
|
|
|
import java.util.Map;
|
|
|
-import java.util.function.BiFunction;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.function.Predicate;
|
|
|
|
|
@@ -55,7 +54,6 @@ import org.springframework.security.oauth2.core.TestOAuth2AccessTokens;
|
|
|
import org.springframework.security.oauth2.core.converter.ClaimTypeConverter;
|
|
|
import org.springframework.security.oauth2.core.oidc.IdTokenClaimNames;
|
|
|
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
|
|
|
-import org.springframework.security.oauth2.core.oidc.OidcUserInfo;
|
|
|
import org.springframework.security.oauth2.core.oidc.StandardClaimNames;
|
|
|
import org.springframework.security.oauth2.core.oidc.TestOidcIdTokens;
|
|
|
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
|
|
@@ -68,8 +66,6 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|
|
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
|
|
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
|
-import static org.mockito.ArgumentMatchers.eq;
|
|
|
-import static org.mockito.ArgumentMatchers.isNull;
|
|
|
import static org.mockito.ArgumentMatchers.same;
|
|
|
import static org.mockito.BDDMockito.given;
|
|
|
import static org.mockito.Mockito.mock;
|
|
@@ -225,54 +221,6 @@ public class OidcReactiveOAuth2UserServiceTests {
|
|
|
verify(customRetrieveUserInfo).test(userRequest);
|
|
|
}
|
|
|
|
|
|
- @Test
|
|
|
- public void loadUserWhenCustomOidcUserMapperSetThenUsed() {
|
|
|
- Map<String, Object> attributes = new HashMap<>();
|
|
|
- attributes.put(StandardClaimNames.SUB, "subject");
|
|
|
- attributes.put("user", "steve");
|
|
|
- OAuth2User oauth2User = new DefaultOAuth2User(AuthorityUtils.createAuthorityList("ROLE_USER"), attributes,
|
|
|
- "user");
|
|
|
- given(this.oauth2UserService.loadUser(any(OidcUserRequest.class))).willReturn(Mono.just(oauth2User));
|
|
|
- BiFunction<OidcUserRequest, OidcUserInfo, Mono<OidcUser>> customOidcUserMapper = mock(BiFunction.class);
|
|
|
- OidcUser actualUser = new DefaultOidcUser(AuthorityUtils.createAuthorityList("a", "b"), this.idToken,
|
|
|
- IdTokenClaimNames.SUB);
|
|
|
- given(customOidcUserMapper.apply(any(OidcUserRequest.class), any(OidcUserInfo.class)))
|
|
|
- .willReturn(Mono.just(actualUser));
|
|
|
- this.userService.setOidcUserMapper(customOidcUserMapper);
|
|
|
- OidcUserRequest userRequest = userRequest();
|
|
|
- OidcUser oidcUser = this.userService.loadUser(userRequest).block();
|
|
|
- assertThat(oidcUser).isNotNull();
|
|
|
- assertThat(oidcUser).isEqualTo(actualUser);
|
|
|
- ArgumentCaptor<OidcUserInfo> userInfoCaptor = ArgumentCaptor.forClass(OidcUserInfo.class);
|
|
|
- verify(customOidcUserMapper).apply(eq(userRequest), userInfoCaptor.capture());
|
|
|
- OidcUserInfo userInfo = userInfoCaptor.getValue();
|
|
|
- assertThat(userInfo.getSubject()).isEqualTo("subject");
|
|
|
- assertThat(userInfo.getClaimAsString("user")).isEqualTo("steve");
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void loadUserWhenCustomOidcUserMapperSetAndUserInfoNotRetrievedThenUsed() {
|
|
|
- // @formatter:off
|
|
|
- this.accessToken = new OAuth2AccessToken(
|
|
|
- this.accessToken.getTokenType(),
|
|
|
- this.accessToken.getTokenValue(),
|
|
|
- this.accessToken.getIssuedAt(),
|
|
|
- this.accessToken.getExpiresAt(),
|
|
|
- Collections.emptySet());
|
|
|
- // @formatter:on
|
|
|
- BiFunction<OidcUserRequest, OidcUserInfo, Mono<OidcUser>> customOidcUserMapper = mock(BiFunction.class);
|
|
|
- OidcUser actualUser = new DefaultOidcUser(AuthorityUtils.createAuthorityList("a", "b"), this.idToken,
|
|
|
- IdTokenClaimNames.SUB);
|
|
|
- given(customOidcUserMapper.apply(any(OidcUserRequest.class), isNull())).willReturn(Mono.just(actualUser));
|
|
|
- this.userService.setOidcUserMapper(customOidcUserMapper);
|
|
|
- this.userService.setRetrieveUserInfo((oidcUserRequest) -> false);
|
|
|
- OidcUserRequest userRequest = userRequest();
|
|
|
- OidcUser oidcUser = this.userService.loadUser(userRequest).block();
|
|
|
- assertThat(oidcUser).isNotNull();
|
|
|
- assertThat(oidcUser).isEqualTo(actualUser);
|
|
|
- verify(customOidcUserMapper).apply(eq(userRequest), isNull(OidcUserInfo.class));
|
|
|
- }
|
|
|
-
|
|
|
@Test
|
|
|
public void loadUserWhenTokenContainsScopesThenIndividualScopeAuthorities() {
|
|
|
OidcReactiveOAuth2UserService userService = new OidcReactiveOAuth2UserService();
|