Skip to content

Commit 77c30c4

Browse files
committed
Polish tests
Issue gh-11783 Issue gh-13763
1 parent 80a8d38 commit 77c30c4

File tree

3 files changed

+39
-169
lines changed

3 files changed

+39
-169
lines changed

config/src/test/java/org/springframework/security/config/annotation/web/configuration/OAuth2AuthorizedClientManagerConfigurationTests.java

Lines changed: 17 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2023 the original author or authors.
2+
* Copyright 2002-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -38,8 +38,6 @@
3838
import org.springframework.mock.web.MockHttpServletRequest;
3939
import org.springframework.mock.web.MockHttpServletResponse;
4040
import org.springframework.security.authentication.TestingAuthenticationToken;
41-
import org.springframework.security.config.Customizer;
42-
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
4341
import org.springframework.security.config.oauth2.client.CommonOAuth2Provider;
4442
import org.springframework.security.config.test.SpringTestContext;
4543
import org.springframework.security.oauth2.client.AuthorizationCodeOAuth2AuthorizedClientProvider;
@@ -61,14 +59,9 @@
6159
import org.springframework.security.oauth2.client.endpoint.OAuth2PasswordGrantRequest;
6260
import org.springframework.security.oauth2.client.endpoint.OAuth2RefreshTokenGrantRequest;
6361
import org.springframework.security.oauth2.client.endpoint.TokenExchangeGrantRequest;
64-
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
65-
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService;
6662
import org.springframework.security.oauth2.client.registration.ClientRegistration;
6763
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
6864
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
69-
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
70-
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
71-
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
7265
import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager;
7366
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
7467
import org.springframework.security.oauth2.core.AuthorizationGrantType;
@@ -80,13 +73,10 @@
8073
import org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse;
8174
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
8275
import org.springframework.security.oauth2.core.endpoint.TestOAuth2AccessTokenResponses;
83-
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
84-
import org.springframework.security.oauth2.core.user.OAuth2User;
8576
import org.springframework.security.oauth2.jwt.JoseHeaderNames;
8677
import org.springframework.security.oauth2.jwt.Jwt;
8778
import org.springframework.security.oauth2.jwt.JwtClaimNames;
8879
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
89-
import org.springframework.security.web.SecurityFilterChain;
9080
import org.springframework.util.StringUtils;
9181

9282
import static org.assertj.core.api.Assertions.assertThat;
@@ -397,42 +387,32 @@ static class CustomAccessTokenResponseClientsConfig extends OAuth2ClientBaseConf
397387

398388
@Bean
399389
OAuth2AccessTokenResponseClient<OAuth2AuthorizationCodeGrantRequest> authorizationCodeTokenResponseClient() {
400-
return new MockAuthorizationCodeClient();
390+
return new MockAccessTokenResponseClient<>();
401391
}
402392

403393
@Bean
404394
OAuth2AccessTokenResponseClient<OAuth2RefreshTokenGrantRequest> refreshTokenTokenResponseClient() {
405-
return new MockRefreshTokenClient();
395+
return new MockAccessTokenResponseClient<>();
406396
}
407397

408398
@Bean
409399
OAuth2AccessTokenResponseClient<OAuth2ClientCredentialsGrantRequest> clientCredentialsTokenResponseClient() {
410-
return new MockClientCredentialsClient();
400+
return new MockAccessTokenResponseClient<>();
411401
}
412402

413403
@Bean
414404
OAuth2AccessTokenResponseClient<OAuth2PasswordGrantRequest> passwordTokenResponseClient() {
415-
return new MockPasswordClient();
405+
return new MockAccessTokenResponseClient<>();
416406
}
417407

418408
@Bean
419409
OAuth2AccessTokenResponseClient<JwtBearerGrantRequest> jwtBearerTokenResponseClient() {
420-
return new MockJwtBearerClient();
410+
return new MockAccessTokenResponseClient<>();
421411
}
422412

423413
@Bean
424414
OAuth2AccessTokenResponseClient<TokenExchangeGrantRequest> tokenExchangeTokenResponseClient() {
425-
return new MockTokenExchangeClient();
426-
}
427-
428-
@Bean
429-
OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService() {
430-
return mock(DefaultOAuth2UserService.class);
431-
}
432-
433-
@Bean
434-
OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService() {
435-
return mock(OidcUserService.class);
415+
return new MockAccessTokenResponseClient<>();
436416
}
437417

438418
}
@@ -449,57 +429,46 @@ AuthorizationCodeOAuth2AuthorizedClientProvider authorizationCodeProvider() {
449429
@Bean
450430
RefreshTokenOAuth2AuthorizedClientProvider refreshTokenProvider() {
451431
RefreshTokenOAuth2AuthorizedClientProvider authorizedClientProvider = new RefreshTokenOAuth2AuthorizedClientProvider();
452-
authorizedClientProvider.setAccessTokenResponseClient(new MockRefreshTokenClient());
432+
authorizedClientProvider.setAccessTokenResponseClient(new MockAccessTokenResponseClient<>());
453433
return authorizedClientProvider;
454434
}
455435

456436
@Bean
457437
ClientCredentialsOAuth2AuthorizedClientProvider clientCredentialsProvider() {
458438
ClientCredentialsOAuth2AuthorizedClientProvider authorizedClientProvider = new ClientCredentialsOAuth2AuthorizedClientProvider();
459-
authorizedClientProvider.setAccessTokenResponseClient(new MockClientCredentialsClient());
439+
authorizedClientProvider.setAccessTokenResponseClient(new MockAccessTokenResponseClient<>());
460440
return authorizedClientProvider;
461441
}
462442

463443
@Bean
464444
PasswordOAuth2AuthorizedClientProvider passwordProvider() {
465445
PasswordOAuth2AuthorizedClientProvider authorizedClientProvider = new PasswordOAuth2AuthorizedClientProvider();
466-
authorizedClientProvider.setAccessTokenResponseClient(new MockPasswordClient());
446+
authorizedClientProvider.setAccessTokenResponseClient(new MockAccessTokenResponseClient<>());
467447
return authorizedClientProvider;
468448
}
469449

470450
@Bean
471451
JwtBearerOAuth2AuthorizedClientProvider jwtBearerAuthorizedClientProvider() {
472452
JwtBearerOAuth2AuthorizedClientProvider authorizedClientProvider = new JwtBearerOAuth2AuthorizedClientProvider();
473-
authorizedClientProvider.setAccessTokenResponseClient(new MockJwtBearerClient());
453+
authorizedClientProvider.setAccessTokenResponseClient(new MockAccessTokenResponseClient<>());
474454
return authorizedClientProvider;
475455
}
476456

477457
@Bean
478458
TokenExchangeOAuth2AuthorizedClientProvider tokenExchangeAuthorizedClientProvider() {
479459
TokenExchangeOAuth2AuthorizedClientProvider authorizedClientProvider = new TokenExchangeOAuth2AuthorizedClientProvider();
480-
authorizedClientProvider.setAccessTokenResponseClient(new MockTokenExchangeClient());
460+
authorizedClientProvider.setAccessTokenResponseClient(new MockAccessTokenResponseClient<>());
481461
return authorizedClientProvider;
482462
}
483463

484464
}
485465

486466
abstract static class OAuth2ClientBaseConfig {
487467

488-
@Bean
489-
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
490-
// @formatter:off
491-
http
492-
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
493-
.oauth2Login(Customizer.withDefaults())
494-
.oauth2Client(Customizer.withDefaults());
495-
return http.build();
496-
// @formatter:on
497-
}
498-
499468
@Bean
500469
ClientRegistrationRepository clientRegistrationRepository() {
501470
// @formatter:off
502-
return new InMemoryClientRegistrationRepository(Arrays.asList(
471+
return new InMemoryClientRegistrationRepository(
503472
CommonOAuth2Provider.GOOGLE.getBuilder("google")
504473
.clientId("google-client-id")
505474
.clientSecret("google-client-secret")
@@ -527,7 +496,7 @@ ClientRegistrationRepository clientRegistrationRepository() {
527496
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
528497
.authorizationGrantType(AuthorizationGrantType.TOKEN_EXCHANGE)
529498
.scope("user.read", "user.write")
530-
.build()));
499+
.build());
531500
// @formatter:on
532501
}
533502

@@ -558,60 +527,11 @@ Consumer<DefaultOAuth2AuthorizedClientManager> authorizedClientManagerConsumer()
558527

559528
}
560529

561-
private static class MockAuthorizationCodeClient
562-
implements OAuth2AccessTokenResponseClient<OAuth2AuthorizationCodeGrantRequest> {
563-
564-
@Override
565-
public OAuth2AccessTokenResponse getTokenResponse(
566-
OAuth2AuthorizationCodeGrantRequest authorizationGrantRequest) {
567-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
568-
}
569-
570-
}
571-
572-
private static class MockRefreshTokenClient
573-
implements OAuth2AccessTokenResponseClient<OAuth2RefreshTokenGrantRequest> {
574-
575-
@Override
576-
public OAuth2AccessTokenResponse getTokenResponse(OAuth2RefreshTokenGrantRequest authorizationGrantRequest) {
577-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
578-
}
579-
580-
}
581-
582-
private static class MockClientCredentialsClient
583-
implements OAuth2AccessTokenResponseClient<OAuth2ClientCredentialsGrantRequest> {
584-
585-
@Override
586-
public OAuth2AccessTokenResponse getTokenResponse(
587-
OAuth2ClientCredentialsGrantRequest authorizationGrantRequest) {
588-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
589-
}
590-
591-
}
592-
593-
private static class MockPasswordClient implements OAuth2AccessTokenResponseClient<OAuth2PasswordGrantRequest> {
594-
595-
@Override
596-
public OAuth2AccessTokenResponse getTokenResponse(OAuth2PasswordGrantRequest authorizationGrantRequest) {
597-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
598-
}
599-
600-
}
601-
602-
private static class MockJwtBearerClient implements OAuth2AccessTokenResponseClient<JwtBearerGrantRequest> {
603-
604-
@Override
605-
public OAuth2AccessTokenResponse getTokenResponse(JwtBearerGrantRequest authorizationGrantRequest) {
606-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
607-
}
608-
609-
}
610-
611-
private static class MockTokenExchangeClient implements OAuth2AccessTokenResponseClient<TokenExchangeGrantRequest> {
530+
private static class MockAccessTokenResponseClient<T extends AbstractOAuth2AuthorizationGrantRequest>
531+
implements OAuth2AccessTokenResponseClient<T> {
612532

613533
@Override
614-
public OAuth2AccessTokenResponse getTokenResponse(TokenExchangeGrantRequest authorizationGrantRequest) {
534+
public OAuth2AccessTokenResponse getTokenResponse(T authorizationGrantRequest) {
615535
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
616536
}
617537

config/src/test/java/org/springframework/security/config/http/OAuth2AuthorizedClientManagerRegistrarTests.java

Lines changed: 16 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2023 the original author or authors.
2+
* Copyright 2002-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -53,7 +53,6 @@
5353
import org.springframework.security.oauth2.client.endpoint.AbstractOAuth2AuthorizationGrantRequest;
5454
import org.springframework.security.oauth2.client.endpoint.JwtBearerGrantRequest;
5555
import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient;
56-
import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest;
5756
import org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequest;
5857
import org.springframework.security.oauth2.client.endpoint.OAuth2PasswordGrantRequest;
5958
import org.springframework.security.oauth2.client.endpoint.OAuth2RefreshTokenGrantRequest;
@@ -430,114 +429,65 @@ public static Consumer<DefaultOAuth2AuthorizedClientManager> authorizedClientMan
430429
});
431430
}
432431

433-
public static AuthorizationCodeOAuth2AuthorizedClientProvider authorizationCodeAuthorizedClientProvider() {
432+
public static AuthorizationCodeOAuth2AuthorizedClientProvider authorizationCode() {
434433
return spy(new AuthorizationCodeOAuth2AuthorizedClientProvider());
435434
}
436435

437-
public static RefreshTokenOAuth2AuthorizedClientProvider refreshTokenAuthorizedClientProvider() {
436+
public static RefreshTokenOAuth2AuthorizedClientProvider refreshToken() {
438437
RefreshTokenOAuth2AuthorizedClientProvider authorizedClientProvider = new RefreshTokenOAuth2AuthorizedClientProvider();
439438
authorizedClientProvider.setAccessTokenResponseClient(refreshTokenAccessTokenResponseClient());
440439
return authorizedClientProvider;
441440
}
442441

443-
public static MockRefreshTokenClient refreshTokenAccessTokenResponseClient() {
444-
return new MockRefreshTokenClient();
442+
public static OAuth2AccessTokenResponseClient<OAuth2RefreshTokenGrantRequest> refreshTokenAccessTokenResponseClient() {
443+
return new MockAccessTokenResponseClient<>();
445444
}
446445

447-
public static ClientCredentialsOAuth2AuthorizedClientProvider clientCredentialsAuthorizedClientProvider() {
446+
public static ClientCredentialsOAuth2AuthorizedClientProvider clientCredentials() {
448447
ClientCredentialsOAuth2AuthorizedClientProvider authorizedClientProvider = new ClientCredentialsOAuth2AuthorizedClientProvider();
449448
authorizedClientProvider.setAccessTokenResponseClient(clientCredentialsAccessTokenResponseClient());
450449
return authorizedClientProvider;
451450
}
452451

453452
public static OAuth2AccessTokenResponseClient<OAuth2ClientCredentialsGrantRequest> clientCredentialsAccessTokenResponseClient() {
454-
return new MockClientCredentialsClient();
453+
return new MockAccessTokenResponseClient<>();
455454
}
456455

457-
public static PasswordOAuth2AuthorizedClientProvider passwordAuthorizedClientProvider() {
456+
public static PasswordOAuth2AuthorizedClientProvider password() {
458457
PasswordOAuth2AuthorizedClientProvider authorizedClientProvider = new PasswordOAuth2AuthorizedClientProvider();
459458
authorizedClientProvider.setAccessTokenResponseClient(passwordAccessTokenResponseClient());
460459
return authorizedClientProvider;
461460
}
462461

463462
public static OAuth2AccessTokenResponseClient<OAuth2PasswordGrantRequest> passwordAccessTokenResponseClient() {
464-
return new MockPasswordClient();
463+
return new MockAccessTokenResponseClient<>();
465464
}
466465

467-
public static JwtBearerOAuth2AuthorizedClientProvider jwtBearerAuthorizedClientProvider() {
466+
public static JwtBearerOAuth2AuthorizedClientProvider jwtBearer() {
468467
JwtBearerOAuth2AuthorizedClientProvider authorizedClientProvider = new JwtBearerOAuth2AuthorizedClientProvider();
469468
authorizedClientProvider.setAccessTokenResponseClient(jwtBearerAccessTokenResponseClient());
470469
return authorizedClientProvider;
471470
}
472471

473472
public static OAuth2AccessTokenResponseClient<JwtBearerGrantRequest> jwtBearerAccessTokenResponseClient() {
474-
return new MockJwtBearerClient();
473+
return new MockAccessTokenResponseClient<>();
475474
}
476475

477-
public static TokenExchangeOAuth2AuthorizedClientProvider tokenExchangeAuthorizedClientProvider() {
476+
public static TokenExchangeOAuth2AuthorizedClientProvider tokenExchange() {
478477
TokenExchangeOAuth2AuthorizedClientProvider authorizedClientProvider = new TokenExchangeOAuth2AuthorizedClientProvider();
479478
authorizedClientProvider.setAccessTokenResponseClient(tokenExchangeAccessTokenResponseClient());
480479
return authorizedClientProvider;
481480
}
482481

483482
public static OAuth2AccessTokenResponseClient<TokenExchangeGrantRequest> tokenExchangeAccessTokenResponseClient() {
484-
return new MockTokenExchangeClient();
483+
return new MockAccessTokenResponseClient<>();
485484
}
486485

487-
private static class MockAuthorizationCodeClient
488-
implements OAuth2AccessTokenResponseClient<OAuth2AuthorizationCodeGrantRequest> {
486+
private static class MockAccessTokenResponseClient<T extends AbstractOAuth2AuthorizationGrantRequest>
487+
implements OAuth2AccessTokenResponseClient<T> {
489488

490489
@Override
491-
public OAuth2AccessTokenResponse getTokenResponse(
492-
OAuth2AuthorizationCodeGrantRequest authorizationGrantRequest) {
493-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
494-
}
495-
496-
}
497-
498-
private static class MockRefreshTokenClient
499-
implements OAuth2AccessTokenResponseClient<OAuth2RefreshTokenGrantRequest> {
500-
501-
@Override
502-
public OAuth2AccessTokenResponse getTokenResponse(OAuth2RefreshTokenGrantRequest authorizationGrantRequest) {
503-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
504-
}
505-
506-
}
507-
508-
private static class MockClientCredentialsClient
509-
implements OAuth2AccessTokenResponseClient<OAuth2ClientCredentialsGrantRequest> {
510-
511-
@Override
512-
public OAuth2AccessTokenResponse getTokenResponse(
513-
OAuth2ClientCredentialsGrantRequest authorizationGrantRequest) {
514-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
515-
}
516-
517-
}
518-
519-
private static class MockPasswordClient implements OAuth2AccessTokenResponseClient<OAuth2PasswordGrantRequest> {
520-
521-
@Override
522-
public OAuth2AccessTokenResponse getTokenResponse(OAuth2PasswordGrantRequest authorizationGrantRequest) {
523-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
524-
}
525-
526-
}
527-
528-
private static class MockJwtBearerClient implements OAuth2AccessTokenResponseClient<JwtBearerGrantRequest> {
529-
530-
@Override
531-
public OAuth2AccessTokenResponse getTokenResponse(JwtBearerGrantRequest authorizationGrantRequest) {
532-
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
533-
}
534-
535-
}
536-
537-
private static class MockTokenExchangeClient implements OAuth2AccessTokenResponseClient<TokenExchangeGrantRequest> {
538-
539-
@Override
540-
public OAuth2AccessTokenResponse getTokenResponse(TokenExchangeGrantRequest authorizationGrantRequest) {
490+
public OAuth2AccessTokenResponse getTokenResponse(T authorizationGrantRequest) {
541491
return MOCK_RESPONSE_CLIENT.getTokenResponse(authorizationGrantRequest);
542492
}
543493

0 commit comments

Comments
 (0)