|
|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2002-2020 the original author or authors. |
|
|
|
* Copyright 2002-2022 the original author or authors. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
@ -80,7 +80,8 @@ public class WebClientReactivePasswordTokenResponseClientTests { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void getTokenResponseWhenSuccessResponseThenReturnAccessTokenResponse() throws Exception { |
|
|
|
public void getTokenResponseWhenSuccessResponseDoesNotIncludeScopeThenReturnAccessTokenResponseWithNoScope() |
|
|
|
|
|
|
|
throws Exception { |
|
|
|
// @formatter:off
|
|
|
|
// @formatter:off
|
|
|
|
String accessTokenSuccessResponse = "{\n" |
|
|
|
String accessTokenSuccessResponse = "{\n" |
|
|
|
+ " \"access_token\": \"access-token-1234\",\n" |
|
|
|
+ " \"access_token\": \"access-token-1234\",\n" |
|
|
|
@ -109,6 +110,41 @@ public class WebClientReactivePasswordTokenResponseClientTests { |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234"); |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234"); |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER); |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER); |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getExpiresAt()).isBetween(expiresAtBefore, expiresAtAfter); |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getExpiresAt()).isBetween(expiresAtBefore, expiresAtAfter); |
|
|
|
|
|
|
|
assertThat(accessTokenResponse.getAccessToken().getScopes()).isEmpty(); |
|
|
|
|
|
|
|
assertThat(accessTokenResponse.getRefreshToken()).isNull(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void getTokenResponseWhenSuccessResponseIncludesScopeThenReturnAccessTokenResponse() throws Exception { |
|
|
|
|
|
|
|
// @formatter:off
|
|
|
|
|
|
|
|
String accessTokenSuccessResponse = "{\n" |
|
|
|
|
|
|
|
+ " \"access_token\": \"access-token-1234\",\n" |
|
|
|
|
|
|
|
+ " \"token_type\": \"bearer\",\n" |
|
|
|
|
|
|
|
+ " \"expires_in\": \"3600\",\n" |
|
|
|
|
|
|
|
+ " \"scope\": \"read write\"\n" |
|
|
|
|
|
|
|
+ "}\n"; |
|
|
|
|
|
|
|
// @formatter:on
|
|
|
|
|
|
|
|
this.server.enqueue(jsonResponse(accessTokenSuccessResponse)); |
|
|
|
|
|
|
|
Instant expiresAtBefore = Instant.now().plusSeconds(3600); |
|
|
|
|
|
|
|
ClientRegistration clientRegistration = this.clientRegistrationBuilder.build(); |
|
|
|
|
|
|
|
OAuth2PasswordGrantRequest passwordGrantRequest = new OAuth2PasswordGrantRequest(clientRegistration, |
|
|
|
|
|
|
|
this.username, this.password); |
|
|
|
|
|
|
|
OAuth2AccessTokenResponse accessTokenResponse = this.tokenResponseClient.getTokenResponse(passwordGrantRequest) |
|
|
|
|
|
|
|
.block(); |
|
|
|
|
|
|
|
Instant expiresAtAfter = Instant.now().plusSeconds(3600); |
|
|
|
|
|
|
|
RecordedRequest recordedRequest = this.server.takeRequest(); |
|
|
|
|
|
|
|
assertThat(recordedRequest.getMethod()).isEqualTo(HttpMethod.POST.toString()); |
|
|
|
|
|
|
|
assertThat(recordedRequest.getHeader(HttpHeaders.ACCEPT)).isEqualTo(MediaType.APPLICATION_JSON_VALUE); |
|
|
|
|
|
|
|
assertThat(recordedRequest.getHeader(HttpHeaders.CONTENT_TYPE)) |
|
|
|
|
|
|
|
.isEqualTo(MediaType.APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8"); |
|
|
|
|
|
|
|
String formParameters = recordedRequest.getBody().readUtf8(); |
|
|
|
|
|
|
|
assertThat(formParameters).contains("grant_type=password"); |
|
|
|
|
|
|
|
assertThat(formParameters).contains("username=user1"); |
|
|
|
|
|
|
|
assertThat(formParameters).contains("password=password"); |
|
|
|
|
|
|
|
assertThat(formParameters).contains("scope=read+write"); |
|
|
|
|
|
|
|
assertThat(accessTokenResponse.getAccessToken().getTokenValue()).isEqualTo("access-token-1234"); |
|
|
|
|
|
|
|
assertThat(accessTokenResponse.getAccessToken().getTokenType()).isEqualTo(OAuth2AccessToken.TokenType.BEARER); |
|
|
|
|
|
|
|
assertThat(accessTokenResponse.getAccessToken().getExpiresAt()).isBetween(expiresAtBefore, expiresAtAfter); |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getScopes()) |
|
|
|
assertThat(accessTokenResponse.getAccessToken().getScopes()) |
|
|
|
.containsExactly(clientRegistration.getScopes().toArray(new String[0])); |
|
|
|
.containsExactly(clientRegistration.getScopes().toArray(new String[0])); |
|
|
|
assertThat(accessTokenResponse.getRefreshToken()).isNull(); |
|
|
|
assertThat(accessTokenResponse.getRefreshToken()).isNull(); |
|
|
|
|