diff options
author | Karim Kanso <kaz.kanso@gmail.com> | 2021-08-18 08:48:44 +0100 |
---|---|---|
committer | Asif Saif Uddin <auvipy@gmail.com> | 2021-08-18 15:53:15 +0600 |
commit | 9d4e3e9cc6f7984bd45f6e2daaefe0b98ec2eb09 (patch) | |
tree | 7f0d9897fb0cee260f8d3971f046f28701d3730f | |
parent | 555e3b06022c32e420b3bc0709c66988e91b7670 (diff) | |
download | oauthlib-9d4e3e9cc6f7984bd45f6e2daaefe0b98ec2eb09.tar.gz |
fix #755: ensure save_token is called for hybrid code flow
-rw-r--r-- | oauthlib/oauth2/rfc6749/grant_types/authorization_code.py | 2 | ||||
-rw-r--r-- | tests/oauth2/rfc6749/grant_types/test_authorization_code.py | 15 |
2 files changed, 17 insertions, 0 deletions
diff --git a/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py b/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py index bf42d88..97aeca9 100644 --- a/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py +++ b/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py @@ -272,6 +272,8 @@ class AuthorizationCodeGrant(GrantTypeBase): grant = self.create_authorization_code(request) for modifier in self._code_modifiers: grant = modifier(grant, token_handler, request) + if 'access_token' in grant: + self.request_validator.save_token(grant, request) log.debug('Saving grant %r for %r.', grant, request) self.request_validator.save_authorization_code( request.client_id, grant, request) diff --git a/tests/oauth2/rfc6749/grant_types/test_authorization_code.py b/tests/oauth2/rfc6749/grant_types/test_authorization_code.py index 20a2416..dec5323 100644 --- a/tests/oauth2/rfc6749/grant_types/test_authorization_code.py +++ b/tests/oauth2/rfc6749/grant_types/test_authorization_code.py @@ -324,3 +324,18 @@ class AuthorizationCodeGrantTest(TestCase): authorization_code.code_challenge_method_s256("dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk", "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM") ) + + def test_code_modifier_called(self): + bearer = BearerToken(self.mock_validator) + code_modifier = mock.MagicMock(wraps=lambda grant, *a: grant) + self.auth.register_code_modifier(code_modifier) + self.auth.create_authorization_response(self.request, bearer) + code_modifier.assert_called_once() + + def test_hybrid_token_save(self): + bearer = BearerToken(self.mock_validator) + self.auth.register_code_modifier( + lambda grant, *a: dict(list(grant.items()) + [('access_token', 1)]) + ) + self.auth.create_authorization_response(self.request, bearer) + self.mock_validator.save_token.assert_called_once() |