Skip to content

Commit d000f3b

Browse files
committed
Merge pull request #15586 from OleksiiBondar
* gh-15586: Refactor OAuth2ClientPropertiesRegistrationAdapterTests
2 parents c6202b5 + b52dddf commit d000f3b

File tree

1 file changed

+55
-70
lines changed

1 file changed

+55
-70
lines changed

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapterTests.java

Lines changed: 55 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.http.MediaType;
3434
import org.springframework.security.oauth2.client.registration.ClientRegistration;
3535
import org.springframework.security.oauth2.client.registration.ClientRegistration.ProviderDetails;
36+
import org.springframework.security.oauth2.client.registration.ClientRegistration.ProviderDetails.UserInfoEndpoint;
3637
import org.springframework.security.oauth2.core.AuthorizationGrantType;
3738
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
3839
import org.springframework.security.oauth2.core.oidc.IdTokenClaimNames;
@@ -61,21 +62,9 @@ public void cleanup() throws Exception {
6162
@Test
6263
public void getClientRegistrationsWhenUsingDefinedProviderShouldAdapt() {
6364
OAuth2ClientProperties properties = new OAuth2ClientProperties();
64-
Provider provider = new Provider();
65-
provider.setAuthorizationUri("http://example.com/auth");
66-
provider.setTokenUri("http://example.com/token");
67-
provider.setUserInfoUri("http://example.com/info");
65+
Provider provider = createProvider();
6866
provider.setUserInfoAuthenticationMethod("form");
69-
provider.setUserNameAttribute("sub");
70-
provider.setJwkSetUri("http://example.com/jwk");
71-
OAuth2ClientProperties.Registration registration = new OAuth2ClientProperties.Registration();
72-
registration.setProvider("provider");
73-
registration.setClientId("clientId");
74-
registration.setClientSecret("clientSecret");
75-
registration.setClientAuthenticationMethod("post");
76-
registration.setAuthorizationGrantType("authorization_code");
77-
registration.setRedirectUri("http://example.com/redirect");
78-
registration.setScope(Collections.singleton("scope"));
67+
OAuth2ClientProperties.Registration registration = createRegistration("provider");
7968
registration.setClientName("clientName");
8069
properties.getRegistration().put("registration", registration);
8170
properties.getProvider().put("provider", provider);
@@ -86,13 +75,11 @@ public void getClientRegistrationsWhenUsingDefinedProviderShouldAdapt() {
8675
assertThat(adaptedProvider.getAuthorizationUri())
8776
.isEqualTo("http://example.com/auth");
8877
assertThat(adaptedProvider.getTokenUri()).isEqualTo("http://example.com/token");
89-
assertThat(adaptedProvider.getUserInfoEndpoint().getUri())
90-
.isEqualTo("http://example.com/info");
91-
assertThat(adaptedProvider.getUserInfoEndpoint().getAuthenticationMethod())
92-
.isEqualTo(
93-
org.springframework.security.oauth2.core.AuthenticationMethod.FORM);
94-
assertThat(adaptedProvider.getUserInfoEndpoint().getUserNameAttributeName())
95-
.isEqualTo("sub");
78+
UserInfoEndpoint userInfoEndpoint = adaptedProvider.getUserInfoEndpoint();
79+
assertThat(userInfoEndpoint.getUri()).isEqualTo("http://example.com/info");
80+
assertThat(userInfoEndpoint.getAuthenticationMethod()).isEqualTo(
81+
org.springframework.security.oauth2.core.AuthenticationMethod.FORM);
82+
assertThat(userInfoEndpoint.getUserNameAttributeName()).isEqualTo("sub");
9683
assertThat(adaptedProvider.getJwkSetUri()).isEqualTo("http://example.com/jwk");
9784
assertThat(adapted.getRegistrationId()).isEqualTo("registration");
9885
assertThat(adapted.getClientId()).isEqualTo("clientId");
@@ -103,7 +90,7 @@ public void getClientRegistrationsWhenUsingDefinedProviderShouldAdapt() {
10390
org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE);
10491
assertThat(adapted.getRedirectUriTemplate())
10592
.isEqualTo("http://example.com/redirect");
106-
assertThat(adapted.getScopes()).containsExactly("scope");
93+
assertThat(adapted.getScopes()).containsExactly("user");
10794
assertThat(adapted.getClientName()).isEqualTo("clientName");
10895
}
10996

@@ -123,9 +110,10 @@ public void getClientRegistrationsWhenUsingCommonProviderShouldAdapt() {
123110
.isEqualTo("https://accounts.google.com/o/oauth2/v2/auth");
124111
assertThat(adaptedProvider.getTokenUri())
125112
.isEqualTo("https://www.googleapis.com/oauth2/v4/token");
126-
assertThat(adaptedProvider.getUserInfoEndpoint().getUri())
113+
UserInfoEndpoint userInfoEndpoint = adaptedProvider.getUserInfoEndpoint();
114+
assertThat(userInfoEndpoint.getUri())
127115
.isEqualTo("https://www.googleapis.com/oauth2/v3/userinfo");
128-
assertThat(adaptedProvider.getUserInfoEndpoint().getUserNameAttributeName())
116+
assertThat(userInfoEndpoint.getUserNameAttributeName())
129117
.isEqualTo(IdTokenClaimNames.SUB);
130118
assertThat(adaptedProvider.getJwkSetUri())
131119
.isEqualTo("https://www.googleapis.com/oauth2/v3/certs");
@@ -145,14 +133,7 @@ public void getClientRegistrationsWhenUsingCommonProviderShouldAdapt() {
145133
@Test
146134
public void getClientRegistrationsWhenUsingCommonProviderWithOverrideShouldAdapt() {
147135
OAuth2ClientProperties properties = new OAuth2ClientProperties();
148-
OAuth2ClientProperties.Registration registration = new OAuth2ClientProperties.Registration();
149-
registration.setProvider("google");
150-
registration.setClientId("clientId");
151-
registration.setClientSecret("clientSecret");
152-
registration.setClientAuthenticationMethod("post");
153-
registration.setAuthorizationGrantType("authorization_code");
154-
registration.setRedirectUri("http://example.com/redirect");
155-
registration.setScope(Collections.singleton("scope"));
136+
OAuth2ClientProperties.Registration registration = createRegistration("google");
156137
registration.setClientName("clientName");
157138
properties.getRegistration().put("registration", registration);
158139
Map<String, ClientRegistration> registrations = OAuth2ClientPropertiesRegistrationAdapter
@@ -163,13 +144,13 @@ public void getClientRegistrationsWhenUsingCommonProviderWithOverrideShouldAdapt
163144
.isEqualTo("https://accounts.google.com/o/oauth2/v2/auth");
164145
assertThat(adaptedProvider.getTokenUri())
165146
.isEqualTo("https://www.googleapis.com/oauth2/v4/token");
166-
assertThat(adaptedProvider.getUserInfoEndpoint().getUri())
147+
UserInfoEndpoint userInfoEndpoint = adaptedProvider.getUserInfoEndpoint();
148+
assertThat(userInfoEndpoint.getUri())
167149
.isEqualTo("https://www.googleapis.com/oauth2/v3/userinfo");
168-
assertThat(adaptedProvider.getUserInfoEndpoint().getUserNameAttributeName())
150+
assertThat(userInfoEndpoint.getUserNameAttributeName())
169151
.isEqualTo(IdTokenClaimNames.SUB);
170-
assertThat(adaptedProvider.getUserInfoEndpoint().getAuthenticationMethod())
171-
.isEqualTo(
172-
org.springframework.security.oauth2.core.AuthenticationMethod.HEADER);
152+
assertThat(userInfoEndpoint.getAuthenticationMethod()).isEqualTo(
153+
org.springframework.security.oauth2.core.AuthenticationMethod.HEADER);
173154
assertThat(adaptedProvider.getJwkSetUri())
174155
.isEqualTo("https://www.googleapis.com/oauth2/v3/certs");
175156
assertThat(adapted.getRegistrationId()).isEqualTo("registration");
@@ -181,7 +162,7 @@ public void getClientRegistrationsWhenUsingCommonProviderWithOverrideShouldAdapt
181162
org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE);
182163
assertThat(adapted.getRedirectUriTemplate())
183164
.isEqualTo("http://example.com/redirect");
184-
assertThat(adapted.getScopes()).containsExactly("scope");
165+
assertThat(adapted.getScopes()).containsExactly("user");
185166
assertThat(adapted.getClientName()).isEqualTo("clientName");
186167
}
187168

@@ -212,11 +193,11 @@ public void getClientRegistrationsWhenProviderNotSpecifiedShouldUseRegistrationI
212193
.isEqualTo("https://accounts.google.com/o/oauth2/v2/auth");
213194
assertThat(adaptedProvider.getTokenUri())
214195
.isEqualTo("https://www.googleapis.com/oauth2/v4/token");
215-
assertThat(adaptedProvider.getUserInfoEndpoint().getUri())
196+
UserInfoEndpoint userInfoEndpoint = adaptedProvider.getUserInfoEndpoint();
197+
assertThat(userInfoEndpoint.getUri())
216198
.isEqualTo("https://www.googleapis.com/oauth2/v3/userinfo");
217-
assertThat(adaptedProvider.getUserInfoEndpoint().getAuthenticationMethod())
218-
.isEqualTo(
219-
org.springframework.security.oauth2.core.AuthenticationMethod.HEADER);
199+
assertThat(userInfoEndpoint.getAuthenticationMethod()).isEqualTo(
200+
org.springframework.security.oauth2.core.AuthenticationMethod.HEADER);
220201
assertThat(adaptedProvider.getJwkSetUri())
221202
.isEqualTo("https://www.googleapis.com/oauth2/v3/certs");
222203
assertThat(adapted.getRegistrationId()).isEqualTo("google");
@@ -270,20 +251,10 @@ public void oidcProviderConfigurationWithCustomConfigurationOverridesProviderDef
270251
this.server.start();
271252
String issuer = this.server.url("").toString();
272253
setupMockResponse(issuer);
273-
OAuth2ClientProperties.Registration registration = new OAuth2ClientProperties.Registration();
274-
registration.setProvider("okta-oidc");
275-
registration.setClientId("clientId");
276-
registration.setClientSecret("clientSecret");
277-
registration.setClientAuthenticationMethod("post");
278-
registration.setRedirectUri("http://example.com/redirect");
279-
registration.setScope(Collections.singleton("user"));
280-
Provider provider = new Provider();
254+
OAuth2ClientProperties.Registration registration = createRegistration(
255+
"okta-oidc");
256+
Provider provider = createProvider();
281257
provider.setIssuerUri(issuer);
282-
provider.setAuthorizationUri("http://example.com/auth");
283-
provider.setTokenUri("http://example.com/token");
284-
provider.setUserInfoUri("http://example.com/info");
285-
provider.setUserNameAttribute("sub");
286-
provider.setJwkSetUri("http://example.com/jwk");
287258
OAuth2ClientProperties properties = new OAuth2ClientProperties();
288259
properties.getProvider().put("okta-oidc", provider);
289260
properties.getRegistration().put("okta", registration);
@@ -304,10 +275,31 @@ public void oidcProviderConfigurationWithCustomConfigurationOverridesProviderDef
304275
.isEqualTo("http://example.com/auth");
305276
assertThat(providerDetails.getTokenUri()).isEqualTo("http://example.com/token");
306277
assertThat(providerDetails.getJwkSetUri()).isEqualTo("http://example.com/jwk");
307-
assertThat(providerDetails.getUserInfoEndpoint().getUri())
308-
.isEqualTo("http://example.com/info");
309-
assertThat(providerDetails.getUserInfoEndpoint().getUserNameAttributeName())
310-
.isEqualTo("sub");
278+
UserInfoEndpoint userInfoEndpoint = providerDetails.getUserInfoEndpoint();
279+
assertThat(userInfoEndpoint.getUri()).isEqualTo("http://example.com/info");
280+
assertThat(userInfoEndpoint.getUserNameAttributeName()).isEqualTo("sub");
281+
}
282+
283+
private Provider createProvider() {
284+
Provider provider = new Provider();
285+
provider.setAuthorizationUri("http://example.com/auth");
286+
provider.setTokenUri("http://example.com/token");
287+
provider.setUserInfoUri("http://example.com/info");
288+
provider.setUserNameAttribute("sub");
289+
provider.setJwkSetUri("http://example.com/jwk");
290+
return provider;
291+
}
292+
293+
private OAuth2ClientProperties.Registration createRegistration(String provider) {
294+
OAuth2ClientProperties.Registration registration = new OAuth2ClientProperties.Registration();
295+
registration.setProvider(provider);
296+
registration.setClientId("clientId");
297+
registration.setClientSecret("clientSecret");
298+
registration.setClientAuthenticationMethod("post");
299+
registration.setRedirectUri("http://example.com/redirect");
300+
registration.setScope(Collections.singleton("user"));
301+
registration.setAuthorizationGrantType("authorization_code");
302+
return registration;
311303
}
312304

313305
private void testOidcConfiguration(OAuth2ClientProperties.Registration registration,
@@ -338,18 +330,11 @@ private void testOidcConfiguration(OAuth2ClientProperties.Registration registrat
338330
.isEqualTo("https://example.com/oauth2/v4/token");
339331
assertThat(providerDetails.getJwkSetUri())
340332
.isEqualTo("https://example.com/oauth2/v3/certs");
341-
assertThat(providerDetails.getUserInfoEndpoint().getUri())
333+
UserInfoEndpoint userInfoEndpoint = providerDetails.getUserInfoEndpoint();
334+
assertThat(userInfoEndpoint.getUri())
342335
.isEqualTo("https://example.com/oauth2/v3/userinfo");
343-
assertThat(providerDetails.getUserInfoEndpoint().getAuthenticationMethod())
344-
.isEqualTo(
345-
org.springframework.security.oauth2.core.AuthenticationMethod.HEADER);
346-
}
347-
348-
private String cleanIssuerPath(String issuer) {
349-
if (issuer.endsWith("/")) {
350-
return issuer.substring(0, issuer.length() - 1);
351-
}
352-
return issuer;
336+
assertThat(userInfoEndpoint.getAuthenticationMethod()).isEqualTo(
337+
org.springframework.security.oauth2.core.AuthenticationMethod.HEADER);
353338
}
354339

355340
private void setupMockResponse(String issuer) throws Exception {

0 commit comments

Comments
 (0)