Refresh SignedJwtAssertionCredentials w/Storage.
Reviewed in http://codereview.appspot.com/6346086/.
Fixes issue #160.
diff --git a/tests/test_oauth2client_jwt.py b/tests/test_oauth2client_jwt.py
index dcbb33c..65a3410 100644
--- a/tests/test_oauth2client_jwt.py
+++ b/tests/test_oauth2client_jwt.py
@@ -25,6 +25,7 @@
import httplib2
import os
import sys
+import tempfile
import time
import unittest
import urlparse
@@ -37,9 +38,11 @@
from apiclient.http import HttpMockSequence
from oauth2client import crypt
from oauth2client.anyjson import simplejson
+from oauth2client.client import Credentials
from oauth2client.client import SignedJwtAssertionCredentials
from oauth2client.client import VerifyJwtTokenError
from oauth2client.client import verify_id_token
+from oauth2client.file import Storage
def datafile(filename):
@@ -182,7 +185,10 @@
})
self._check_jwt_failure(jwt, 'Wrong recipient')
- def test_signed_jwt_assertion_credentials(self):
+
+class SignedJwtAssertionCredentialsTests(unittest.TestCase):
+
+ def test_credentials_good(self):
private_key = datafile('privatekey.p12')
credentials = SignedJwtAssertionCredentials(
'some_account@example.com',
@@ -197,5 +203,62 @@
resp, content = http.request('http://example.org')
self.assertEqual('Bearer 1/3w', content['Authorization'])
+ def test_credentials_to_from_json(self):
+ private_key = datafile('privatekey.p12')
+ credentials = SignedJwtAssertionCredentials(
+ 'some_account@example.com',
+ private_key,
+ scope='read+write',
+ prn='joe@example.org')
+ json = credentials.to_json()
+ restored = Credentials.new_from_json(json)
+ self.assertEqual(credentials.private_key, restored.private_key)
+ self.assertEqual(credentials.private_key_password,
+ restored.private_key_password)
+ self.assertEqual(credentials.kwargs, restored.kwargs)
+
+ def _credentials_refresh(self, credentials):
+ http = HttpMockSequence([
+ ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),
+ ({'status': '401'}, ''),
+ ({'status': '200'}, '{"access_token":"3/3w","expires_in":3600}'),
+ ({'status': '200'}, 'echo_request_headers'),
+ ])
+ http = credentials.authorize(http)
+ resp, content = http.request('http://example.org')
+ return content
+
+ def test_credentials_refresh_without_storage(self):
+ private_key = datafile('privatekey.p12')
+ credentials = SignedJwtAssertionCredentials(
+ 'some_account@example.com',
+ private_key,
+ scope='read+write',
+ prn='joe@example.org')
+
+ content = self._credentials_refresh(credentials)
+
+ self.assertEqual('Bearer 3/3w', content['Authorization'])
+
+ def test_credentials_refresh_with_storage(self):
+ private_key = datafile('privatekey.p12')
+ credentials = SignedJwtAssertionCredentials(
+ 'some_account@example.com',
+ private_key,
+ scope='read+write',
+ prn='joe@example.org')
+
+ (filehandle, filename) = tempfile.mkstemp()
+ os.close(filehandle)
+ store = Storage(filename)
+ store.put(credentials)
+ credentials.set_store(store)
+
+ content = self._credentials_refresh(credentials)
+
+ self.assertEqual('Bearer 3/3w', content['Authorization'])
+ os.unlink(filename)
+
+
if __name__ == '__main__':
unittest.main()