diff options
author | Danny Hermes <daniel.j.hermes@gmail.com> | 2016-02-18 20:41:33 -0800 |
---|---|---|
committer | Danny Hermes <daniel.j.hermes@gmail.com> | 2016-02-18 20:43:18 -0800 |
commit | 6ce1374533544c6f48fbc33a39c1e8d9d70cdc50 (patch) | |
tree | 5f6c888d1dce936caf2e98b1ed1aa24050aff1bd | |
parent | ab9173b220f1b88a9a9eaa7ee0133e60b7bffff6 (diff) | |
download | oauth2client-6ce1374533544c6f48fbc33a39c1e8d9d70cdc50.tar.gz |
Adding GCE-only system test.
-rw-r--r-- | scripts/run_gce_system_tests.py | 58 | ||||
-rw-r--r-- | scripts/run_system_tests.py | 14 | ||||
-rw-r--r-- | tox.ini | 9 |
3 files changed, 81 insertions, 0 deletions
diff --git a/scripts/run_gce_system_tests.py b/scripts/run_gce_system_tests.py new file mode 100644 index 0000000..7af1902 --- /dev/null +++ b/scripts/run_gce_system_tests.py @@ -0,0 +1,58 @@ +# Copyright 2016 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import unittest + +import httplib2 +from six.moves import http_client +from six.moves import urllib + +from oauth2client import GOOGLE_TOKEN_INFO_URI +from oauth2client.client import GoogleCredentials +from oauth2client.contrib.gce import AppAssertionCredentials + + +class TestComputeEngine(unittest.TestCase): + + def test_application_default(self): + default_creds = GoogleCredentials.get_application_default() + self.assertIsInstance(default_creds, AppAssertionCredentials) + + def test_token_info(self): + credentials = AppAssertionCredentials([]) + http = httplib2.Http() + + # First refresh to get the access token. + self.assertIsNone(credentials.access_token) + credentials.refresh(http) + self.assertIsNotNone(credentials.access_token) + + # Then check the access token against the token info API. + query_params = {'access_token': credentials.access_token} + token_uri = (GOOGLE_TOKEN_INFO_URI + '?' + + urllib.parse.urlencode(query_params)) + response, content = http.request(token_uri) + self.assertEqual(response.status, http_client.OK) + + content = content.decode('utf-8') + payload = json.loads(content) + self.assertTrue(payload['email'].endswith( + '-compute@developer.gserviceaccount.com')) + self.assertEqual(payload['access_type'], 'offline') + self.assertLessEqual(int(payload['expires_in']), 3600) + + +if __name__ == '__main__': + unittest.main() diff --git a/scripts/run_system_tests.py b/scripts/run_system_tests.py index 02fb203..f955e3b 100644 --- a/scripts/run_system_tests.py +++ b/scripts/run_system_tests.py @@ -1,3 +1,17 @@ +# Copyright 2016 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os @@ -138,3 +138,12 @@ deps = cryptography>=1.0 pyopenssl>=0.14 passenv = {[testenv:system-tests]passenv} + +[testenv:gce-system-tests] +basepython = + python2.7 +commands = + python {toxinidir}/scripts/run_gce_system_tests.py +deps = + pycrypto>=2.6 +passenv = {[testenv:system-tests]passenv} |