This repository has been archived by the owner on Nov 5, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 431
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
In python 3, the code received from the browser will be binary instead of a string. Expand the API for oauth_flow.step2_exchange(code) to allow this value to be passed as is rather than decoding. for example: credentials = self.flow.step2_exchange(b'some random code') test: tox -e py34 -- tests.test_client:OAuth2WebServerFlowTest.test_exchange_success_binary_code resolves: #443, #446
- Loading branch information
1 parent
4b0a5ed
commit 6a273d6
Showing
2 changed files
with
22 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -79,6 +79,7 @@ | |
from oauth2client.client import save_to_well_known_file | ||
from oauth2client.clientsecrets import _loadfile | ||
from oauth2client.service_account import ServiceAccountCredentials | ||
from oauth2client._helpers import _to_bytes | ||
|
||
__author__ = '[email protected] (Joe Gregorio)' | ||
|
||
|
@@ -1201,6 +1202,26 @@ def test_exchange_success(self): | |
self.assertEqual('dummy_revoke_uri', credentials.revoke_uri) | ||
self.assertEqual(set(['foo']), credentials.scopes) | ||
|
||
def test_exchange_success_binary_code(self): | ||
binary_code = b'some random code' | ||
access_token = 'SlAV32hkKG' | ||
expires_in = '3600' | ||
refresh_token = '8xLOxBtZp8' | ||
revoke_uri = 'dummy_revoke_uri' | ||
|
||
payload = ('{' | ||
' "access_token":"' + access_token + '",' | ||
' "expires_in":' + expires_in + ',' | ||
' "refresh_token":"' + refresh_token + '"' | ||
'}') | ||
http = HttpMockSequence([({'status': '200'}, _to_bytes(payload))]) | ||
credentials = self.flow.step2_exchange(binary_code, http=http) | ||
self.assertEqual(access_token, credentials.access_token) | ||
self.assertIsNotNone(credentials.token_expiry) | ||
self.assertEqual(refresh_token, credentials.refresh_token) | ||
self.assertEqual(revoke_uri, credentials.revoke_uri) | ||
self.assertEqual(set(['foo']), credentials.scopes) | ||
|
||
def test_exchange_dictlike(self): | ||
class FakeDict(object): | ||
def __init__(self, d): | ||
|