Skip to content

Commit 0eb6acd

Browse files
committed
Polish gh-16133
1 parent 73f3f75 commit 0eb6acd

File tree

3 files changed

+82
-60
lines changed

3 files changed

+82
-60
lines changed

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/InMemoryReactiveOAuth2AuthorizedClientService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,8 @@ public <T extends OAuth2AuthorizedClient> Mono<T> loadAuthorizedClient(String cl
6868
if (cachedAuthorizedClient == null) {
6969
return null;
7070
}
71-
// @formatter:off
72-
return new OAuth2AuthorizedClient(clientRegistration,
73-
cachedAuthorizedClient.getPrincipalName(),
74-
cachedAuthorizedClient.getAccessToken(),
75-
cachedAuthorizedClient.getRefreshToken());
76-
// @formatter:on
71+
return new OAuth2AuthorizedClient(clientRegistration, cachedAuthorizedClient.getPrincipalName(),
72+
cachedAuthorizedClient.getAccessToken(), cachedAuthorizedClient.getRefreshToken());
7773
});
7874
}
7975

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/InMemoryOAuth2AuthorizedClientServiceTests.java

Lines changed: 53 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,18 @@
1818

1919
import java.util.Collections;
2020
import java.util.Map;
21+
import java.util.function.Consumer;
2122

2223
import org.junit.jupiter.api.Test;
2324

25+
import org.springframework.security.authentication.TestingAuthenticationToken;
2426
import org.springframework.security.core.Authentication;
2527
import org.springframework.security.oauth2.client.registration.ClientRegistration;
2628
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
2729
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
2830
import org.springframework.security.oauth2.client.registration.TestClientRegistrations;
2931
import org.springframework.security.oauth2.core.OAuth2AccessToken;
32+
import org.springframework.security.oauth2.core.OAuth2RefreshToken;
3033

3134
import static org.assertj.core.api.Assertions.assertThat;
3235
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
@@ -126,35 +129,35 @@ public void loadAuthorizedClientWhenClientRegistrationFoundAndAssociatedToPrinci
126129
this.authorizedClientService.saveAuthorizedClient(authorizedClient, authentication);
127130
OAuth2AuthorizedClient loadedAuthorizedClient = this.authorizedClientService
128131
.loadAuthorizedClient(this.registration1.getRegistrationId(), this.principalName1);
129-
assertAuthorizedClientEquals(authorizedClient, loadedAuthorizedClient);
132+
assertThat(loadedAuthorizedClient).satisfies(isEqualTo(authorizedClient));
130133
}
131134

132135
@Test
133136
public void loadAuthorizedClientWhenClientRegistrationIsUpdatedThenReturnAuthorizedClientWithUpdatedClientRegistration() {
134137
ClientRegistration updatedRegistration = ClientRegistration.withClientRegistration(this.registration1)
135138
.clientSecret("updated secret")
136139
.build();
137-
ClientRegistrationRepository repository = mock(ClientRegistrationRepository.class);
138-
given(repository.findByRegistrationId(this.registration1.getRegistrationId())).willReturn(this.registration1,
139-
updatedRegistration);
140140

141-
Authentication authentication = mock(Authentication.class);
142-
given(authentication.getName()).willReturn(this.principalName1);
141+
ClientRegistrationRepository clientRegistrationRepository = mock(ClientRegistrationRepository.class);
142+
given(clientRegistrationRepository.findByRegistrationId(this.registration1.getRegistrationId()))
143+
.willReturn(this.registration1, updatedRegistration);
143144

144-
InMemoryOAuth2AuthorizedClientService service = new InMemoryOAuth2AuthorizedClientService(repository);
145+
InMemoryOAuth2AuthorizedClientService authorizedClientService = new InMemoryOAuth2AuthorizedClientService(
146+
clientRegistrationRepository);
145147

146-
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(this.registration1, this.principalName1,
147-
mock(OAuth2AccessToken.class));
148-
service.saveAuthorizedClient(authorizedClient, authentication);
148+
OAuth2AuthorizedClient cachedAuthorizedClient = new OAuth2AuthorizedClient(this.registration1,
149+
this.principalName1, mock(OAuth2AccessToken.class), mock(OAuth2RefreshToken.class));
150+
authorizedClientService.saveAuthorizedClient(cachedAuthorizedClient,
151+
new TestingAuthenticationToken(this.principalName1, null));
149152

150153
OAuth2AuthorizedClient authorizedClientWithUpdatedRegistration = new OAuth2AuthorizedClient(updatedRegistration,
151-
this.principalName1, mock(OAuth2AccessToken.class));
152-
OAuth2AuthorizedClient firstLoadedClient = service.loadAuthorizedClient(this.registration1.getRegistrationId(),
153-
this.principalName1);
154-
OAuth2AuthorizedClient secondLoadedClient = service.loadAuthorizedClient(this.registration1.getRegistrationId(),
155-
this.principalName1);
156-
assertAuthorizedClientEquals(authorizedClient, firstLoadedClient);
157-
assertAuthorizedClientEquals(authorizedClientWithUpdatedRegistration, secondLoadedClient);
154+
this.principalName1, mock(OAuth2AccessToken.class), mock(OAuth2RefreshToken.class));
155+
OAuth2AuthorizedClient firstLoadedClient = authorizedClientService
156+
.loadAuthorizedClient(this.registration1.getRegistrationId(), this.principalName1);
157+
OAuth2AuthorizedClient secondLoadedClient = authorizedClientService
158+
.loadAuthorizedClient(this.registration1.getRegistrationId(), this.principalName1);
159+
assertThat(firstLoadedClient).satisfies(isEqualTo(cachedAuthorizedClient));
160+
assertThat(secondLoadedClient).satisfies(isEqualTo(authorizedClientWithUpdatedRegistration));
158161
}
159162

160163
@Test
@@ -178,7 +181,7 @@ public void saveAuthorizedClientWhenSavedThenCanLoad() {
178181
this.authorizedClientService.saveAuthorizedClient(authorizedClient, authentication);
179182
OAuth2AuthorizedClient loadedAuthorizedClient = this.authorizedClientService
180183
.loadAuthorizedClient(this.registration3.getRegistrationId(), this.principalName2);
181-
assertAuthorizedClientEquals(authorizedClient, loadedAuthorizedClient);
184+
assertThat(loadedAuthorizedClient).satisfies(isEqualTo(authorizedClient));
182185
}
183186

184187
@Test
@@ -210,29 +213,38 @@ public void removeAuthorizedClientWhenSavedThenRemoved() {
210213
assertThat(loadedAuthorizedClient).isNull();
211214
}
212215

213-
private static void assertAuthorizedClientEquals(OAuth2AuthorizedClient expected, OAuth2AuthorizedClient actual) {
214-
assertThat(actual).isNotNull();
215-
assertThat(actual.getClientRegistration().getRegistrationId())
216-
.isEqualTo(expected.getClientRegistration().getRegistrationId());
217-
assertThat(actual.getClientRegistration().getClientName())
218-
.isEqualTo(expected.getClientRegistration().getClientName());
219-
assertThat(actual.getClientRegistration().getRedirectUri())
220-
.isEqualTo(expected.getClientRegistration().getRedirectUri());
221-
assertThat(actual.getClientRegistration().getAuthorizationGrantType())
222-
.isEqualTo(expected.getClientRegistration().getAuthorizationGrantType());
223-
assertThat(actual.getClientRegistration().getClientAuthenticationMethod())
224-
.isEqualTo(expected.getClientRegistration().getClientAuthenticationMethod());
225-
assertThat(actual.getClientRegistration().getClientId())
226-
.isEqualTo(expected.getClientRegistration().getClientId());
227-
assertThat(actual.getClientRegistration().getClientSecret())
228-
.isEqualTo(expected.getClientRegistration().getClientSecret());
229-
assertThat(actual.getPrincipalName()).isEqualTo(expected.getPrincipalName());
230-
assertThat(actual.getAccessToken().getTokenType()).isEqualTo(expected.getAccessToken().getTokenType());
231-
assertThat(actual.getAccessToken().getTokenValue()).isEqualTo(expected.getAccessToken().getTokenValue());
232-
assertThat(actual.getAccessToken().getIssuedAt()).isEqualTo(expected.getAccessToken().getIssuedAt());
233-
assertThat(actual.getAccessToken().getExpiresAt()).isEqualTo(expected.getAccessToken().getExpiresAt());
234-
assertThat(actual.getAccessToken().getScopes()).isEqualTo(expected.getAccessToken().getScopes());
235-
assertThat(actual.getRefreshToken()).isEqualTo(expected.getRefreshToken());
216+
private static Consumer<OAuth2AuthorizedClient> isEqualTo(OAuth2AuthorizedClient expected) {
217+
return (actual) -> {
218+
assertThat(actual).isNotNull();
219+
assertThat(actual.getClientRegistration().getRegistrationId())
220+
.isEqualTo(expected.getClientRegistration().getRegistrationId());
221+
assertThat(actual.getClientRegistration().getClientName())
222+
.isEqualTo(expected.getClientRegistration().getClientName());
223+
assertThat(actual.getClientRegistration().getRedirectUri())
224+
.isEqualTo(expected.getClientRegistration().getRedirectUri());
225+
assertThat(actual.getClientRegistration().getAuthorizationGrantType())
226+
.isEqualTo(expected.getClientRegistration().getAuthorizationGrantType());
227+
assertThat(actual.getClientRegistration().getClientAuthenticationMethod())
228+
.isEqualTo(expected.getClientRegistration().getClientAuthenticationMethod());
229+
assertThat(actual.getClientRegistration().getClientId())
230+
.isEqualTo(expected.getClientRegistration().getClientId());
231+
assertThat(actual.getClientRegistration().getClientSecret())
232+
.isEqualTo(expected.getClientRegistration().getClientSecret());
233+
assertThat(actual.getPrincipalName()).isEqualTo(expected.getPrincipalName());
234+
assertThat(actual.getAccessToken().getTokenType()).isEqualTo(expected.getAccessToken().getTokenType());
235+
assertThat(actual.getAccessToken().getTokenValue()).isEqualTo(expected.getAccessToken().getTokenValue());
236+
assertThat(actual.getAccessToken().getIssuedAt()).isEqualTo(expected.getAccessToken().getIssuedAt());
237+
assertThat(actual.getAccessToken().getExpiresAt()).isEqualTo(expected.getAccessToken().getExpiresAt());
238+
assertThat(actual.getAccessToken().getScopes()).isEqualTo(expected.getAccessToken().getScopes());
239+
if (expected.getRefreshToken() != null) {
240+
assertThat(actual.getRefreshToken()).isNotNull();
241+
assertThat(actual.getRefreshToken().getTokenValue())
242+
.isEqualTo(expected.getRefreshToken().getTokenValue());
243+
assertThat(actual.getRefreshToken().getIssuedAt()).isEqualTo(expected.getRefreshToken().getIssuedAt());
244+
assertThat(actual.getRefreshToken().getExpiresAt())
245+
.isEqualTo(expected.getRefreshToken().getExpiresAt());
246+
}
247+
};
236248
}
237249

238250
}

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/InMemoryReactiveOAuth2AuthorizedClientServiceTests.java

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.springframework.security.oauth2.core.AuthorizationGrantType;
3737
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
3838
import org.springframework.security.oauth2.core.OAuth2AccessToken;
39+
import org.springframework.security.oauth2.core.OAuth2RefreshToken;
3940

4041
import static org.assertj.core.api.Assertions.assertThat;
4142
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
@@ -59,8 +60,9 @@ public class InMemoryReactiveOAuth2AuthorizedClientServiceTests {
5960

6061
private Authentication principal = new TestingAuthenticationToken(this.principalName, "notused");
6162

62-
OAuth2AccessToken accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, "token", Instant.now(),
63-
Instant.now().plus(Duration.ofDays(1)));
63+
private OAuth2AccessToken accessToken;
64+
65+
private OAuth2RefreshToken refreshToken;
6466

6567
// @formatter:off
6668
private ClientRegistration clientRegistration = ClientRegistration.withRegistrationId(this.clientRegistrationId)
@@ -82,6 +84,11 @@ public class InMemoryReactiveOAuth2AuthorizedClientServiceTests {
8284
public void setup() {
8385
this.authorizedClientService = new InMemoryReactiveOAuth2AuthorizedClientService(
8486
this.clientRegistrationRepository);
87+
88+
Instant issuedAt = Instant.now();
89+
Instant expiresAt = issuedAt.plus(Duration.ofDays(1));
90+
this.accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, "token", issuedAt, expiresAt);
91+
this.refreshToken = new OAuth2RefreshToken("refresh", issuedAt, expiresAt);
8592
}
8693

8794
@Test
@@ -163,26 +170,26 @@ public void loadAuthorizedClientWhenClientRegistrationFoundThenFound() {
163170

164171
@Test
165172
@SuppressWarnings("unchecked")
166-
public void loadAuthorizedClientWhenClientRegistrationChangedThenCurrentVersionFound() {
167-
ClientRegistration changedClientRegistration = ClientRegistration
168-
.withClientRegistration(this.clientRegistration)
173+
public void loadAuthorizedClientWhenClientRegistrationIsUpdatedThenReturnsAuthorizedClientWithUpdatedClientRegistration() {
174+
ClientRegistration updatedRegistration = ClientRegistration.withClientRegistration(this.clientRegistration)
169175
.clientSecret("updated secret")
170176
.build();
171177

172178
given(this.clientRegistrationRepository.findByRegistrationId(this.clientRegistrationId))
173-
.willReturn(Mono.just(this.clientRegistration), Mono.just(changedClientRegistration));
174-
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(this.clientRegistration,
175-
this.principalName, this.accessToken);
176-
OAuth2AuthorizedClient authorizedClientWithChangedRegistration = new OAuth2AuthorizedClient(
177-
changedClientRegistration, this.principalName, this.accessToken);
179+
.willReturn(Mono.just(this.clientRegistration), Mono.just(updatedRegistration));
180+
181+
OAuth2AuthorizedClient cachedAuthorizedClient = new OAuth2AuthorizedClient(this.clientRegistration,
182+
this.principalName, this.accessToken, this.refreshToken);
183+
OAuth2AuthorizedClient authorizedClientWithChangedRegistration = new OAuth2AuthorizedClient(updatedRegistration,
184+
this.principalName, this.accessToken, this.refreshToken);
178185

179186
Flux<OAuth2AuthorizedClient> saveAndLoadTwice = this.authorizedClientService
180-
.saveAuthorizedClient(authorizedClient, this.principal)
187+
.saveAuthorizedClient(cachedAuthorizedClient, this.principal)
181188
.then(this.authorizedClientService.loadAuthorizedClient(this.clientRegistrationId, this.principalName))
182189
.concatWith(
183190
this.authorizedClientService.loadAuthorizedClient(this.clientRegistrationId, this.principalName));
184191
StepVerifier.create(saveAndLoadTwice)
185-
.assertNext(isEqualTo(authorizedClient))
192+
.assertNext(isEqualTo(cachedAuthorizedClient))
186193
.assertNext(isEqualTo(authorizedClientWithChangedRegistration))
187194
.verifyComplete();
188195
}
@@ -298,7 +305,14 @@ private static Consumer<OAuth2AuthorizedClient> isEqualTo(OAuth2AuthorizedClient
298305
assertThat(actual.getAccessToken().getIssuedAt()).isEqualTo(expected.getAccessToken().getIssuedAt());
299306
assertThat(actual.getAccessToken().getExpiresAt()).isEqualTo(expected.getAccessToken().getExpiresAt());
300307
assertThat(actual.getAccessToken().getScopes()).isEqualTo(expected.getAccessToken().getScopes());
301-
assertThat(actual.getRefreshToken()).isEqualTo(expected.getRefreshToken());
308+
if (expected.getRefreshToken() != null) {
309+
assertThat(actual.getRefreshToken()).isNotNull();
310+
assertThat(actual.getRefreshToken().getTokenValue())
311+
.isEqualTo(expected.getRefreshToken().getTokenValue());
312+
assertThat(actual.getRefreshToken().getIssuedAt()).isEqualTo(expected.getRefreshToken().getIssuedAt());
313+
assertThat(actual.getRefreshToken().getExpiresAt())
314+
.isEqualTo(expected.getRefreshToken().getExpiresAt());
315+
}
302316
};
303317
}
304318

0 commit comments

Comments
 (0)