Apply updated Code Style
Closes gh-13881
This commit is contained in:
@@ -160,7 +160,7 @@ public interface ClaimAccessor {
|
||||
TypeDescriptor.valueOf(Object.class));
|
||||
Object claimValue = getClaims().get(claim);
|
||||
Map<String, Object> convertedValue = (Map<String, Object>) ClaimConversionService.getSharedInstance()
|
||||
.convert(claimValue, sourceDescriptor, targetDescriptor);
|
||||
.convert(claimValue, sourceDescriptor, targetDescriptor);
|
||||
Assert.isTrue(convertedValue != null,
|
||||
() -> "Unable to convert claim '" + claim + "' of type '" + claimValue.getClass() + "' to Map.");
|
||||
return convertedValue;
|
||||
@@ -184,8 +184,8 @@ public interface ClaimAccessor {
|
||||
final TypeDescriptor targetDescriptor = TypeDescriptor.collection(List.class,
|
||||
TypeDescriptor.valueOf(String.class));
|
||||
Object claimValue = getClaims().get(claim);
|
||||
List<String> convertedValue = (List<String>) ClaimConversionService.getSharedInstance().convert(claimValue,
|
||||
sourceDescriptor, targetDescriptor);
|
||||
List<String> convertedValue = (List<String>) ClaimConversionService.getSharedInstance()
|
||||
.convert(claimValue, sourceDescriptor, targetDescriptor);
|
||||
Assert.isTrue(convertedValue != null,
|
||||
() -> "Unable to convert claim '" + claim + "' of type '" + claimValue.getClass() + "' to List.");
|
||||
return convertedValue;
|
||||
|
||||
@@ -67,7 +67,7 @@ public final class DefaultMapOAuth2AccessTokenResponseConverter
|
||||
|
||||
private static OAuth2AccessToken.TokenType getAccessTokenType(Map<String, Object> tokenResponseParameters) {
|
||||
if (OAuth2AccessToken.TokenType.BEARER.getValue()
|
||||
.equalsIgnoreCase(getParameterValue(tokenResponseParameters, OAuth2ParameterNames.TOKEN_TYPE))) {
|
||||
.equalsIgnoreCase(getParameterValue(tokenResponseParameters, OAuth2ParameterNames.TOKEN_TYPE))) {
|
||||
return OAuth2AccessToken.TokenType.BEARER;
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -194,8 +194,8 @@ public final class OAuth2AccessTokenResponse {
|
||||
accessTokenResponse.refreshToken = new OAuth2RefreshToken(this.refreshToken, issuedAt);
|
||||
}
|
||||
accessTokenResponse.additionalParameters = Collections
|
||||
.unmodifiableMap(CollectionUtils.isEmpty(this.additionalParameters) ? Collections.emptyMap()
|
||||
: this.additionalParameters);
|
||||
.unmodifiableMap(CollectionUtils.isEmpty(this.additionalParameters) ? Collections.emptyMap()
|
||||
: this.additionalParameters);
|
||||
return accessTokenResponse;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ public final class OAuth2AccessTokenResponseMapConverter
|
||||
public Map<String, String> convert(OAuth2AccessTokenResponse tokenResponse) {
|
||||
Map<String, String> stringTokenResponseParameters = new HashMap<>();
|
||||
this.delegate.convert(tokenResponse)
|
||||
.forEach((key, value) -> stringTokenResponseParameters.put(key, String.valueOf(value)));
|
||||
.forEach((key, value) -> stringTokenResponseParameters.put(key, String.valueOf(value)));
|
||||
return stringTokenResponseParameters;
|
||||
}
|
||||
|
||||
|
||||
@@ -89,14 +89,14 @@ public class OAuth2AccessTokenResponseHttpMessageConverter
|
||||
HttpInputMessage inputMessage) throws HttpMessageNotReadableException {
|
||||
try {
|
||||
Map<String, Object> tokenResponseParameters = (Map<String, Object>) this.jsonMessageConverter
|
||||
.read(STRING_OBJECT_MAP.getType(), null, inputMessage);
|
||||
.read(STRING_OBJECT_MAP.getType(), null, inputMessage);
|
||||
// Only use deprecated converter if it has been set directly
|
||||
if (this.tokenResponseConverter.getClass() != MapOAuth2AccessTokenResponseConverter.class) {
|
||||
// gh-6463: Parse parameter values as Object in order to handle potential
|
||||
// JSON Object and then convert values to String
|
||||
Map<String, String> stringTokenResponseParameters = new HashMap<>();
|
||||
tokenResponseParameters
|
||||
.forEach((key, value) -> stringTokenResponseParameters.put(key, String.valueOf(value)));
|
||||
.forEach((key, value) -> stringTokenResponseParameters.put(key, String.valueOf(value)));
|
||||
return this.tokenResponseConverter.convert(stringTokenResponseParameters);
|
||||
}
|
||||
return this.accessTokenResponseConverter.convert(tokenResponseParameters);
|
||||
|
||||
@@ -75,9 +75,10 @@ public class OAuth2ErrorHttpMessageConverter extends AbstractHttpMessageConverte
|
||||
// gh-8157: Parse parameter values as Object in order to handle potential JSON
|
||||
// Object and then convert values to String
|
||||
Map<String, Object> errorParameters = (Map<String, Object>) this.jsonMessageConverter
|
||||
.read(STRING_OBJECT_MAP.getType(), null, inputMessage);
|
||||
return this.errorConverter.convert(errorParameters.entrySet().stream()
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, (entry) -> String.valueOf(entry.getValue()))));
|
||||
.read(STRING_OBJECT_MAP.getType(), null, inputMessage);
|
||||
return this.errorConverter.convert(errorParameters.entrySet()
|
||||
.stream()
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, (entry) -> String.valueOf(entry.getValue()))));
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new HttpMessageNotReadableException(
|
||||
|
||||
@@ -62,16 +62,16 @@ class OAuth2AccessTokenResponseBodyExtractor
|
||||
@Override
|
||||
public Mono<OAuth2AccessTokenResponse> extract(ReactiveHttpInputMessage inputMessage, Context context) {
|
||||
BodyExtractor<Mono<Map<String, Object>>, ReactiveHttpInputMessage> delegate = BodyExtractors
|
||||
.toMono(STRING_OBJECT_MAP);
|
||||
.toMono(STRING_OBJECT_MAP);
|
||||
return delegate.extract(inputMessage, context)
|
||||
.onErrorMap((ex) -> new OAuth2AuthorizationException(
|
||||
invalidTokenResponse("An error occurred parsing the Access Token response: " + ex.getMessage()),
|
||||
ex))
|
||||
.switchIfEmpty(Mono.error(() -> new OAuth2AuthorizationException(
|
||||
invalidTokenResponse("Empty OAuth 2.0 Access Token Response"))))
|
||||
.map(OAuth2AccessTokenResponseBodyExtractor::parse)
|
||||
.flatMap(OAuth2AccessTokenResponseBodyExtractor::oauth2AccessTokenResponse)
|
||||
.map(OAuth2AccessTokenResponseBodyExtractor::oauth2AccessTokenResponse);
|
||||
.onErrorMap((ex) -> new OAuth2AuthorizationException(
|
||||
invalidTokenResponse("An error occurred parsing the Access Token response: " + ex.getMessage()),
|
||||
ex))
|
||||
.switchIfEmpty(Mono.error(() -> new OAuth2AuthorizationException(
|
||||
invalidTokenResponse("Empty OAuth 2.0 Access Token Response"))))
|
||||
.map(OAuth2AccessTokenResponseBodyExtractor::parse)
|
||||
.flatMap(OAuth2AccessTokenResponseBodyExtractor::oauth2AccessTokenResponse)
|
||||
.map(OAuth2AccessTokenResponseBodyExtractor::oauth2AccessTokenResponse);
|
||||
}
|
||||
|
||||
private static TokenResponse parse(Map<String, Object> json) {
|
||||
|
||||
@@ -31,7 +31,7 @@ public class AuthenticationMethodTests {
|
||||
@Test
|
||||
public void constructorWhenValueIsNullThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new AuthenticationMethod(null))
|
||||
.withMessage("value cannot be empty");
|
||||
.withMessage("value cannot be empty");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -56,7 +56,7 @@ public class AuthorizationGrantTypeTests {
|
||||
@Test
|
||||
public void getValueWhenJwtBearerGrantTypeThenReturnJwtBearer() {
|
||||
assertThat(AuthorizationGrantType.JWT_BEARER.getValue())
|
||||
.isEqualTo("urn:ietf:params:oauth:grant-type:jwt-bearer");
|
||||
.isEqualTo("urn:ietf:params:oauth:grant-type:jwt-bearer");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -128,8 +128,8 @@ public class ClaimAccessorTests {
|
||||
Map<Object, Object> claimValue = new HashMap<>();
|
||||
this.claims.put(claimName, claimValue);
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> this.claimAccessor.getClaimAsBoolean(claimName))
|
||||
.withMessage("Unable to convert claim '" + claimName + "' of type '" + claimValue.getClass()
|
||||
+ "' to Boolean.");
|
||||
.withMessage(
|
||||
"Unable to convert claim '" + claimName + "' of type '" + claimValue.getClass() + "' to Boolean.");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -44,18 +44,19 @@ public class DefaultOAuth2AuthenticatedPrincipalTests {
|
||||
@Test
|
||||
public void constructorWhenAttributesIsNullOrEmptyThenIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new DefaultOAuth2AuthenticatedPrincipal(null, this.authorities));
|
||||
.isThrownBy(() -> new DefaultOAuth2AuthenticatedPrincipal(null, this.authorities));
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new DefaultOAuth2AuthenticatedPrincipal(Collections.emptyMap(), this.authorities));
|
||||
.isThrownBy(() -> new DefaultOAuth2AuthenticatedPrincipal(Collections.emptyMap(), this.authorities));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenAuthoritiesIsNullOrEmptyThenNoAuthorities() {
|
||||
Collection<? extends GrantedAuthority> authorities = new DefaultOAuth2AuthenticatedPrincipal(this.attributes,
|
||||
null).getAuthorities();
|
||||
null)
|
||||
.getAuthorities();
|
||||
assertThat(authorities).isEmpty();
|
||||
authorities = new DefaultOAuth2AuthenticatedPrincipal(this.attributes, Collections.emptyList())
|
||||
.getAuthorities();
|
||||
.getAuthorities();
|
||||
assertThat(authorities).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
@@ -65,9 +65,9 @@ public class DelegatingOAuth2TokenValidatorTests {
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> secondFailure = mock(OAuth2TokenValidator.class);
|
||||
OAuth2Error otherDetail = new OAuth2Error("another-error");
|
||||
given(firstFailure.validate(any(AbstractOAuth2Token.class)))
|
||||
.willReturn(OAuth2TokenValidatorResult.failure(DETAIL));
|
||||
.willReturn(OAuth2TokenValidatorResult.failure(DETAIL));
|
||||
given(secondFailure.validate(any(AbstractOAuth2Token.class)))
|
||||
.willReturn(OAuth2TokenValidatorResult.failure(otherDetail));
|
||||
.willReturn(OAuth2TokenValidatorResult.failure(otherDetail));
|
||||
DelegatingOAuth2TokenValidator<AbstractOAuth2Token> tokenValidator = new DelegatingOAuth2TokenValidator<>(
|
||||
firstFailure, secondFailure);
|
||||
AbstractOAuth2Token token = mock(AbstractOAuth2Token.class);
|
||||
|
||||
@@ -53,13 +53,13 @@ public class OAuth2AccessTokenTests {
|
||||
@Test
|
||||
public void constructorWhenTokenTypeIsNullThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new OAuth2AccessToken(null, TOKEN_VALUE, ISSUED_AT, EXPIRES_AT));
|
||||
.isThrownBy(() -> new OAuth2AccessToken(null, TOKEN_VALUE, ISSUED_AT, EXPIRES_AT));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenTokenValueIsNullThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new OAuth2AccessToken(TOKEN_TYPE, null, ISSUED_AT, EXPIRES_AT));
|
||||
.isThrownBy(() -> new OAuth2AccessToken(TOKEN_TYPE, null, ISSUED_AT, EXPIRES_AT));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -39,23 +39,21 @@ public class OAuth2RefreshTokenTests {
|
||||
@Test
|
||||
public void constructorWhenTokenValueIsNullThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new OAuth2RefreshToken(null, ISSUED_AT, EXPIRES_AT))
|
||||
.withMessage("tokenValue cannot be empty");
|
||||
.withMessage("tokenValue cannot be empty");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenIssuedAtAfterExpiresAtThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(
|
||||
() -> new OAuth2RefreshToken(TOKEN_VALUE, Instant.from(EXPIRES_AT).plusSeconds(1), EXPIRES_AT))
|
||||
.withMessage("expiresAt must be after issuedAt");
|
||||
.isThrownBy(() -> new OAuth2RefreshToken(TOKEN_VALUE, Instant.from(EXPIRES_AT).plusSeconds(1), EXPIRES_AT))
|
||||
.withMessage("expiresAt must be after issuedAt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenExpiresAtBeforeIssuedAtThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(
|
||||
() -> new OAuth2RefreshToken(TOKEN_VALUE, ISSUED_AT, Instant.from(ISSUED_AT).minusSeconds(1)))
|
||||
.withMessage("expiresAt must be after issuedAt");
|
||||
.isThrownBy(() -> new OAuth2RefreshToken(TOKEN_VALUE, ISSUED_AT, Instant.from(ISSUED_AT).minusSeconds(1)))
|
||||
.withMessage("expiresAt must be after issuedAt");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -101,16 +101,16 @@ public class ClaimConversionServiceTests {
|
||||
public void convertInstantWhenNumberThenConverts() {
|
||||
Instant instant = Instant.now();
|
||||
assertThat(this.conversionService.convert(instant.getEpochSecond(), Instant.class))
|
||||
.isEqualTo(instant.truncatedTo(ChronoUnit.SECONDS));
|
||||
.isEqualTo(instant.truncatedTo(ChronoUnit.SECONDS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertInstantWhenStringThenConverts() {
|
||||
Instant instant = Instant.now();
|
||||
assertThat(this.conversionService.convert(String.valueOf(instant.getEpochSecond()), Instant.class))
|
||||
.isEqualTo(instant.truncatedTo(ChronoUnit.SECONDS));
|
||||
.isEqualTo(instant.truncatedTo(ChronoUnit.SECONDS));
|
||||
assertThat(this.conversionService.convert(String.valueOf(instant.toString()), Instant.class))
|
||||
.isEqualTo(instant);
|
||||
.isEqualTo(instant);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -155,7 +155,7 @@ public class ClaimConversionServiceTests {
|
||||
@Test
|
||||
public void convertCollectionStringWhenListNumberThenConverts() {
|
||||
assertThat(this.conversionService.convert(Lists.list(1, 2, 3, 4), Collection.class))
|
||||
.isEqualTo(Lists.list("1", "2", "3", "4"));
|
||||
.isEqualTo(Lists.list("1", "2", "3", "4"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -166,14 +166,14 @@ public class ClaimConversionServiceTests {
|
||||
jsonArray.add("3");
|
||||
jsonArray.add(null);
|
||||
assertThat(this.conversionService.convert(jsonArray, List.class)).isNotInstanceOf(JSONArray.class)
|
||||
.isEqualTo(Lists.list("1", "2", "3"));
|
||||
.isEqualTo(Lists.list("1", "2", "3"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionStringWhenNotConvertibleThenReturnSingletonList() {
|
||||
String string = "not-convertible-collection";
|
||||
assertThat(this.conversionService.convert(string, Collection.class))
|
||||
.isEqualTo(Collections.singletonList(string));
|
||||
.isEqualTo(Collections.singletonList(string));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -190,7 +190,7 @@ public class ClaimConversionServiceTests {
|
||||
@Test
|
||||
public void convertListStringWhenListNumberThenConverts() {
|
||||
assertThat(this.conversionService.convert(Lists.list(1, 2, 3, 4), List.class))
|
||||
.isEqualTo(Lists.list("1", "2", "3", "4"));
|
||||
.isEqualTo(Lists.list("1", "2", "3", "4"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -214,7 +214,7 @@ public class ClaimConversionServiceTests {
|
||||
}
|
||||
};
|
||||
assertThat(this.conversionService.convert(mapStringObject, Map.class)).isNotSameAs(mapStringObject)
|
||||
.isEqualTo(mapStringObject);
|
||||
.isEqualTo(mapStringObject);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -249,7 +249,7 @@ public class ClaimConversionServiceTests {
|
||||
}
|
||||
};
|
||||
assertThat(this.conversionService.convert(jsonObject, Map.class)).isNotInstanceOf(JSONObject.class)
|
||||
.isEqualTo(mapStringObject);
|
||||
.isEqualTo(mapStringObject);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -90,8 +90,8 @@ public class ClaimTypeConverterTests {
|
||||
|
||||
private static Converter<Object, ?> getConverter(TypeDescriptor targetDescriptor) {
|
||||
final TypeDescriptor sourceDescriptor = TypeDescriptor.valueOf(Object.class);
|
||||
return (source) -> ClaimConversionService.getSharedInstance().convert(source, sourceDescriptor,
|
||||
targetDescriptor);
|
||||
return (source) -> ClaimConversionService.getSharedInstance()
|
||||
.convert(source, sourceDescriptor, targetDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -77,7 +77,7 @@ public class OAuth2AccessTokenResponseTests {
|
||||
.build();
|
||||
// @formatter:on
|
||||
assertThat(tokenResponse.getAccessToken().getExpiresAt())
|
||||
.isEqualTo(tokenResponse.getAccessToken().getIssuedAt().plusSeconds(1));
|
||||
.isEqualTo(tokenResponse.getAccessToken().getIssuedAt().plusSeconds(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -89,7 +89,7 @@ public class OAuth2AccessTokenResponseTests {
|
||||
.build();
|
||||
// @formatter:on
|
||||
assertThat(tokenResponse.getAccessToken().getExpiresAt())
|
||||
.isEqualTo(tokenResponse.getAccessToken().getIssuedAt().plusSeconds(1));
|
||||
.isEqualTo(tokenResponse.getAccessToken().getIssuedAt().plusSeconds(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -136,14 +136,14 @@ public class OAuth2AccessTokenResponseTests {
|
||||
// @formatter:on
|
||||
OAuth2AccessTokenResponse withResponse = OAuth2AccessTokenResponse.withResponse(tokenResponse).build();
|
||||
assertThat(withResponse.getAccessToken().getTokenValue())
|
||||
.isEqualTo(tokenResponse.getAccessToken().getTokenValue());
|
||||
.isEqualTo(tokenResponse.getAccessToken().getTokenValue());
|
||||
assertThat(withResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(withResponse.getAccessToken().getIssuedAt()).isEqualTo(tokenResponse.getAccessToken().getIssuedAt());
|
||||
assertThat(withResponse.getAccessToken().getExpiresAt())
|
||||
.isEqualTo(tokenResponse.getAccessToken().getExpiresAt());
|
||||
.isEqualTo(tokenResponse.getAccessToken().getExpiresAt());
|
||||
assertThat(withResponse.getAccessToken().getScopes()).isEqualTo(tokenResponse.getAccessToken().getScopes());
|
||||
assertThat(withResponse.getRefreshToken().getTokenValue())
|
||||
.isEqualTo(tokenResponse.getRefreshToken().getTokenValue());
|
||||
.isEqualTo(tokenResponse.getRefreshToken().getTokenValue());
|
||||
assertThat(withResponse.getAdditionalParameters()).isEqualTo(tokenResponse.getAdditionalParameters());
|
||||
}
|
||||
|
||||
@@ -175,9 +175,10 @@ public class OAuth2AccessTokenResponseTests {
|
||||
// @formatter:on
|
||||
long expiresIn = 30;
|
||||
OAuth2AccessTokenResponse withResponse = OAuth2AccessTokenResponse.withResponse(tokenResponse)
|
||||
.expiresIn(expiresIn).build();
|
||||
.expiresIn(expiresIn)
|
||||
.build();
|
||||
assertThat(withResponse.getAccessToken().getExpiresAt())
|
||||
.isEqualTo(withResponse.getAccessToken().getIssuedAt().plusSeconds(expiresIn));
|
||||
.isEqualTo(withResponse.getAccessToken().getIssuedAt().plusSeconds(expiresIn));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -36,8 +36,8 @@ public class OAuth2AuthorizationExchangeTests {
|
||||
|
||||
@Test
|
||||
public void constructorWhenAuthorizationResponseIsNullThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException().isThrownBy(
|
||||
() -> new OAuth2AuthorizationExchange(TestOAuth2AuthorizationRequests.request().build(), null));
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new OAuth2AuthorizationExchange(TestOAuth2AuthorizationRequests.request().build(), null));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -220,8 +220,8 @@ public class OAuth2AuthorizationRequestTests {
|
||||
.build();
|
||||
// @formatter:on
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri())
|
||||
.isEqualTo("https://provider.com/oauth2/authorize?" + "response_type=token&client_id=client-id&"
|
||||
+ "scope=scope1%20scope2&state=state&" + "redirect_uri=https://example.com");
|
||||
.isEqualTo("https://provider.com/oauth2/authorize?" + "response_type=token&client_id=client-id&"
|
||||
+ "scope=scope1%20scope2&state=state&" + "redirect_uri=https://example.com");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -260,8 +260,13 @@ public class OAuth2AuthorizationRequestTests {
|
||||
additionalParameters.put("param1", "value1");
|
||||
additionalParameters.put("param2", "value2");
|
||||
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.authorizationCode()
|
||||
.authorizationUri(AUTHORIZATION_URI).clientId(CLIENT_ID).redirectUri(REDIRECT_URI).scopes(SCOPES)
|
||||
.state(STATE).additionalParameters(additionalParameters).build();
|
||||
.authorizationUri(AUTHORIZATION_URI)
|
||||
.clientId(CLIENT_ID)
|
||||
.redirectUri(REDIRECT_URI)
|
||||
.scopes(SCOPES)
|
||||
.state(STATE)
|
||||
.additionalParameters(additionalParameters)
|
||||
.build();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isNotNull();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isEqualTo("https://provider.com/oauth2/authorize?"
|
||||
+ "response_type=code&client_id=client-id&" + "scope=scope1%20scope2&state=state&"
|
||||
@@ -271,9 +276,11 @@ public class OAuth2AuthorizationRequestTests {
|
||||
@Test
|
||||
public void buildWhenRequiredParametersSetThenAuthorizationRequestUriIncludesRequiredParametersOnly() {
|
||||
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.authorizationCode()
|
||||
.authorizationUri(AUTHORIZATION_URI).clientId(CLIENT_ID).build();
|
||||
.authorizationUri(AUTHORIZATION_URI)
|
||||
.clientId(CLIENT_ID)
|
||||
.build();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri())
|
||||
.isEqualTo("https://provider.com/oauth2/authorize?response_type=code&client_id=client-id");
|
||||
.isEqualTo("https://provider.com/oauth2/authorize?response_type=code&client_id=client-id");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -303,7 +310,7 @@ public class OAuth2AuthorizationRequestTests {
|
||||
.build();
|
||||
// @formatter:on
|
||||
assertThat(authorizationRequestCopy.getAuthorizationUri())
|
||||
.isEqualTo(authorizationRequest.getAuthorizationUri());
|
||||
.isEqualTo(authorizationRequest.getAuthorizationUri());
|
||||
assertThat(authorizationRequestCopy.getGrantType()).isEqualTo(authorizationRequest.getGrantType());
|
||||
assertThat(authorizationRequestCopy.getResponseType()).isEqualTo(authorizationRequest.getResponseType());
|
||||
assertThat(authorizationRequestCopy.getClientId()).isEqualTo(authorizationRequest.getClientId());
|
||||
@@ -311,16 +318,17 @@ public class OAuth2AuthorizationRequestTests {
|
||||
assertThat(authorizationRequestCopy.getScopes()).isEqualTo(authorizationRequest.getScopes());
|
||||
assertThat(authorizationRequestCopy.getState()).isEqualTo(authorizationRequest.getState());
|
||||
assertThat(authorizationRequestCopy.getAdditionalParameters())
|
||||
.isEqualTo(authorizationRequest.getAdditionalParameters());
|
||||
.isEqualTo(authorizationRequest.getAdditionalParameters());
|
||||
assertThat(authorizationRequestCopy.getAttributes()).isEqualTo(authorizationRequest.getAttributes());
|
||||
assertThat(authorizationRequestCopy.getAuthorizationRequestUri())
|
||||
.isEqualTo(authorizationRequest.getAuthorizationRequestUri());
|
||||
.isEqualTo(authorizationRequest.getAuthorizationRequestUri());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildWhenAuthorizationUriIncludesQueryParameterThenAuthorizationRequestUrlIncludesIt() {
|
||||
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
|
||||
.authorizationUri(AUTHORIZATION_URI + "?param1=value1¶m2=value2").build();
|
||||
.authorizationUri(AUTHORIZATION_URI + "?param1=value1¶m2=value2")
|
||||
.build();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isNotNull();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isEqualTo("https://provider.com/oauth2/authorize?"
|
||||
+ "param1=value1¶m2=value2&" + "response_type=code&client_id=client-id&state=state&"
|
||||
@@ -330,9 +338,9 @@ public class OAuth2AuthorizationRequestTests {
|
||||
@Test
|
||||
public void buildWhenAuthorizationUriIncludesEscapedQueryParameterThenAuthorizationRequestUrlIncludesIt() {
|
||||
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
|
||||
.authorizationUri(AUTHORIZATION_URI
|
||||
+ "?claims=%7B%22userinfo%22%3A%7B%22email_verified%22%3A%7B%22essential%22%3Atrue%7D%7D%7D")
|
||||
.build();
|
||||
.authorizationUri(AUTHORIZATION_URI
|
||||
+ "?claims=%7B%22userinfo%22%3A%7B%22email_verified%22%3A%7B%22essential%22%3Atrue%7D%7D%7D")
|
||||
.build();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isNotNull();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isEqualTo("https://provider.com/oauth2/authorize?"
|
||||
+ "claims=%7B%22userinfo%22%3A%7B%22email_verified%22%3A%7B%22essential%22%3Atrue%7D%7D%7D&"
|
||||
@@ -347,7 +355,8 @@ public class OAuth2AuthorizationRequestTests {
|
||||
additionalParameters.put("item name", "H" + '\u00c5' + "M" + '\u00d6');
|
||||
additionalParameters.put('\u00e2' + "ge", "4" + '\u00bd');
|
||||
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
|
||||
.additionalParameters(additionalParameters).build();
|
||||
.additionalParameters(additionalParameters)
|
||||
.build();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isNotNull();
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri()).isEqualTo(
|
||||
"https://example.com/login/oauth/authorize?" + "response_type=code&client_id=client-id&state=state&"
|
||||
|
||||
@@ -45,7 +45,7 @@ public final class TestOAuth2AccessTokenResponses {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put(OidcParameterNames.ID_TOKEN, "id-token");
|
||||
return accessTokenResponse().scopes(Collections.singleton(OidcScopes.OPENID))
|
||||
.additionalParameters(additionalParameters);
|
||||
.additionalParameters(additionalParameters);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
@Test
|
||||
public void setTokenResponseParametersConverterWhenConverterIsNullThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> this.messageConverter.setTokenResponseParametersConverter(null));
|
||||
.isThrownBy(() -> this.messageConverter.setTokenResponseParametersConverter(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -89,11 +89,11 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
// @formatter:on
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
OAuth2AccessTokenResponse accessTokenResponse = this.messageConverter
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234");
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(accessTokenResponse.getAccessToken().getExpiresAt())
|
||||
.isBeforeOrEqualTo(Instant.now().plusSeconds(3600));
|
||||
.isBeforeOrEqualTo(Instant.now().plusSeconds(3600));
|
||||
assertThat(accessTokenResponse.getAccessToken().getScopes()).containsExactly("read", "write");
|
||||
assertThat(accessTokenResponse.getRefreshToken().getTokenValue()).isEqualTo("refresh-token-1234");
|
||||
assertThat(accessTokenResponse.getAdditionalParameters()).containsExactly(
|
||||
@@ -118,15 +118,17 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
// @formatter:on
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
OAuth2AccessTokenResponse accessTokenResponse = this.messageConverter
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234");
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(accessTokenResponse.getAccessToken().getExpiresAt())
|
||||
.isBeforeOrEqualTo(Instant.now().plusSeconds(3600));
|
||||
.isBeforeOrEqualTo(Instant.now().plusSeconds(3600));
|
||||
assertThat(accessTokenResponse.getAccessToken().getScopes()).containsExactly("read", "write");
|
||||
assertThat(accessTokenResponse.getRefreshToken().getTokenValue()).isEqualTo("refresh-token-1234");
|
||||
Map<String, String> additionalParameters = accessTokenResponse.getAdditionalParameters().entrySet().stream()
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, (entry) -> String.valueOf(entry.getValue())));
|
||||
Map<String, String> additionalParameters = accessTokenResponse.getAdditionalParameters()
|
||||
.entrySet()
|
||||
.stream()
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, (entry) -> String.valueOf(entry.getValue())));
|
||||
assertThat(additionalParameters).containsExactly(entry("custom_object_1", "{name1=value1}"),
|
||||
entry("custom_object_2", "[value1, value2]"), entry("custom_parameter_1", "custom-value-1"),
|
||||
entry("custom_parameter_2", "custom-value-2"));
|
||||
@@ -146,11 +148,11 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
// @formatter:on
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
OAuth2AccessTokenResponse accessTokenResponse = this.messageConverter
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234");
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(accessTokenResponse.getAccessToken().getExpiresAt())
|
||||
.isBeforeOrEqualTo(Instant.now().plusSeconds(3600));
|
||||
.isBeforeOrEqualTo(Instant.now().plusSeconds(3600));
|
||||
assertThat(accessTokenResponse.getAccessToken().getScopes()).isEmpty();
|
||||
assertThat(accessTokenResponse.getRefreshToken().getTokenValue()).isEqualTo("refresh-token-1234");
|
||||
}
|
||||
@@ -163,8 +165,8 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
String tokenResponse = "{}";
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
assertThatExceptionOfType(HttpMessageNotReadableException.class)
|
||||
.isThrownBy(() -> this.messageConverter.readInternal(OAuth2AccessTokenResponse.class, response))
|
||||
.withMessageContaining("An error occurred reading the OAuth 2.0 Access Token Response");
|
||||
.isThrownBy(() -> this.messageConverter.readInternal(OAuth2AccessTokenResponse.class, response))
|
||||
.withMessageContaining("An error occurred reading the OAuth 2.0 Access Token Response");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -210,8 +212,8 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
// @formatter:on
|
||||
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
|
||||
assertThatExceptionOfType(HttpMessageNotWritableException.class)
|
||||
.isThrownBy(() -> this.messageConverter.writeInternal(accessTokenResponse, outputMessage))
|
||||
.withMessageContaining("An error occurred writing the OAuth 2.0 Access Token Response");
|
||||
.isThrownBy(() -> this.messageConverter.writeInternal(accessTokenResponse, outputMessage))
|
||||
.withMessageContaining("An error occurred writing the OAuth 2.0 Access Token Response");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -105,8 +105,8 @@ public class OAuth2ErrorHttpMessageConverterTests {
|
||||
String errorResponse = "{}";
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(errorResponse.getBytes(), HttpStatus.BAD_REQUEST);
|
||||
assertThatExceptionOfType(HttpMessageNotReadableException.class)
|
||||
.isThrownBy(() -> this.messageConverter.readInternal(OAuth2Error.class, response))
|
||||
.withMessageContaining("An error occurred reading the OAuth 2.0 Error");
|
||||
.isThrownBy(() -> this.messageConverter.readInternal(OAuth2Error.class, response))
|
||||
.withMessageContaining("An error occurred reading the OAuth 2.0 Error");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -130,8 +130,8 @@ public class OAuth2ErrorHttpMessageConverterTests {
|
||||
"https://tools.ietf.org/html/rfc6749#section-5.2");
|
||||
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
|
||||
assertThatExceptionOfType(HttpMessageNotWritableException.class)
|
||||
.isThrownBy(() -> this.messageConverter.writeInternal(oauth2Error, outputMessage))
|
||||
.withMessageContaining("An error occurred writing the OAuth 2.0 Error");
|
||||
.isThrownBy(() -> this.messageConverter.writeInternal(oauth2Error, outputMessage))
|
||||
.withMessageContaining("An error occurred writing the OAuth 2.0 Error");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class OidcIdTokenBuilderTests {
|
||||
idToken = idTokenBuilder.expiresAt(now).build();
|
||||
assertThat(idToken.getExpiresAt()).isSameAs(now);
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> idTokenBuilder.claim(IdTokenClaimNames.EXP, "not an instant").build());
|
||||
.isThrownBy(() -> idTokenBuilder.claim(IdTokenClaimNames.EXP, "not an instant").build());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -70,7 +70,7 @@ public class OidcIdTokenBuilderTests {
|
||||
idToken = idTokenBuilder.issuedAt(now).build();
|
||||
assertThat(idToken.getIssuedAt()).isSameAs(now);
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> idTokenBuilder.claim(IdTokenClaimNames.IAT, "not an instant").build());
|
||||
.isThrownBy(() -> idTokenBuilder.claim(IdTokenClaimNames.IAT, "not an instant").build());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -50,13 +50,13 @@ public class DefaultOAuth2UserTests {
|
||||
@Test
|
||||
public void constructorWhenAttributesIsNullThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new DefaultOAuth2User(AUTHORITIES, null, ATTRIBUTE_NAME_KEY));
|
||||
.isThrownBy(() -> new DefaultOAuth2User(AUTHORITIES, null, ATTRIBUTE_NAME_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWhenAttributesIsEmptyThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new DefaultOAuth2User(AUTHORITIES, Collections.emptyMap(), ATTRIBUTE_NAME_KEY));
|
||||
.isThrownBy(() -> new DefaultOAuth2User(AUTHORITIES, Collections.emptyMap(), ATTRIBUTE_NAME_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -67,7 +67,7 @@ public class DefaultOAuth2UserTests {
|
||||
@Test
|
||||
public void constructorWhenNameAttributeKeyIsInvalidThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new DefaultOAuth2User(AUTHORITIES, ATTRIBUTES, "invalid"));
|
||||
.isThrownBy(() -> new DefaultOAuth2User(AUTHORITIES, ATTRIBUTES, "invalid"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -48,7 +48,7 @@ public class OAuth2UserAuthorityTests {
|
||||
@Test
|
||||
public void constructorWhenAttributesIsEmptyThenThrowIllegalArgumentException() {
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> new OAuth2UserAuthority(AUTHORITY, Collections.emptyMap()));
|
||||
.isThrownBy(() -> new OAuth2UserAuthority(AUTHORITY, Collections.emptyMap()));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -85,7 +85,7 @@ public class OAuth2BodyExtractorsTests {
|
||||
@Test
|
||||
public void oauth2AccessTokenResponseWhenInvalidJsonThenException() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
.oauth2AccessTokenResponse();
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
|
||||
response.setBody("{");
|
||||
@@ -100,7 +100,7 @@ public class OAuth2BodyExtractorsTests {
|
||||
@Test
|
||||
public void oauth2AccessTokenResponseWhenEmptyThenException() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
.oauth2AccessTokenResponse();
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
Mono<OAuth2AccessTokenResponse> result = extractor.extract(response, this.context);
|
||||
// @formatter:off
|
||||
@@ -113,7 +113,7 @@ public class OAuth2BodyExtractorsTests {
|
||||
@Test
|
||||
public void oauth2AccessTokenResponseWhenValidThenCreated() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
.oauth2AccessTokenResponse();
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
|
||||
// @formatter:off
|
||||
@@ -139,7 +139,7 @@ public class OAuth2BodyExtractorsTests {
|
||||
// gh-6087
|
||||
public void oauth2AccessTokenResponseWhenMultipleAttributeTypesThenCreated() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
.oauth2AccessTokenResponse();
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
|
||||
// @formatter:off
|
||||
|
||||
Reference in New Issue
Block a user