Skip to content

Commit c1a303b

Browse files
committed
Add tests for overriding parameters
Issue gh-15298 Issue gh-11298
1 parent 5d8cf6a commit c1a303b

File tree

5 files changed

+160
-0
lines changed

5 files changed

+160
-0
lines changed

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/endpoint/RestClientAuthorizationCodeTokenResponseClientTests.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,38 @@ public void getTokenResponseWhenParametersConverterSetThenCalled() throws Except
445445
assertThat(formParameters).contains("custom-parameter-name=custom-parameter-value");
446446
}
447447

448+
@Test
449+
public void getTokenResponseWhenParametersConverterSetThenAbleToOverrideDefaultParameters() throws Exception {
450+
this.clientRegistration.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST);
451+
// @formatter:off
452+
String accessTokenSuccessResponse = "{\n"
453+
+ " \"access_token\": \"access-token-1234\",\n"
454+
+ " \"token_type\": \"bearer\",\n"
455+
+ " \"expires_in\": \"3600\"\n"
456+
+ "}\n";
457+
// @formatter:on
458+
this.server.enqueue(jsonResponse(accessTokenSuccessResponse));
459+
ClientRegistration clientRegistration = this.clientRegistration.build();
460+
OAuth2AuthorizationCodeGrantRequest grantRequest = new OAuth2AuthorizationCodeGrantRequest(clientRegistration,
461+
this.authorizationExchange);
462+
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
463+
parameters.set(OAuth2ParameterNames.GRANT_TYPE, "custom");
464+
parameters.set(OAuth2ParameterNames.CODE, "custom-code");
465+
parameters.set(OAuth2ParameterNames.REDIRECT_URI, "custom-uri");
466+
// The client_id parameter is omitted for testing purposes
467+
this.tokenResponseClient.setParametersConverter((authorizationGrantRequest) -> parameters);
468+
this.tokenResponseClient.getTokenResponse(grantRequest);
469+
RecordedRequest recordedRequest = this.server.takeRequest();
470+
String formParameters = recordedRequest.getBody().readUtf8();
471+
// @formatter:off
472+
assertThat(formParameters).contains(
473+
param(OAuth2ParameterNames.GRANT_TYPE, "custom"),
474+
param(OAuth2ParameterNames.CODE, "custom-code"),
475+
param(OAuth2ParameterNames.REDIRECT_URI, "custom-uri"));
476+
// @formatter:on
477+
assertThat(formParameters).doesNotContain(OAuth2ParameterNames.CLIENT_ID);
478+
}
479+
448480
@Test
449481
public void getTokenResponseWhenParametersConverterAddedThenCalled() throws Exception {
450482
// @formatter:off

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/endpoint/RestClientClientCredentialsTokenResponseClientTests.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,38 @@ public void getTokenResponseWhenParametersConverterSetThenCalled() throws Except
453453
assertThat(formParameters).contains("custom-parameter-name=custom-parameter-value");
454454
}
455455

456+
@Test
457+
public void getTokenResponseWhenParametersConverterSetThenAbleToOverrideDefaultParameters() throws Exception {
458+
this.clientRegistration.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST);
459+
// @formatter:off
460+
String accessTokenSuccessResponse = "{\n"
461+
+ " \"access_token\": \"access-token-1234\",\n"
462+
+ " \"token_type\": \"bearer\",\n"
463+
+ " \"expires_in\": \"3600\"\n"
464+
+ "}\n";
465+
// @formatter:on
466+
this.server.enqueue(jsonResponse(accessTokenSuccessResponse));
467+
ClientRegistration clientRegistration = this.clientRegistration.build();
468+
OAuth2ClientCredentialsGrantRequest grantRequest = new OAuth2ClientCredentialsGrantRequest(clientRegistration);
469+
Converter<OAuth2ClientCredentialsGrantRequest, MultiValueMap<String, String>> parametersConverter = mock(
470+
Converter.class);
471+
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
472+
parameters.set(OAuth2ParameterNames.GRANT_TYPE, "custom");
473+
parameters.set(OAuth2ParameterNames.SCOPE, "one two");
474+
// The client_id parameter is omitted for testing purposes
475+
given(parametersConverter.convert(grantRequest)).willReturn(parameters);
476+
this.tokenResponseClient.setParametersConverter((authorizationGrantRequest) -> parameters);
477+
this.tokenResponseClient.getTokenResponse(grantRequest);
478+
RecordedRequest recordedRequest = this.server.takeRequest();
479+
String formParameters = recordedRequest.getBody().readUtf8();
480+
// @formatter:off
481+
assertThat(formParameters).contains(
482+
param(OAuth2ParameterNames.GRANT_TYPE, "custom"),
483+
param(OAuth2ParameterNames.SCOPE, "one two"));
484+
// @formatter:on
485+
assertThat(formParameters).doesNotContain(OAuth2ParameterNames.CLIENT_ID);
486+
}
487+
456488
@Test
457489
public void getTokenResponseWhenParametersConverterAddedThenCalled() throws Exception {
458490
// @formatter:off

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/endpoint/RestClientJwtBearerTokenResponseClientTests.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,38 @@ public void getTokenResponseWhenHeadersConverterSetThenCalled() throws Exception
396396

397397
@Test
398398
public void getTokenResponseWhenParametersConverterSetThenCalled() throws Exception {
399+
this.clientRegistration.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST);
400+
// @formatter:off
401+
String accessTokenSuccessResponse = "{\n"
402+
+ " \"access_token\": \"access-token-1234\",\n"
403+
+ " \"token_type\": \"bearer\",\n"
404+
+ " \"expires_in\": \"3600\"\n"
405+
+ "}\n";
406+
// @formatter:on
407+
this.server.enqueue(jsonResponse(accessTokenSuccessResponse));
408+
ClientRegistration clientRegistration = this.clientRegistration.build();
409+
JwtBearerGrantRequest grantRequest = new JwtBearerGrantRequest(clientRegistration, this.jwtAssertion);
410+
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
411+
parameters.set(OAuth2ParameterNames.GRANT_TYPE, "custom");
412+
parameters.set(OAuth2ParameterNames.ASSERTION, "custom-assertion");
413+
parameters.set(OAuth2ParameterNames.SCOPE, "one two");
414+
// The client_id parameter is omitted for testing purposes
415+
this.tokenResponseClient.setParametersConverter((authorizationGrantRequest) -> parameters);
416+
this.tokenResponseClient.getTokenResponse(grantRequest);
417+
RecordedRequest recordedRequest = this.server.takeRequest();
418+
String formParameters = recordedRequest.getBody().readUtf8();
419+
// @formatter:off
420+
assertThat(formParameters).contains(
421+
param(OAuth2ParameterNames.GRANT_TYPE, "custom"),
422+
param(OAuth2ParameterNames.ASSERTION, "custom-assertion"),
423+
param(OAuth2ParameterNames.SCOPE, "one two"));
424+
// @formatter:on
425+
assertThat(formParameters).doesNotContain(OAuth2ParameterNames.CLIENT_ID);
426+
}
427+
428+
@Test
429+
public void getTokenResponseWhenParametersConverterSetThenAbleToOverrideDefaultParameters() throws Exception {
430+
this.clientRegistration.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST);
399431
// @formatter:off
400432
String accessTokenSuccessResponse = "{\n"
401433
+ " \"access_token\": \"access-token-1234\",\n"

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/endpoint/RestClientRefreshTokenTokenResponseClientTests.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,38 @@ public void getTokenResponseWhenParametersConverterSetThenCalled() throws Except
473473
assertThat(formParameters).contains("custom-parameter-name=custom-parameter-value");
474474
}
475475

476+
@Test
477+
public void getTokenResponseWhenParametersConverterSetThenAbleToOverrideDefaultParameters() throws Exception {
478+
this.clientRegistration.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST);
479+
// @formatter:off
480+
String accessTokenSuccessResponse = "{\n"
481+
+ " \"access_token\": \"access-token-1234\",\n"
482+
+ " \"token_type\": \"bearer\",\n"
483+
+ " \"expires_in\": \"3600\"\n"
484+
+ "}\n";
485+
// @formatter:on
486+
this.server.enqueue(jsonResponse(accessTokenSuccessResponse));
487+
ClientRegistration clientRegistration = this.clientRegistration.build();
488+
OAuth2RefreshTokenGrantRequest grantRequest = new OAuth2RefreshTokenGrantRequest(clientRegistration,
489+
this.accessToken, this.refreshToken);
490+
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
491+
parameters.set(OAuth2ParameterNames.GRANT_TYPE, "custom");
492+
parameters.set(OAuth2ParameterNames.REFRESH_TOKEN, "custom-token");
493+
parameters.set(OAuth2ParameterNames.SCOPE, "one two");
494+
// The client_id parameter is omitted for testing purposes
495+
this.tokenResponseClient.setParametersConverter((authorizationGrantRequest) -> parameters);
496+
this.tokenResponseClient.getTokenResponse(grantRequest);
497+
RecordedRequest recordedRequest = this.server.takeRequest();
498+
String formParameters = recordedRequest.getBody().readUtf8();
499+
// @formatter:off
500+
assertThat(formParameters).contains(
501+
param(OAuth2ParameterNames.GRANT_TYPE, "custom"),
502+
param(OAuth2ParameterNames.REFRESH_TOKEN, "custom-token"),
503+
param(OAuth2ParameterNames.SCOPE, "one two"));
504+
// @formatter:on
505+
assertThat(formParameters).doesNotContain(OAuth2ParameterNames.CLIENT_ID);
506+
}
507+
476508
@Test
477509
public void getTokenResponseWhenParametersConverterAddedThenCalled() throws Exception {
478510
// @formatter:off

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/endpoint/RestClientTokenExchangeTokenResponseClientTests.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,38 @@ public void getTokenResponseWhenParametersConverterSetThenCalled() throws Except
569569
assertThat(formParameters).contains("custom-parameter-name=custom-parameter-value");
570570
}
571571

572+
@Test
573+
public void getTokenResponseWhenParametersConverterSetThenAbleToOverrideDefaultParameters() throws Exception {
574+
this.clientRegistration.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST);
575+
// @formatter:off
576+
String accessTokenSuccessResponse = "{\n"
577+
+ " \"access_token\": \"access-token-1234\",\n"
578+
+ " \"token_type\": \"bearer\",\n"
579+
+ " \"expires_in\": \"3600\"\n"
580+
+ "}\n";
581+
// @formatter:on
582+
this.server.enqueue(jsonResponse(accessTokenSuccessResponse));
583+
ClientRegistration clientRegistration = this.clientRegistration.build();
584+
TokenExchangeGrantRequest grantRequest = new TokenExchangeGrantRequest(clientRegistration, this.subjectToken,
585+
this.actorToken);
586+
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
587+
parameters.set(OAuth2ParameterNames.GRANT_TYPE, "custom");
588+
parameters.set(OAuth2ParameterNames.SCOPE, "one two");
589+
parameters.set(OAuth2ParameterNames.SUBJECT_TOKEN, "custom-token");
590+
// The client_id parameter is omitted for testing purposes
591+
this.tokenResponseClient.setParametersConverter((authorizationGrantRequest) -> parameters);
592+
this.tokenResponseClient.getTokenResponse(grantRequest);
593+
RecordedRequest recordedRequest = this.server.takeRequest();
594+
String formParameters = recordedRequest.getBody().readUtf8();
595+
// @formatter:off
596+
assertThat(formParameters).contains(
597+
param(OAuth2ParameterNames.GRANT_TYPE, "custom"),
598+
param(OAuth2ParameterNames.SCOPE, "one two"),
599+
param(OAuth2ParameterNames.SUBJECT_TOKEN, "custom-token"));
600+
// @formatter:on
601+
assertThat(formParameters).doesNotContain(OAuth2ParameterNames.CLIENT_ID);
602+
}
603+
572604
@Test
573605
public void getTokenResponseWhenParametersConverterAddedThenCalled() throws Exception {
574606
// @formatter:off

0 commit comments

Comments
 (0)