aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Hermes <daniel.j.hermes@gmail.com>2016-02-18 20:41:33 -0800
committerDanny Hermes <daniel.j.hermes@gmail.com>2016-02-18 20:43:18 -0800
commit6ce1374533544c6f48fbc33a39c1e8d9d70cdc50 (patch)
tree5f6c888d1dce936caf2e98b1ed1aa24050aff1bd
parentab9173b220f1b88a9a9eaa7ee0133e60b7bffff6 (diff)
downloadoauth2client-6ce1374533544c6f48fbc33a39c1e8d9d70cdc50.tar.gz
Adding GCE-only system test.
-rw-r--r--scripts/run_gce_system_tests.py58
-rw-r--r--scripts/run_system_tests.py14
-rw-r--r--tox.ini9
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
diff --git a/tox.ini b/tox.ini
index bdee640..2ffcc05 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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}