Skip to content

Commit

Permalink
Ensure that request.client_id is set during Refresh Token Grant.
Browse files Browse the repository at this point in the history
  • Loading branch information
luhn authored and auvipy committed Sep 2, 2023
1 parent b216ce1 commit 00f9a21
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
3 changes: 3 additions & 0 deletions oauthlib/oauth2/rfc6749/grant_types/refresh_token.py
Expand Up @@ -101,6 +101,9 @@ def validate_token_request(self, request):
if not self.request_validator.authenticate_client(request):
log.debug('Invalid client (%r), denying access.', request)
raise errors.InvalidClientError(request=request)
# Ensure that request.client_id is set.
if request.client_id is None and request.client is not None:
request.client_id = request.client.client_id
elif not self.request_validator.authenticate_client_id(request.client_id, request):
log.debug('Client authentication failed, %r.', request)
raise errors.InvalidClientError(request=request)
Expand Down
16 changes: 16 additions & 0 deletions tests/oauth2/rfc6749/grant_types/test_refresh_token.py
Expand Up @@ -130,6 +130,22 @@ def test_authentication_required(self):
self.request)
self.mock_validator.client_authentication_required.assert_called_once_with(self.request)


def test_authentication_required_populate_client_id(self):
"""
Make sure that request.client_id is populated from
request.client.client_id if None.
"""
self.mock_validator.client_authentication_required.return_value = True
self.mock_validator.authenticate_client.return_value = True
# self.mock_validator.authenticate_client_id.return_value = False
# self.request.code = 'waffles'
self.request.client_id = None
self.request.client.client_id = 'foobar'
self.auth.validate_token_request(self.request)
self.request.client_id = 'foobar'

def test_invalid_grant_type(self):
self.request.grant_type = 'wrong_type'
self.assertRaises(errors.UnsupportedGrantTypeError,
Expand Down

0 comments on commit 00f9a21

Please sign in to comment.