Remove blank lines from all tests
Remove all blank lines from test code so that test methods are visually grouped together. This generally helps to make the test classes easer to scan, however, the "given" / "when" / "then" blocks used by some tests are now not as easy to discern. Issue gh-8945
This commit is contained in:
@@ -51,7 +51,6 @@ public class ClaimAccessorTests {
|
||||
Instant expectedClaimValue = Instant.now();
|
||||
String claimName = "date";
|
||||
this.claims.put(claimName, Date.from(expectedClaimValue));
|
||||
|
||||
assertThat(this.claimAccessor.getClaimAsInstant(claimName)).isBetween(expectedClaimValue.minusSeconds(1),
|
||||
expectedClaimValue.plusSeconds(1));
|
||||
}
|
||||
@@ -62,7 +61,6 @@ public class ClaimAccessorTests {
|
||||
Instant expectedClaimValue = Instant.now();
|
||||
String claimName = "longSeconds";
|
||||
this.claims.put(claimName, expectedClaimValue.getEpochSecond());
|
||||
|
||||
assertThat(this.claimAccessor.getClaimAsInstant(claimName)).isBetween(expectedClaimValue.minusSeconds(1),
|
||||
expectedClaimValue.plusSeconds(1));
|
||||
}
|
||||
@@ -72,7 +70,6 @@ public class ClaimAccessorTests {
|
||||
Instant expectedClaimValue = Instant.now();
|
||||
String claimName = "instant";
|
||||
this.claims.put(claimName, expectedClaimValue);
|
||||
|
||||
assertThat(this.claimAccessor.getClaimAsInstant(claimName)).isBetween(expectedClaimValue.minusSeconds(1),
|
||||
expectedClaimValue.plusSeconds(1));
|
||||
}
|
||||
@@ -83,7 +80,6 @@ public class ClaimAccessorTests {
|
||||
Instant expectedClaimValue = Instant.now();
|
||||
String claimName = "integerSeconds";
|
||||
this.claims.put(claimName, Long.valueOf(expectedClaimValue.getEpochSecond()).intValue());
|
||||
|
||||
assertThat(this.claimAccessor.getClaimAsInstant(claimName)).isBetween(expectedClaimValue.minusSeconds(1),
|
||||
expectedClaimValue.plusSeconds(1));
|
||||
}
|
||||
@@ -94,7 +90,6 @@ public class ClaimAccessorTests {
|
||||
Instant expectedClaimValue = Instant.now();
|
||||
String claimName = "doubleSeconds";
|
||||
this.claims.put(claimName, Long.valueOf(expectedClaimValue.getEpochSecond()).doubleValue());
|
||||
|
||||
assertThat(this.claimAccessor.getClaimAsInstant(claimName)).isBetween(expectedClaimValue.minusSeconds(1),
|
||||
expectedClaimValue.plusSeconds(1));
|
||||
}
|
||||
@@ -104,7 +99,6 @@ public class ClaimAccessorTests {
|
||||
public void getClaimAsStringWhenValueIsNullThenReturnNull() {
|
||||
String claimName = "claim-with-null-value";
|
||||
this.claims.put(claimName, null);
|
||||
|
||||
assertThat(this.claimAccessor.getClaimAsString(claimName)).isNull();
|
||||
}
|
||||
|
||||
@@ -120,9 +114,7 @@ public class ClaimAccessorTests {
|
||||
List<String> expectedClaimValue = Arrays.asList("item1", "item2");
|
||||
String claimName = "list";
|
||||
this.claims.put(claimName, expectedClaimValue);
|
||||
|
||||
List<String> actualClaimValue = this.claimAccessor.getClaim(claimName);
|
||||
|
||||
assertThat(actualClaimValue).containsOnlyElementsOf(expectedClaimValue);
|
||||
}
|
||||
|
||||
@@ -131,9 +123,7 @@ public class ClaimAccessorTests {
|
||||
boolean expectedClaimValue = true;
|
||||
String claimName = "boolean";
|
||||
this.claims.put(claimName, expectedClaimValue);
|
||||
|
||||
boolean actualClaimValue = this.claimAccessor.getClaim(claimName);
|
||||
|
||||
assertThat(actualClaimValue).isEqualTo(expectedClaimValue);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,6 @@ public class DefaultOAuth2AuthenticatedPrincipalTests {
|
||||
public void constructorWhenAttributesIsNullOrEmptyThenIllegalArgumentException() {
|
||||
assertThatCode(() -> new DefaultOAuth2AuthenticatedPrincipal(null, this.authorities))
|
||||
.isInstanceOf(IllegalArgumentException.class);
|
||||
|
||||
assertThatCode(() -> new DefaultOAuth2AuthenticatedPrincipal(Collections.emptyMap(), this.authorities))
|
||||
.isInstanceOf(IllegalArgumentException.class);
|
||||
}
|
||||
@@ -55,7 +54,6 @@ public class DefaultOAuth2AuthenticatedPrincipalTests {
|
||||
Collection<? extends GrantedAuthority> authorities = new DefaultOAuth2AuthenticatedPrincipal(this.attributes,
|
||||
null).getAuthorities();
|
||||
assertThat(authorities).isEmpty();
|
||||
|
||||
authorities = new DefaultOAuth2AuthenticatedPrincipal(this.attributes, Collections.emptyList())
|
||||
.getAuthorities();
|
||||
assertThat(authorities).isEmpty();
|
||||
|
||||
@@ -42,7 +42,6 @@ public class DelegatingOAuth2TokenValidatorTests {
|
||||
public void validateWhenNoValidatorsConfiguredThenReturnsSuccessfulResult() {
|
||||
DelegatingOAuth2TokenValidator<AbstractOAuth2Token> tokenValidator = new DelegatingOAuth2TokenValidator<>();
|
||||
AbstractOAuth2Token token = mock(AbstractOAuth2Token.class);
|
||||
|
||||
assertThat(tokenValidator.validate(token).hasErrors()).isFalse();
|
||||
}
|
||||
|
||||
@@ -50,16 +49,12 @@ public class DelegatingOAuth2TokenValidatorTests {
|
||||
public void validateWhenAnyValidatorFailsThenReturnsFailureResultContainingDetailFromFailingValidator() {
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> success = mock(OAuth2TokenValidator.class);
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> failure = mock(OAuth2TokenValidator.class);
|
||||
|
||||
given(success.validate(any(AbstractOAuth2Token.class))).willReturn(OAuth2TokenValidatorResult.success());
|
||||
given(failure.validate(any(AbstractOAuth2Token.class))).willReturn(OAuth2TokenValidatorResult.failure(DETAIL));
|
||||
|
||||
DelegatingOAuth2TokenValidator<AbstractOAuth2Token> tokenValidator = new DelegatingOAuth2TokenValidator<>(
|
||||
Arrays.asList(success, failure));
|
||||
AbstractOAuth2Token token = mock(AbstractOAuth2Token.class);
|
||||
|
||||
OAuth2TokenValidatorResult result = tokenValidator.validate(token);
|
||||
|
||||
assertThat(result.hasErrors()).isTrue();
|
||||
assertThat(result.getErrors()).containsExactly(DETAIL);
|
||||
}
|
||||
@@ -68,20 +63,15 @@ public class DelegatingOAuth2TokenValidatorTests {
|
||||
public void validateWhenMultipleValidatorsFailThenReturnsFailureResultContainingAllDetails() {
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> firstFailure = mock(OAuth2TokenValidator.class);
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> secondFailure = mock(OAuth2TokenValidator.class);
|
||||
|
||||
OAuth2Error otherDetail = new OAuth2Error("another-error");
|
||||
|
||||
given(firstFailure.validate(any(AbstractOAuth2Token.class)))
|
||||
.willReturn(OAuth2TokenValidatorResult.failure(DETAIL));
|
||||
given(secondFailure.validate(any(AbstractOAuth2Token.class)))
|
||||
.willReturn(OAuth2TokenValidatorResult.failure(otherDetail));
|
||||
|
||||
DelegatingOAuth2TokenValidator<AbstractOAuth2Token> tokenValidator = new DelegatingOAuth2TokenValidator<>(
|
||||
firstFailure, secondFailure);
|
||||
AbstractOAuth2Token token = mock(AbstractOAuth2Token.class);
|
||||
|
||||
OAuth2TokenValidatorResult result = tokenValidator.validate(token);
|
||||
|
||||
assertThat(result.hasErrors()).isTrue();
|
||||
assertThat(result.getErrors()).containsExactly(DETAIL, otherDetail);
|
||||
}
|
||||
@@ -90,16 +80,12 @@ public class DelegatingOAuth2TokenValidatorTests {
|
||||
public void validateWhenAllValidatorsSucceedThenReturnsSuccessfulResult() {
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> firstSuccess = mock(OAuth2TokenValidator.class);
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> secondSuccess = mock(OAuth2TokenValidator.class);
|
||||
|
||||
given(firstSuccess.validate(any(AbstractOAuth2Token.class))).willReturn(OAuth2TokenValidatorResult.success());
|
||||
given(secondSuccess.validate(any(AbstractOAuth2Token.class))).willReturn(OAuth2TokenValidatorResult.success());
|
||||
|
||||
DelegatingOAuth2TokenValidator<AbstractOAuth2Token> tokenValidator = new DelegatingOAuth2TokenValidator<>(
|
||||
Arrays.asList(firstSuccess, secondSuccess));
|
||||
AbstractOAuth2Token token = mock(AbstractOAuth2Token.class);
|
||||
|
||||
OAuth2TokenValidatorResult result = tokenValidator.validate(token);
|
||||
|
||||
assertThat(result.hasErrors()).isFalse();
|
||||
assertThat(result.getErrors()).isEmpty();
|
||||
}
|
||||
@@ -115,20 +101,15 @@ public class DelegatingOAuth2TokenValidatorTests {
|
||||
public void constructorsWhenInvokedWithSameInputsThenResultInSameOutputs() {
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> firstSuccess = mock(OAuth2TokenValidator.class);
|
||||
OAuth2TokenValidator<AbstractOAuth2Token> secondSuccess = mock(OAuth2TokenValidator.class);
|
||||
|
||||
given(firstSuccess.validate(any(AbstractOAuth2Token.class))).willReturn(OAuth2TokenValidatorResult.success());
|
||||
given(secondSuccess.validate(any(AbstractOAuth2Token.class))).willReturn(OAuth2TokenValidatorResult.success());
|
||||
|
||||
DelegatingOAuth2TokenValidator<AbstractOAuth2Token> firstValidator = new DelegatingOAuth2TokenValidator<>(
|
||||
Arrays.asList(firstSuccess, secondSuccess));
|
||||
DelegatingOAuth2TokenValidator<AbstractOAuth2Token> secondValidator = new DelegatingOAuth2TokenValidator<>(
|
||||
firstSuccess, secondSuccess);
|
||||
|
||||
AbstractOAuth2Token token = mock(AbstractOAuth2Token.class);
|
||||
|
||||
firstValidator.validate(token);
|
||||
secondValidator.validate(token);
|
||||
|
||||
verify(firstSuccess, times(2)).validate(token);
|
||||
verify(secondSuccess, times(2)).validate(token);
|
||||
}
|
||||
|
||||
@@ -72,7 +72,6 @@ public class OAuth2AccessTokenTests {
|
||||
@Test
|
||||
public void constructorWhenAllParametersProvidedAndValidThenCreated() {
|
||||
OAuth2AccessToken accessToken = new OAuth2AccessToken(TOKEN_TYPE, TOKEN_VALUE, ISSUED_AT, EXPIRES_AT, SCOPES);
|
||||
|
||||
assertThat(accessToken.getTokenType()).isEqualTo(TOKEN_TYPE);
|
||||
assertThat(accessToken.getTokenValue()).isEqualTo(TOKEN_VALUE);
|
||||
assertThat(accessToken.getIssuedAt()).isEqualTo(ISSUED_AT);
|
||||
@@ -86,7 +85,6 @@ public class OAuth2AccessTokenTests {
|
||||
OAuth2AccessToken accessToken = new OAuth2AccessToken(TOKEN_TYPE, TOKEN_VALUE, ISSUED_AT, EXPIRES_AT, SCOPES);
|
||||
byte[] serialized = SerializationUtils.serialize(accessToken);
|
||||
accessToken = (OAuth2AccessToken) SerializationUtils.deserialize(serialized);
|
||||
|
||||
assertThat(serialized).isNotNull();
|
||||
assertThat(accessToken.getTokenType()).isEqualTo(TOKEN_TYPE);
|
||||
assertThat(accessToken.getTokenValue()).isEqualTo(TOKEN_VALUE);
|
||||
|
||||
@@ -41,7 +41,6 @@ public class OAuth2ErrorTests {
|
||||
@Test
|
||||
public void constructorWhenAllParametersProvidedAndValidThenCreated() {
|
||||
OAuth2Error error = new OAuth2Error(ERROR_CODE, ERROR_DESCRIPTION, ERROR_URI);
|
||||
|
||||
assertThat(error.getErrorCode()).isEqualTo(ERROR_CODE);
|
||||
assertThat(error.getDescription()).isEqualTo(ERROR_DESCRIPTION);
|
||||
assertThat(error.getUri()).isEqualTo(ERROR_URI);
|
||||
|
||||
@@ -38,7 +38,6 @@ public class OAuth2TokenValidatorResultTests {
|
||||
@Test
|
||||
public void failureWhenInvokedWithDetailReturnsFailureResultIncludingDetail() {
|
||||
OAuth2TokenValidatorResult failure = OAuth2TokenValidatorResult.failure(DETAIL);
|
||||
|
||||
assertThat(failure.hasErrors()).isTrue();
|
||||
assertThat(failure.getErrors()).containsExactly(DETAIL);
|
||||
}
|
||||
@@ -46,7 +45,6 @@ public class OAuth2TokenValidatorResultTests {
|
||||
@Test
|
||||
public void failureWhenInvokedWithMultipleDetailsReturnsFailureResultIncludingAll() {
|
||||
OAuth2TokenValidatorResult failure = OAuth2TokenValidatorResult.failure(DETAIL, DETAIL);
|
||||
|
||||
assertThat(failure.hasErrors()).isTrue();
|
||||
assertThat(failure.getErrors()).containsExactly(DETAIL, DETAIL);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,6 @@ public class ClaimTypeConverterTests {
|
||||
TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(String.class)));
|
||||
Converter<Object, ?> mapStringObjectConverter = getConverter(TypeDescriptor.map(Map.class,
|
||||
TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Object.class)));
|
||||
|
||||
Map<String, Converter<Object, ?>> claimTypeConverters = new HashMap<>();
|
||||
claimTypeConverters.put(STRING_CLAIM, stringConverter);
|
||||
claimTypeConverters.put(BOOLEAN_CLAIM, booleanConverter);
|
||||
@@ -117,7 +116,6 @@ public class ClaimTypeConverterTests {
|
||||
mapIntegerObject.put(1, "value1");
|
||||
Map<String, Object> mapStringObject = new HashMap<>();
|
||||
mapStringObject.put("1", "value1");
|
||||
|
||||
Map<String, Object> claims = new HashMap<>();
|
||||
claims.put(STRING_CLAIM, Boolean.TRUE);
|
||||
claims.put(BOOLEAN_CLAIM, "true");
|
||||
@@ -126,9 +124,7 @@ public class ClaimTypeConverterTests {
|
||||
claims.put(COLLECTION_STRING_CLAIM, listNumber);
|
||||
claims.put(LIST_STRING_CLAIM, listNumber);
|
||||
claims.put(MAP_STRING_OBJECT_CLAIM, mapIntegerObject);
|
||||
|
||||
claims = this.claimTypeConverter.convert(claims);
|
||||
|
||||
assertThat(claims.get(STRING_CLAIM)).isEqualTo("true");
|
||||
assertThat(claims.get(BOOLEAN_CLAIM)).isEqualTo(Boolean.TRUE);
|
||||
assertThat(claims.get(INSTANT_CLAIM)).isEqualTo(instant);
|
||||
@@ -147,7 +143,6 @@ public class ClaimTypeConverterTests {
|
||||
List<String> listString = Lists.list("1", "2", "3", "4");
|
||||
Map<String, Object> mapStringObject = new HashMap<>();
|
||||
mapStringObject.put("1", "value1");
|
||||
|
||||
Map<String, Object> claims = new HashMap<>();
|
||||
claims.put(STRING_CLAIM, string);
|
||||
claims.put(BOOLEAN_CLAIM, bool);
|
||||
@@ -156,9 +151,7 @@ public class ClaimTypeConverterTests {
|
||||
claims.put(COLLECTION_STRING_CLAIM, listString);
|
||||
claims.put(LIST_STRING_CLAIM, listString);
|
||||
claims.put(MAP_STRING_OBJECT_CLAIM, mapStringObject);
|
||||
|
||||
claims = this.claimTypeConverter.convert(claims);
|
||||
|
||||
assertThat(claims.get(STRING_CLAIM)).isSameAs(string);
|
||||
assertThat(claims.get(BOOLEAN_CLAIM)).isSameAs(bool);
|
||||
assertThat(claims.get(INSTANT_CLAIM)).isSameAs(instant);
|
||||
@@ -172,9 +165,7 @@ public class ClaimTypeConverterTests {
|
||||
public void convertWhenConverterNotAvailableThenDoesNotConvert() {
|
||||
Map<String, Object> claims = new HashMap<>();
|
||||
claims.put("claim1", "value1");
|
||||
|
||||
claims = this.claimTypeConverter.convert(claims);
|
||||
|
||||
assertThat(claims.get("claim1")).isSameAs("value1");
|
||||
}
|
||||
|
||||
|
||||
@@ -63,11 +63,9 @@ public class MapOAuth2AccessTokenResponseConverterTests {
|
||||
Assert.assertTrue(scopes.contains("read"));
|
||||
Assert.assertTrue(scopes.contains("write"));
|
||||
Assert.assertEquals(3600, Duration.between(accessToken.getIssuedAt(), accessToken.getExpiresAt()).getSeconds());
|
||||
|
||||
OAuth2RefreshToken refreshToken = converted.getRefreshToken();
|
||||
Assert.assertNotNull(refreshToken);
|
||||
Assert.assertEquals("refresh-token-1234", refreshToken.getTokenValue());
|
||||
|
||||
Map<String, Object> additionalParameters = converted.getAdditionalParameters();
|
||||
Assert.assertNotNull(additionalParameters);
|
||||
Assert.assertEquals(2, additionalParameters.size());
|
||||
@@ -88,12 +86,9 @@ public class MapOAuth2AccessTokenResponseConverterTests {
|
||||
Set<String> scopes = accessToken.getScopes();
|
||||
Assert.assertNotNull(scopes);
|
||||
Assert.assertEquals(0, scopes.size());
|
||||
|
||||
Assert.assertEquals(1, Duration.between(accessToken.getIssuedAt(), accessToken.getExpiresAt()).getSeconds());
|
||||
|
||||
OAuth2RefreshToken refreshToken = converted.getRefreshToken();
|
||||
Assert.assertNull(refreshToken);
|
||||
|
||||
Map<String, Object> additionalParameters = converted.getAdditionalParameters();
|
||||
Assert.assertNotNull(additionalParameters);
|
||||
Assert.assertEquals(0, additionalParameters.size());
|
||||
@@ -113,12 +108,9 @@ public class MapOAuth2AccessTokenResponseConverterTests {
|
||||
Set<String> scopes = accessToken.getScopes();
|
||||
Assert.assertNotNull(scopes);
|
||||
Assert.assertEquals(0, scopes.size());
|
||||
|
||||
Assert.assertEquals(1, Duration.between(accessToken.getIssuedAt(), accessToken.getExpiresAt()).getSeconds());
|
||||
|
||||
OAuth2RefreshToken refreshToken = converted.getRefreshToken();
|
||||
Assert.assertNull(refreshToken);
|
||||
|
||||
Map<String, Object> additionalParameters = converted.getAdditionalParameters();
|
||||
Assert.assertNotNull(additionalParameters);
|
||||
Assert.assertEquals(0, additionalParameters.size());
|
||||
|
||||
@@ -46,17 +46,14 @@ public class OAuth2AccessTokenResponseMapConverterTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put("custom_parameter_1", "custom-value-1");
|
||||
additionalParameters.put("custom_parameter_2", "custom-value-2");
|
||||
|
||||
Set<String> scopes = new HashSet<>();
|
||||
scopes.add("read");
|
||||
scopes.add("write");
|
||||
|
||||
OAuth2AccessTokenResponse build = OAuth2AccessTokenResponse.withToken("access-token-value-1234").expiresIn(3699)
|
||||
.additionalParameters(additionalParameters).refreshToken("refresh-token-value-1234").scopes(scopes)
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).build();
|
||||
Map<String, String> result = this.messageConverter.convert(build);
|
||||
Assert.assertEquals(7, result.size());
|
||||
|
||||
Assert.assertEquals("access-token-value-1234", result.get("access_token"));
|
||||
Assert.assertEquals("refresh-token-value-1234", result.get("refresh_token"));
|
||||
Assert.assertEquals("read write", result.get("scope"));
|
||||
@@ -72,7 +69,6 @@ public class OAuth2AccessTokenResponseMapConverterTests {
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).build();
|
||||
Map<String, String> result = this.messageConverter.convert(build);
|
||||
Assert.assertEquals(3, result.size());
|
||||
|
||||
Assert.assertEquals("access-token-value-1234", result.get("access_token"));
|
||||
Assert.assertEquals("Bearer", result.get("token_type"));
|
||||
Assert.assertNotNull(result.get("expires_in"));
|
||||
|
||||
@@ -77,11 +77,9 @@ public class OAuth2AccessTokenResponseTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put("param1", "value1");
|
||||
additionalParameters.put("param2", "value2");
|
||||
|
||||
OAuth2AccessTokenResponse tokenResponse = OAuth2AccessTokenResponse.withToken(TOKEN_VALUE)
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).expiresIn(expiresAt.toEpochMilli()).scopes(scopes)
|
||||
.refreshToken(REFRESH_TOKEN_VALUE).additionalParameters(additionalParameters).build();
|
||||
|
||||
assertThat(tokenResponse.getAccessToken()).isNotNull();
|
||||
assertThat(tokenResponse.getAccessToken().getTokenValue()).isEqualTo(TOKEN_VALUE);
|
||||
assertThat(tokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
@@ -99,13 +97,10 @@ public class OAuth2AccessTokenResponseTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put("param1", "value1");
|
||||
additionalParameters.put("param2", "value2");
|
||||
|
||||
OAuth2AccessTokenResponse tokenResponse = OAuth2AccessTokenResponse.withToken(TOKEN_VALUE)
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).expiresIn(expiresAt.toEpochMilli()).scopes(scopes)
|
||||
.refreshToken(REFRESH_TOKEN_VALUE).additionalParameters(additionalParameters).build();
|
||||
|
||||
OAuth2AccessTokenResponse withResponse = OAuth2AccessTokenResponse.withResponse(tokenResponse).build();
|
||||
|
||||
assertThat(withResponse.getAccessToken().getTokenValue())
|
||||
.isEqualTo(tokenResponse.getAccessToken().getTokenValue());
|
||||
assertThat(withResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
@@ -125,13 +120,10 @@ public class OAuth2AccessTokenResponseTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put("param1", "value1");
|
||||
additionalParameters.put("param2", "value2");
|
||||
|
||||
OAuth2AccessTokenResponse tokenResponse = OAuth2AccessTokenResponse.withToken(TOKEN_VALUE)
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).expiresIn(expiresAt.toEpochMilli()).scopes(scopes)
|
||||
.additionalParameters(additionalParameters).build();
|
||||
|
||||
OAuth2AccessTokenResponse withResponse = OAuth2AccessTokenResponse.withResponse(tokenResponse).build();
|
||||
|
||||
assertThat(withResponse.getRefreshToken()).isNull();
|
||||
}
|
||||
|
||||
@@ -139,11 +131,9 @@ public class OAuth2AccessTokenResponseTests {
|
||||
public void buildWhenResponseAndExpiresInThenExpiresAtEqualToIssuedAtPlusExpiresIn() {
|
||||
OAuth2AccessTokenResponse tokenResponse = OAuth2AccessTokenResponse.withToken(TOKEN_VALUE)
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).build();
|
||||
|
||||
long expiresIn = 30;
|
||||
OAuth2AccessTokenResponse withResponse = OAuth2AccessTokenResponse.withResponse(tokenResponse)
|
||||
.expiresIn(expiresIn).build();
|
||||
|
||||
assertThat(withResponse.getAccessToken().getExpiresAt())
|
||||
.isEqualTo(withResponse.getAccessToken().getIssuedAt().plusSeconds(expiresIn));
|
||||
}
|
||||
|
||||
@@ -120,16 +120,13 @@ public class OAuth2AuthorizationRequestTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put("param1", "value1");
|
||||
additionalParameters.put("param2", "value2");
|
||||
|
||||
Map<String, Object> attributes = new HashMap<>();
|
||||
attributes.put("attribute1", "value1");
|
||||
attributes.put("attribute2", "value2");
|
||||
|
||||
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.authorizationCode()
|
||||
.authorizationUri(AUTHORIZATION_URI).clientId(CLIENT_ID).redirectUri(REDIRECT_URI).scopes(SCOPES)
|
||||
.state(STATE).additionalParameters(additionalParameters).attributes(attributes)
|
||||
.authorizationRequestUri(AUTHORIZATION_URI).build();
|
||||
|
||||
assertThat(authorizationRequest.getAuthorizationUri()).isEqualTo(AUTHORIZATION_URI);
|
||||
assertThat(authorizationRequest.getGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
|
||||
assertThat(authorizationRequest.getResponseType()).isEqualTo(OAuth2AuthorizationResponseType.CODE);
|
||||
@@ -147,7 +144,6 @@ public class OAuth2AuthorizationRequestTests {
|
||||
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.implicit()
|
||||
.authorizationUri(AUTHORIZATION_URI).clientId(CLIENT_ID).redirectUri(REDIRECT_URI).scopes(SCOPES)
|
||||
.state(STATE).build();
|
||||
|
||||
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");
|
||||
@@ -174,11 +170,9 @@ public class OAuth2AuthorizationRequestTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
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();
|
||||
|
||||
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&"
|
||||
@@ -189,7 +183,6 @@ public class OAuth2AuthorizationRequestTests {
|
||||
public void buildWhenRequiredParametersSetThenAuthorizationRequestUriIncludesRequiredParametersOnly() {
|
||||
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.authorizationCode()
|
||||
.authorizationUri(AUTHORIZATION_URI).clientId(CLIENT_ID).build();
|
||||
|
||||
assertThat(authorizationRequest.getAuthorizationRequestUri())
|
||||
.isEqualTo("https://provider.com/oauth2/authorize?response_type=code&client_id=client-id");
|
||||
}
|
||||
@@ -204,18 +197,14 @@ public class OAuth2AuthorizationRequestTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put("param1", "value1");
|
||||
additionalParameters.put("param2", "value2");
|
||||
|
||||
Map<String, Object> attributes = new HashMap<>();
|
||||
attributes.put("attribute1", "value1");
|
||||
attributes.put("attribute2", "value2");
|
||||
|
||||
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.authorizationCode()
|
||||
.authorizationUri(AUTHORIZATION_URI).clientId(CLIENT_ID).redirectUri(REDIRECT_URI).scopes(SCOPES)
|
||||
.state(STATE).additionalParameters(additionalParameters).attributes(attributes).build();
|
||||
|
||||
OAuth2AuthorizationRequest authorizationRequestCopy = OAuth2AuthorizationRequest.from(authorizationRequest)
|
||||
.build();
|
||||
|
||||
assertThat(authorizationRequestCopy.getAuthorizationUri())
|
||||
.isEqualTo(authorizationRequest.getAuthorizationUri());
|
||||
assertThat(authorizationRequestCopy.getGrantType()).isEqualTo(authorizationRequest.getGrantType());
|
||||
@@ -235,7 +224,6 @@ public class OAuth2AuthorizationRequestTests {
|
||||
public void buildWhenAuthorizationUriIncludesQueryParameterThenAuthorizationRequestUrlIncludesIt() {
|
||||
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
|
||||
.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&"
|
||||
@@ -248,7 +236,6 @@ public class OAuth2AuthorizationRequestTests {
|
||||
.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&"
|
||||
@@ -264,7 +251,6 @@ public class OAuth2AuthorizationRequestTests {
|
||||
additionalParameters.put('\u00e2' + "ge", "4" + '\u00bd');
|
||||
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
|
||||
.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&"
|
||||
|
||||
@@ -80,12 +80,9 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
+ " \"scope\": \"read write\",\n" + " \"refresh_token\": \"refresh-token-1234\",\n"
|
||||
+ " \"custom_parameter_1\": \"custom-value-1\",\n" + " \"custom_parameter_2\": \"custom-value-2\"\n"
|
||||
+ "}\n";
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
|
||||
OAuth2AccessTokenResponse accessTokenResponse = this.messageConverter
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234");
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(accessTokenResponse.getAccessToken().getExpiresAt())
|
||||
@@ -94,7 +91,6 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
assertThat(accessTokenResponse.getRefreshToken().getTokenValue()).isEqualTo("refresh-token-1234");
|
||||
assertThat(accessTokenResponse.getAdditionalParameters()).containsExactly(
|
||||
entry("custom_parameter_1", "custom-value-1"), entry("custom_parameter_2", "custom-value-2"));
|
||||
|
||||
}
|
||||
|
||||
// gh-6463
|
||||
@@ -107,12 +103,9 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
+ " \"custom_object_2\": [\"value1\", \"value2\"],\n"
|
||||
+ " \"custom_parameter_1\": \"custom-value-1\",\n" + " \"custom_parameter_2\": \"custom-value-2\"\n"
|
||||
+ "}\n";
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
|
||||
OAuth2AccessTokenResponse accessTokenResponse = this.messageConverter
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234");
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(accessTokenResponse.getAccessToken().getExpiresAt())
|
||||
@@ -130,12 +123,9 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
String tokenResponse = "{\n" + " \"access_token\": \"access-token-1234\",\n"
|
||||
+ " \"token_type\": \"bearer\",\n" + " \"expires_in\": 3600,\n" + " \"scope\": null,\n"
|
||||
+ " \"refresh_token\": \"refresh-token-1234\"\n" + "}\n";
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
|
||||
OAuth2AccessTokenResponse accessTokenResponse = this.messageConverter
|
||||
.readInternal(OAuth2AccessTokenResponse.class, response);
|
||||
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234");
|
||||
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(accessTokenResponse.getAccessToken().getExpiresAt())
|
||||
@@ -149,11 +139,8 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
Converter tokenResponseConverter = mock(Converter.class);
|
||||
given(tokenResponseConverter.convert(any())).willThrow(RuntimeException.class);
|
||||
this.messageConverter.setTokenResponseConverter(tokenResponseConverter);
|
||||
|
||||
String tokenResponse = "{}";
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(tokenResponse.getBytes(), HttpStatus.OK);
|
||||
|
||||
assertThatThrownBy(() -> this.messageConverter.readInternal(OAuth2AccessTokenResponse.class, response))
|
||||
.isInstanceOf(HttpMessageNotReadableException.class)
|
||||
.hasMessageContaining("An error occurred reading the OAuth 2.0 Access Token Response");
|
||||
@@ -166,15 +153,12 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
Map<String, Object> additionalParameters = new HashMap<>();
|
||||
additionalParameters.put("custom_parameter_1", "custom-value-1");
|
||||
additionalParameters.put("custom_parameter_2", "custom-value-2");
|
||||
|
||||
OAuth2AccessTokenResponse accessTokenResponse = OAuth2AccessTokenResponse.withToken("access-token-1234")
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).expiresIn(expiresAt.toEpochMilli()).scopes(scopes)
|
||||
.refreshToken("refresh-token-1234").additionalParameters(additionalParameters).build();
|
||||
|
||||
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
|
||||
this.messageConverter.writeInternal(accessTokenResponse, outputMessage);
|
||||
String tokenResponse = outputMessage.getBodyAsString();
|
||||
|
||||
assertThat(tokenResponse).contains("\"access_token\":\"access-token-1234\"");
|
||||
assertThat(tokenResponse).contains("\"token_type\":\"Bearer\"");
|
||||
assertThat(tokenResponse).contains("\"expires_in\"");
|
||||
@@ -189,13 +173,10 @@ public class OAuth2AccessTokenResponseHttpMessageConverterTests {
|
||||
Converter tokenResponseParametersConverter = mock(Converter.class);
|
||||
given(tokenResponseParametersConverter.convert(any())).willThrow(RuntimeException.class);
|
||||
this.messageConverter.setTokenResponseParametersConverter(tokenResponseParametersConverter);
|
||||
|
||||
OAuth2AccessTokenResponse accessTokenResponse = OAuth2AccessTokenResponse.withToken("access-token-1234")
|
||||
.tokenType(OAuth2AccessToken.TokenType.BEARER).expiresIn(Instant.now().plusSeconds(3600).toEpochMilli())
|
||||
.build();
|
||||
|
||||
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
|
||||
|
||||
assertThatThrownBy(() -> this.messageConverter.writeInternal(accessTokenResponse, outputMessage))
|
||||
.isInstanceOf(HttpMessageNotWritableException.class)
|
||||
.hasMessageContaining("An error occurred writing the OAuth 2.0 Access Token Response");
|
||||
|
||||
@@ -69,9 +69,7 @@ public class OAuth2ErrorHttpMessageConverterTests {
|
||||
String errorResponse = "{\n" + " \"error\": \"unauthorized_client\",\n"
|
||||
+ " \"error_description\": \"The client is not authorized\",\n"
|
||||
+ " \"error_uri\": \"https://tools.ietf.org/html/rfc6749#section-5.2\"\n" + "}\n";
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(errorResponse.getBytes(), HttpStatus.BAD_REQUEST);
|
||||
|
||||
OAuth2Error oauth2Error = this.messageConverter.readInternal(OAuth2Error.class, response);
|
||||
assertThat(oauth2Error.getErrorCode()).isEqualTo("unauthorized_client");
|
||||
assertThat(oauth2Error.getDescription()).isEqualTo("The client is not authorized");
|
||||
@@ -84,9 +82,7 @@ public class OAuth2ErrorHttpMessageConverterTests {
|
||||
String errorResponse = "{\n" + " \"error\": \"unauthorized_client\",\n"
|
||||
+ " \"error_description\": \"The client is not authorized\",\n" + " \"error_codes\": [65001],\n"
|
||||
+ " \"error_uri\": \"https://tools.ietf.org/html/rfc6749#section-5.2\"\n" + "}\n";
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(errorResponse.getBytes(), HttpStatus.BAD_REQUEST);
|
||||
|
||||
OAuth2Error oauth2Error = this.messageConverter.readInternal(OAuth2Error.class, response);
|
||||
assertThat(oauth2Error.getErrorCode()).isEqualTo("unauthorized_client");
|
||||
assertThat(oauth2Error.getDescription()).isEqualTo("The client is not authorized");
|
||||
@@ -98,11 +94,8 @@ public class OAuth2ErrorHttpMessageConverterTests {
|
||||
Converter errorConverter = mock(Converter.class);
|
||||
given(errorConverter.convert(any())).willThrow(RuntimeException.class);
|
||||
this.messageConverter.setErrorConverter(errorConverter);
|
||||
|
||||
String errorResponse = "{}";
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(errorResponse.getBytes(), HttpStatus.BAD_REQUEST);
|
||||
|
||||
assertThatThrownBy(() -> this.messageConverter.readInternal(OAuth2Error.class, response))
|
||||
.isInstanceOf(HttpMessageNotReadableException.class)
|
||||
.hasMessageContaining("An error occurred reading the OAuth 2.0 Error");
|
||||
@@ -112,11 +105,9 @@ public class OAuth2ErrorHttpMessageConverterTests {
|
||||
public void writeInternalWhenOAuth2ErrorThenWriteErrorResponse() throws Exception {
|
||||
OAuth2Error oauth2Error = new OAuth2Error("unauthorized_client", "The client is not authorized",
|
||||
"https://tools.ietf.org/html/rfc6749#section-5.2");
|
||||
|
||||
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
|
||||
this.messageConverter.writeInternal(oauth2Error, outputMessage);
|
||||
String errorResponse = outputMessage.getBodyAsString();
|
||||
|
||||
assertThat(errorResponse).contains("\"error\":\"unauthorized_client\"");
|
||||
assertThat(errorResponse).contains("\"error_description\":\"The client is not authorized\"");
|
||||
assertThat(errorResponse).contains("\"error_uri\":\"https://tools.ietf.org/html/rfc6749#section-5.2\"");
|
||||
@@ -127,12 +118,9 @@ public class OAuth2ErrorHttpMessageConverterTests {
|
||||
Converter errorParametersConverter = mock(Converter.class);
|
||||
given(errorParametersConverter.convert(any())).willThrow(RuntimeException.class);
|
||||
this.messageConverter.setErrorParametersConverter(errorParametersConverter);
|
||||
|
||||
OAuth2Error oauth2Error = new OAuth2Error("unauthorized_client", "The client is not authorized",
|
||||
"https://tools.ietf.org/html/rfc6749#section-5.2");
|
||||
|
||||
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
|
||||
|
||||
assertThatThrownBy(() -> this.messageConverter.writeInternal(oauth2Error, outputMessage))
|
||||
.isInstanceOf(HttpMessageNotWritableException.class)
|
||||
.hasMessageContaining("An error occurred writing the OAuth 2.0 Error");
|
||||
|
||||
@@ -48,7 +48,6 @@ public class DefaultAddressStandardClaimTests {
|
||||
AddressStandardClaim addressStandardClaim = new DefaultAddressStandardClaim.Builder().formatted(FORMATTED)
|
||||
.streetAddress(STREET_ADDRESS).locality(LOCALITY).region(REGION).postalCode(POSTAL_CODE)
|
||||
.country(COUNTRY).build();
|
||||
|
||||
assertThat(addressStandardClaim.getFormatted()).isEqualTo(FORMATTED);
|
||||
assertThat(addressStandardClaim.getStreetAddress()).isEqualTo(STREET_ADDRESS);
|
||||
assertThat(addressStandardClaim.getLocality()).isEqualTo(LOCALITY);
|
||||
@@ -66,9 +65,7 @@ public class DefaultAddressStandardClaimTests {
|
||||
addressFields.put(REGION_FIELD_NAME, REGION);
|
||||
addressFields.put(POSTAL_CODE_FIELD_NAME, POSTAL_CODE);
|
||||
addressFields.put(COUNTRY_FIELD_NAME, COUNTRY);
|
||||
|
||||
AddressStandardClaim addressStandardClaim = new DefaultAddressStandardClaim.Builder(addressFields).build();
|
||||
|
||||
assertThat(addressStandardClaim.getFormatted()).isEqualTo(FORMATTED);
|
||||
assertThat(addressStandardClaim.getStreetAddress()).isEqualTo(STREET_ADDRESS);
|
||||
assertThat(addressStandardClaim.getLocality()).isEqualTo(LOCALITY);
|
||||
|
||||
@@ -31,16 +31,12 @@ public class OidcIdTokenBuilderTests {
|
||||
@Test
|
||||
public void buildWhenCalledTwiceThenGeneratesTwoOidcIdTokens() {
|
||||
OidcIdToken.Builder idTokenBuilder = OidcIdToken.withTokenValue("token");
|
||||
|
||||
OidcIdToken first = idTokenBuilder.tokenValue("V1").claim("TEST_CLAIM_1", "C1").build();
|
||||
|
||||
OidcIdToken second = idTokenBuilder.tokenValue("V2").claim("TEST_CLAIM_1", "C2").claim("TEST_CLAIM_2", "C3")
|
||||
.build();
|
||||
|
||||
assertThat(first.getClaims()).hasSize(1);
|
||||
assertThat(first.getClaims().get("TEST_CLAIM_1")).isEqualTo("C1");
|
||||
assertThat(first.getTokenValue()).isEqualTo("V1");
|
||||
|
||||
assertThat(second.getClaims()).hasSize(2);
|
||||
assertThat(second.getClaims().get("TEST_CLAIM_1")).isEqualTo("C2");
|
||||
assertThat(second.getClaims().get("TEST_CLAIM_2")).isEqualTo("C3");
|
||||
@@ -50,15 +46,11 @@ public class OidcIdTokenBuilderTests {
|
||||
@Test
|
||||
public void expiresAtWhenUsingGenericOrNamedClaimMethodRequiresInstant() {
|
||||
OidcIdToken.Builder idTokenBuilder = OidcIdToken.withTokenValue("token");
|
||||
|
||||
Instant now = Instant.now();
|
||||
|
||||
OidcIdToken idToken = idTokenBuilder.expiresAt(now).build();
|
||||
assertThat(idToken.getExpiresAt()).isSameAs(now);
|
||||
|
||||
idToken = idTokenBuilder.expiresAt(now).build();
|
||||
assertThat(idToken.getExpiresAt()).isSameAs(now);
|
||||
|
||||
assertThatCode(() -> idTokenBuilder.claim(IdTokenClaimNames.EXP, "not an instant").build())
|
||||
.isInstanceOf(IllegalArgumentException.class);
|
||||
}
|
||||
@@ -66,15 +58,11 @@ public class OidcIdTokenBuilderTests {
|
||||
@Test
|
||||
public void issuedAtWhenUsingGenericOrNamedClaimMethodRequiresInstant() {
|
||||
OidcIdToken.Builder idTokenBuilder = OidcIdToken.withTokenValue("token");
|
||||
|
||||
Instant now = Instant.now();
|
||||
|
||||
OidcIdToken idToken = idTokenBuilder.issuedAt(now).build();
|
||||
assertThat(idToken.getIssuedAt()).isSameAs(now);
|
||||
|
||||
idToken = idTokenBuilder.issuedAt(now).build();
|
||||
assertThat(idToken.getIssuedAt()).isSameAs(now);
|
||||
|
||||
assertThatCode(() -> idTokenBuilder.claim(IdTokenClaimNames.IAT, "not an instant").build())
|
||||
.isInstanceOf(IllegalArgumentException.class);
|
||||
}
|
||||
@@ -82,13 +70,10 @@ public class OidcIdTokenBuilderTests {
|
||||
@Test
|
||||
public void subjectWhenUsingGenericOrNamedClaimMethodThenLastOneWins() {
|
||||
OidcIdToken.Builder idTokenBuilder = OidcIdToken.withTokenValue("token");
|
||||
|
||||
String generic = new String("sub");
|
||||
String named = new String("sub");
|
||||
|
||||
OidcIdToken idToken = idTokenBuilder.subject(named).claim(IdTokenClaimNames.SUB, generic).build();
|
||||
assertThat(idToken.getSubject()).isSameAs(generic);
|
||||
|
||||
idToken = idTokenBuilder.claim(IdTokenClaimNames.SUB, generic).subject(named).build();
|
||||
assertThat(idToken.getSubject()).isSameAs(named);
|
||||
}
|
||||
@@ -96,7 +81,6 @@ public class OidcIdTokenBuilderTests {
|
||||
@Test
|
||||
public void claimsWhenRemovingAClaimThenIsNotPresent() {
|
||||
OidcIdToken.Builder idTokenBuilder = OidcIdToken.withTokenValue("token").claim("needs", "a claim");
|
||||
|
||||
OidcIdToken idToken = idTokenBuilder.subject("sub").claims((claims) -> claims.remove(IdTokenClaimNames.SUB))
|
||||
.build();
|
||||
assertThat(idToken.getSubject()).isNull();
|
||||
@@ -105,11 +89,9 @@ public class OidcIdTokenBuilderTests {
|
||||
@Test
|
||||
public void claimsWhenAddingAClaimThenIsPresent() {
|
||||
OidcIdToken.Builder idTokenBuilder = OidcIdToken.withTokenValue("token");
|
||||
|
||||
String name = new String("name");
|
||||
String value = new String("value");
|
||||
OidcIdToken idToken = idTokenBuilder.claims((claims) -> claims.put(name, value)).build();
|
||||
|
||||
assertThat(idToken.getClaims()).hasSize(1);
|
||||
assertThat(idToken.getClaims().get(name)).isSameAs(value);
|
||||
}
|
||||
|
||||
@@ -85,7 +85,6 @@ public class OidcIdTokenTests {
|
||||
private static final Map<String, Object> CLAIMS;
|
||||
|
||||
private static final String ID_TOKEN_VALUE = "id-token-value";
|
||||
|
||||
static {
|
||||
CLAIMS = new HashMap<>();
|
||||
CLAIMS.put(ISS_CLAIM, ISS_VALUE);
|
||||
@@ -117,7 +116,6 @@ public class OidcIdTokenTests {
|
||||
public void constructorWhenParametersProvidedAndValidThenCreated() {
|
||||
OidcIdToken idToken = new OidcIdToken(ID_TOKEN_VALUE, Instant.ofEpochMilli(IAT_VALUE),
|
||||
Instant.ofEpochMilli(EXP_VALUE), CLAIMS);
|
||||
|
||||
assertThat(idToken.getClaims()).isEqualTo(CLAIMS);
|
||||
assertThat(idToken.getTokenValue()).isEqualTo(ID_TOKEN_VALUE);
|
||||
assertThat(idToken.getIssuer().toString()).isEqualTo(ISS_VALUE);
|
||||
|
||||
@@ -28,14 +28,10 @@ public class OidcUserInfoBuilderTests {
|
||||
@Test
|
||||
public void buildWhenCalledTwiceThenGeneratesTwoOidcUserInfos() {
|
||||
OidcUserInfo.Builder userInfoBuilder = OidcUserInfo.builder();
|
||||
|
||||
OidcUserInfo first = userInfoBuilder.claim("TEST_CLAIM_1", "C1").build();
|
||||
|
||||
OidcUserInfo second = userInfoBuilder.claim("TEST_CLAIM_1", "C2").claim("TEST_CLAIM_2", "C3").build();
|
||||
|
||||
assertThat(first.getClaims()).hasSize(1);
|
||||
assertThat(first.getClaims().get("TEST_CLAIM_1")).isEqualTo("C1");
|
||||
|
||||
assertThat(second.getClaims()).hasSize(2);
|
||||
assertThat(second.getClaims().get("TEST_CLAIM_1")).isEqualTo("C2");
|
||||
assertThat(second.getClaims().get("TEST_CLAIM_2")).isEqualTo("C3");
|
||||
@@ -44,13 +40,10 @@ public class OidcUserInfoBuilderTests {
|
||||
@Test
|
||||
public void subjectWhenUsingGenericOrNamedClaimMethodThenLastOneWins() {
|
||||
OidcUserInfo.Builder userInfoBuilder = OidcUserInfo.builder();
|
||||
|
||||
String generic = new String("sub");
|
||||
String named = new String("sub");
|
||||
|
||||
OidcUserInfo userInfo = userInfoBuilder.subject(named).claim(IdTokenClaimNames.SUB, generic).build();
|
||||
assertThat(userInfo.getSubject()).isSameAs(generic);
|
||||
|
||||
userInfo = userInfoBuilder.claim(IdTokenClaimNames.SUB, generic).subject(named).build();
|
||||
assertThat(userInfo.getSubject()).isSameAs(named);
|
||||
}
|
||||
@@ -58,7 +51,6 @@ public class OidcUserInfoBuilderTests {
|
||||
@Test
|
||||
public void claimsWhenRemovingAClaimThenIsNotPresent() {
|
||||
OidcUserInfo.Builder userInfoBuilder = OidcUserInfo.builder().claim("needs", "a claim");
|
||||
|
||||
OidcUserInfo userInfo = userInfoBuilder.subject("sub").claims((claims) -> claims.remove(IdTokenClaimNames.SUB))
|
||||
.build();
|
||||
assertThat(userInfo.getSubject()).isNull();
|
||||
@@ -67,11 +59,9 @@ public class OidcUserInfoBuilderTests {
|
||||
@Test
|
||||
public void claimsWhenAddingAClaimThenIsPresent() {
|
||||
OidcUserInfo.Builder userInfoBuilder = OidcUserInfo.builder();
|
||||
|
||||
String name = new String("name");
|
||||
String value = new String("value");
|
||||
OidcUserInfo userInfo = userInfoBuilder.claims((claims) -> claims.put(name, value)).build();
|
||||
|
||||
assertThat(userInfo.getClaims()).hasSize(1);
|
||||
assertThat(userInfo.getClaims().get(name)).isSameAs(value);
|
||||
}
|
||||
|
||||
@@ -113,7 +113,6 @@ public class OidcUserInfoTests {
|
||||
private static final long UPDATED_AT_VALUE = Instant.now().minusSeconds(60).toEpochMilli();
|
||||
|
||||
private static final Map<String, Object> CLAIMS;
|
||||
|
||||
static {
|
||||
CLAIMS = new HashMap<>();
|
||||
CLAIMS.put(SUB_CLAIM, SUB_VALUE);
|
||||
@@ -134,7 +133,6 @@ public class OidcUserInfoTests {
|
||||
CLAIMS.put(LOCALE_CLAIM, LOCALE_VALUE);
|
||||
CLAIMS.put(PHONE_NUMBER_CLAIM, PHONE_NUMBER_VALUE);
|
||||
CLAIMS.put(PHONE_NUMBER_VERIFIED_CLAIM, PHONE_NUMBER_VERIFIED_VALUE);
|
||||
|
||||
ADDRESS_VALUE = new HashMap<>();
|
||||
ADDRESS_VALUE.put(DefaultAddressStandardClaimTests.FORMATTED_FIELD_NAME,
|
||||
DefaultAddressStandardClaimTests.FORMATTED);
|
||||
@@ -148,7 +146,6 @@ public class OidcUserInfoTests {
|
||||
ADDRESS_VALUE.put(DefaultAddressStandardClaimTests.COUNTRY_FIELD_NAME,
|
||||
DefaultAddressStandardClaimTests.COUNTRY);
|
||||
CLAIMS.put(ADDRESS_CLAIM, ADDRESS_VALUE);
|
||||
|
||||
CLAIMS.put(UPDATED_AT_CLAIM, UPDATED_AT_VALUE);
|
||||
}
|
||||
|
||||
@@ -160,7 +157,6 @@ public class OidcUserInfoTests {
|
||||
@Test
|
||||
public void constructorWhenParametersProvidedAndValidThenCreated() {
|
||||
OidcUserInfo userInfo = new OidcUserInfo(CLAIMS);
|
||||
|
||||
assertThat(userInfo.getClaims()).isEqualTo(CLAIMS);
|
||||
assertThat(userInfo.getSubject()).isEqualTo(SUB_VALUE);
|
||||
assertThat(userInfo.getFullName()).isEqualTo(NAME_VALUE);
|
||||
|
||||
@@ -54,14 +54,12 @@ public class DefaultOidcUserTests {
|
||||
private static final Map<String, Object> ID_TOKEN_CLAIMS = new HashMap<>();
|
||||
|
||||
private static final Map<String, Object> USER_INFO_CLAIMS = new HashMap<>();
|
||||
|
||||
static {
|
||||
ID_TOKEN_CLAIMS.put(IdTokenClaimNames.ISS, "https://example.com");
|
||||
ID_TOKEN_CLAIMS.put(IdTokenClaimNames.SUB, SUBJECT);
|
||||
USER_INFO_CLAIMS.put(StandardClaimNames.NAME, NAME);
|
||||
USER_INFO_CLAIMS.put(StandardClaimNames.EMAIL, EMAIL);
|
||||
}
|
||||
|
||||
private static final OidcIdToken ID_TOKEN = new OidcIdToken("id-token-value", Instant.EPOCH, Instant.MAX,
|
||||
ID_TOKEN_CLAIMS);
|
||||
|
||||
@@ -85,7 +83,6 @@ public class DefaultOidcUserTests {
|
||||
@Test
|
||||
public void constructorWhenAuthoritiesIdTokenProvidedThenCreated() {
|
||||
DefaultOidcUser user = new DefaultOidcUser(AUTHORITIES, ID_TOKEN);
|
||||
|
||||
assertThat(user.getClaims()).containsOnlyKeys(IdTokenClaimNames.ISS, IdTokenClaimNames.SUB);
|
||||
assertThat(user.getIdToken()).isEqualTo(ID_TOKEN);
|
||||
assertThat(user.getName()).isEqualTo(SUBJECT);
|
||||
@@ -97,7 +94,6 @@ public class DefaultOidcUserTests {
|
||||
@Test
|
||||
public void constructorWhenAuthoritiesIdTokenNameAttributeKeyProvidedThenCreated() {
|
||||
DefaultOidcUser user = new DefaultOidcUser(AUTHORITIES, ID_TOKEN, IdTokenClaimNames.SUB);
|
||||
|
||||
assertThat(user.getClaims()).containsOnlyKeys(IdTokenClaimNames.ISS, IdTokenClaimNames.SUB);
|
||||
assertThat(user.getIdToken()).isEqualTo(ID_TOKEN);
|
||||
assertThat(user.getName()).isEqualTo(SUBJECT);
|
||||
@@ -109,7 +105,6 @@ public class DefaultOidcUserTests {
|
||||
@Test
|
||||
public void constructorWhenAuthoritiesIdTokenUserInfoProvidedThenCreated() {
|
||||
DefaultOidcUser user = new DefaultOidcUser(AUTHORITIES, ID_TOKEN, USER_INFO);
|
||||
|
||||
assertThat(user.getClaims()).containsOnlyKeys(IdTokenClaimNames.ISS, IdTokenClaimNames.SUB,
|
||||
StandardClaimNames.NAME, StandardClaimNames.EMAIL);
|
||||
assertThat(user.getIdToken()).isEqualTo(ID_TOKEN);
|
||||
@@ -124,7 +119,6 @@ public class DefaultOidcUserTests {
|
||||
@Test
|
||||
public void constructorWhenAllParametersProvidedAndValidThenCreated() {
|
||||
DefaultOidcUser user = new DefaultOidcUser(AUTHORITIES, ID_TOKEN, USER_INFO, StandardClaimNames.EMAIL);
|
||||
|
||||
assertThat(user.getClaims()).containsOnlyKeys(IdTokenClaimNames.ISS, IdTokenClaimNames.SUB,
|
||||
StandardClaimNames.NAME, StandardClaimNames.EMAIL);
|
||||
assertThat(user.getIdToken()).isEqualTo(ID_TOKEN);
|
||||
|
||||
@@ -48,14 +48,12 @@ public class OidcUserAuthorityTests {
|
||||
private static final Map<String, Object> ID_TOKEN_CLAIMS = new HashMap<>();
|
||||
|
||||
private static final Map<String, Object> USER_INFO_CLAIMS = new HashMap<>();
|
||||
|
||||
static {
|
||||
ID_TOKEN_CLAIMS.put(IdTokenClaimNames.ISS, "https://example.com");
|
||||
ID_TOKEN_CLAIMS.put(IdTokenClaimNames.SUB, SUBJECT);
|
||||
USER_INFO_CLAIMS.put(StandardClaimNames.NAME, NAME);
|
||||
USER_INFO_CLAIMS.put(StandardClaimNames.EMAIL, EMAIL);
|
||||
}
|
||||
|
||||
private static final OidcIdToken ID_TOKEN = new OidcIdToken("id-token-value", Instant.EPOCH, Instant.MAX,
|
||||
ID_TOKEN_CLAIMS);
|
||||
|
||||
@@ -79,7 +77,6 @@ public class OidcUserAuthorityTests {
|
||||
@Test
|
||||
public void constructorWhenAllParametersProvidedAndValidThenCreated() {
|
||||
OidcUserAuthority userAuthority = new OidcUserAuthority(AUTHORITY, ID_TOKEN, USER_INFO);
|
||||
|
||||
assertThat(userAuthority.getIdToken()).isEqualTo(ID_TOKEN);
|
||||
assertThat(userAuthority.getUserInfo()).isEqualTo(USER_INFO);
|
||||
assertThat(userAuthority.getAuthority()).isEqualTo(AUTHORITY);
|
||||
|
||||
@@ -79,7 +79,6 @@ public class DefaultOAuth2UserTests {
|
||||
@Test
|
||||
public void constructorWhenAllParametersProvidedAndValidThenCreated() {
|
||||
DefaultOAuth2User user = new DefaultOAuth2User(AUTHORITIES, ATTRIBUTES, ATTRIBUTE_NAME_KEY);
|
||||
|
||||
assertThat(user.getName()).isEqualTo(USERNAME);
|
||||
assertThat(user.getAuthorities()).hasSize(1);
|
||||
assertThat(user.getAuthorities().iterator().next()).isEqualTo(AUTHORITY);
|
||||
|
||||
@@ -52,7 +52,6 @@ public class OAuth2UserAuthorityTests {
|
||||
@Test
|
||||
public void constructorWhenAllParametersProvidedAndValidThenCreated() {
|
||||
OAuth2UserAuthority userAuthority = new OAuth2UserAuthority(AUTHORITY, ATTRIBUTES);
|
||||
|
||||
assertThat(userAuthority.getAuthority()).isEqualTo(AUTHORITY);
|
||||
assertThat(userAuthority.getAttributes()).isEqualTo(ATTRIBUTES);
|
||||
}
|
||||
|
||||
@@ -63,7 +63,6 @@ public class OAuth2BodyExtractorsTests {
|
||||
messageReaders.add(new DecoderHttpMessageReader<>(StringDecoder.allMimeTypes()));
|
||||
messageReaders.add(new DecoderHttpMessageReader<>(new Jackson2JsonDecoder()));
|
||||
messageReaders.add(new FormHttpMessageReader());
|
||||
|
||||
this.hints = new HashMap<>();
|
||||
this.context = new BodyExtractor.Context() {
|
||||
@Override
|
||||
@@ -87,13 +86,10 @@ public class OAuth2BodyExtractorsTests {
|
||||
public void oauth2AccessTokenResponseWhenInvalidJsonThenException() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
|
||||
response.setBody("{");
|
||||
|
||||
Mono<OAuth2AccessTokenResponse> result = extractor.extract(response, this.context);
|
||||
|
||||
assertThatCode(result::block).isInstanceOf(OAuth2AuthorizationException.class)
|
||||
.hasMessageContaining("An error occurred parsing the Access Token response");
|
||||
}
|
||||
@@ -102,11 +98,8 @@ public class OAuth2BodyExtractorsTests {
|
||||
public void oauth2AccessTokenResponseWhenEmptyThenException() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
|
||||
Mono<OAuth2AccessTokenResponse> result = extractor.extract(response, this.context);
|
||||
|
||||
assertThatCode(result::block).isInstanceOf(OAuth2AuthorizationException.class)
|
||||
.hasMessageContaining("Empty OAuth 2.0 Access Token Response");
|
||||
}
|
||||
@@ -115,17 +108,14 @@ public class OAuth2BodyExtractorsTests {
|
||||
public void oauth2AccessTokenResponseWhenValidThenCreated() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
|
||||
response.setBody(
|
||||
"{\n" + " \"access_token\":\"2YotnFZFEjr1zCsicMWpAA\",\n" + " \"token_type\":\"Bearer\",\n"
|
||||
+ " \"expires_in\":3600,\n" + " \"refresh_token\":\"tGzv3JOkF0XG5Qx2TlKWIA\",\n"
|
||||
+ " \"example_parameter\":\"example_value\"\n" + " }");
|
||||
|
||||
Instant now = Instant.now();
|
||||
OAuth2AccessTokenResponse result = extractor.extract(response, this.context).block();
|
||||
|
||||
assertThat(result.getAccessToken().getTokenValue()).isEqualTo("2YotnFZFEjr1zCsicMWpAA");
|
||||
assertThat(result.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(result.getAccessToken().getExpiresAt()).isBetween(now.plusSeconds(3600), now.plusSeconds(3600 + 2));
|
||||
@@ -138,17 +128,14 @@ public class OAuth2BodyExtractorsTests {
|
||||
public void oauth2AccessTokenResponseWhenMultipleAttributeTypesThenCreated() {
|
||||
BodyExtractor<Mono<OAuth2AccessTokenResponse>, ReactiveHttpInputMessage> extractor = OAuth2BodyExtractors
|
||||
.oauth2AccessTokenResponse();
|
||||
|
||||
MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
|
||||
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
|
||||
response.setBody(
|
||||
"{\n" + " \"access_token\":\"2YotnFZFEjr1zCsicMWpAA\",\n" + " \"token_type\":\"Bearer\",\n"
|
||||
+ " \"expires_in\":3600,\n" + " \"refresh_token\":\"tGzv3JOkF0XG5Qx2TlKWIA\",\n"
|
||||
+ " \"subjson\":{}, \n" + " \"list\":[] \n" + " }");
|
||||
|
||||
Instant now = Instant.now();
|
||||
OAuth2AccessTokenResponse result = extractor.extract(response, this.context).block();
|
||||
|
||||
assertThat(result.getAccessToken().getTokenValue()).isEqualTo("2YotnFZFEjr1zCsicMWpAA");
|
||||
assertThat(result.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER);
|
||||
assertThat(result.getAccessToken().getExpiresAt()).isBetween(now.plusSeconds(3600), now.plusSeconds(3600 + 2));
|
||||
|
||||
Reference in New Issue
Block a user