Skip to content

Commit 409285f

Browse files
committed
Fix test
Issue gh-7350
1 parent 0ac8618 commit 409285f

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolverTests.java

+17
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.security.core.context.SecurityContextHolder;
2828
import org.springframework.security.oauth2.client.ClientAuthorizationRequiredException;
2929
import org.springframework.security.oauth2.client.ClientCredentialsOAuth2AuthorizedClientProvider;
30+
import org.springframework.security.oauth2.client.OAuth2AuthorizationContext;
3031
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
3132
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
3233
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
@@ -49,11 +50,14 @@
4950
import org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse;
5051
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
5152
import org.springframework.util.ReflectionUtils;
53+
import org.springframework.util.StringUtils;
5254
import org.springframework.web.context.request.ServletWebRequest;
5355

5456
import javax.servlet.http.HttpServletRequest;
5557
import javax.servlet.http.HttpServletResponse;
5658
import java.lang.reflect.Method;
59+
import java.util.HashMap;
60+
import java.util.Map;
5761

5862
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
5963
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
@@ -285,6 +289,19 @@ public void resolveArgumentWhenAuthorizedClientNotFoundForPasswordClientThenReso
285289
DefaultOAuth2AuthorizedClientManager authorizedClientManager = new DefaultOAuth2AuthorizedClientManager(
286290
this.clientRegistrationRepository, this.authorizedClientRepository);
287291
authorizedClientManager.setAuthorizedClientProvider(passwordAuthorizedClientProvider);
292+
293+
// Set custom contextAttributesMapper
294+
authorizedClientManager.setContextAttributesMapper(authorizeRequest -> {
295+
Map<String, Object> contextAttributes = new HashMap<>();
296+
String username = authorizeRequest.getServletRequest().getParameter(OAuth2ParameterNames.USERNAME);
297+
String password = authorizeRequest.getServletRequest().getParameter(OAuth2ParameterNames.PASSWORD);
298+
if (StringUtils.hasText(username) && StringUtils.hasText(password)) {
299+
contextAttributes.put(OAuth2AuthorizationContext.USERNAME_ATTRIBUTE_NAME, username);
300+
contextAttributes.put(OAuth2AuthorizationContext.PASSWORD_ATTRIBUTE_NAME, password);
301+
}
302+
return contextAttributes;
303+
});
304+
288305
this.argumentResolver = new OAuth2AuthorizedClientArgumentResolver(authorizedClientManager);
289306

290307
OAuth2AccessTokenResponse accessTokenResponse = OAuth2AccessTokenResponse

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/web/reactive/function/client/ServletOAuth2AuthorizedClientExchangeFilterFunctionTests.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.springframework.security.core.GrantedAuthority;
4747
import org.springframework.security.core.authority.AuthorityUtils;
4848
import org.springframework.security.core.context.SecurityContextHolder;
49+
import org.springframework.security.oauth2.client.OAuth2AuthorizationContext;
4950
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
5051
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
5152
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
@@ -68,6 +69,7 @@
6869
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
6970
import org.springframework.security.oauth2.core.endpoint.TestOAuth2AccessTokenResponses;
7071
import org.springframework.security.oauth2.core.user.OAuth2User;
72+
import org.springframework.util.StringUtils;
7173
import org.springframework.web.client.RestOperations;
7274
import org.springframework.web.context.request.RequestContextHolder;
7375
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -120,6 +122,8 @@ public class ServletOAuth2AuthorizedClientExchangeFilterFunctionTests {
120122
@Captor
121123
private ArgumentCaptor<OAuth2AuthorizedClient> authorizedClientCaptor;
122124

125+
private DefaultOAuth2AuthorizedClientManager authorizedClientManager;
126+
123127
/**
124128
* Used for get the attributes from defaultRequest.
125129
*/
@@ -148,9 +152,9 @@ public void setup() {
148152
.clientCredentials(configurer -> configurer.accessTokenResponseClient(this.clientCredentialsTokenResponseClient))
149153
.password(configurer -> configurer.accessTokenResponseClient(this.passwordTokenResponseClient))
150154
.build();
151-
DefaultOAuth2AuthorizedClientManager authorizedClientManager = new DefaultOAuth2AuthorizedClientManager(
155+
this.authorizedClientManager = new DefaultOAuth2AuthorizedClientManager(
152156
this.clientRegistrationRepository, this.authorizedClientRepository);
153-
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
157+
this.authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
154158
this.function = new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
155159
}
156160

@@ -459,6 +463,18 @@ public void filterWhenPasswordClientNotAuthorizedThenGetNewToken() {
459463
ClientRegistration registration = TestClientRegistrations.password().build();
460464
when(this.clientRegistrationRepository.findByRegistrationId(eq(registration.getRegistrationId()))).thenReturn(registration);
461465

466+
// Set custom contextAttributesMapper
467+
this.authorizedClientManager.setContextAttributesMapper(authorizeRequest -> {
468+
Map<String, Object> contextAttributes = new HashMap<>();
469+
String username = authorizeRequest.getServletRequest().getParameter(OAuth2ParameterNames.USERNAME);
470+
String password = authorizeRequest.getServletRequest().getParameter(OAuth2ParameterNames.PASSWORD);
471+
if (StringUtils.hasText(username) && StringUtils.hasText(password)) {
472+
contextAttributes.put(OAuth2AuthorizationContext.USERNAME_ATTRIBUTE_NAME, username);
473+
contextAttributes.put(OAuth2AuthorizationContext.PASSWORD_ATTRIBUTE_NAME, password);
474+
}
475+
return contextAttributes;
476+
});
477+
462478
MockHttpServletRequest servletRequest = new MockHttpServletRequest();
463479
servletRequest.setParameter(OAuth2ParameterNames.USERNAME, "username");
464480
servletRequest.setParameter(OAuth2ParameterNames.PASSWORD, "password");

0 commit comments

Comments
 (0)