Repository: incubator-beam Updated Branches: refs/heads/python-sdk 7c0bf25fa -> 9a175a5fe
Call from_p12_keyfile() with the correct arguments. This code path is failing, because a wrong list of arguments is passed. Fixing that uncovered that oauth2client depends on pyOpenSSL for this call to work. I did not add this dependency to setup.py because, it does not install cleanly in all environments. As a workaround, users who would like to use this authentication method could first do a 'pip install pyOpenSSL'. I added a test, that skips if 'pyOpenSSL' is not installed. Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/f23b717e Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/f23b717e Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/f23b717e Branch: refs/heads/python-sdk Commit: f23b717e7e433c30c0acee0fea8d179e6343b8b8 Parents: 7c0bf25 Author: Ahmet Altay <al...@google.com> Authored: Fri Dec 2 13:38:31 2016 -0800 Committer: Robert Bradshaw <rober...@gmail.com> Committed: Fri Dec 2 22:14:32 2016 -0800 ---------------------------------------------------------------------- sdks/python/apache_beam/internal/auth.py | 6 +-- sdks/python/apache_beam/internal/auth_test.py | 44 +++++++++++++++++++ sdks/python/apache_beam/tests/data/README.md | 20 +++++++++ .../apache_beam/tests/data/privatekey.p12 | Bin 0 -> 2452 bytes sdks/python/setup.py | 2 +- 5 files changed, 68 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/f23b717e/sdks/python/apache_beam/internal/auth.py ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/internal/auth.py b/sdks/python/apache_beam/internal/auth.py index a043fcf..056f40c 100644 --- a/sdks/python/apache_beam/internal/auth.py +++ b/sdks/python/apache_beam/internal/auth.py @@ -133,6 +133,7 @@ def get_service_credentials(): 'https://www.googleapis.com/auth/datastore' ] + # TODO(BEAM-1068): Do not recreate options from sys.argv. # We are currently being run from the command line. google_cloud_options = PipelineOptions( sys.argv).view_as(GoogleCloudOptions) @@ -151,8 +152,8 @@ def get_service_credentials(): return ServiceAccountCredentials.from_p12_keyfile( google_cloud_options.service_account_name, google_cloud_options.service_account_key_file, - client_scopes, - user_agent=user_agent) + private_key_password=None, + scopes=client_scopes) except ImportError: with file(google_cloud_options.service_account_key_file) as f: service_account_key = f.read() @@ -162,7 +163,6 @@ def get_service_credentials(): service_account_key, client_scopes, user_agent=user_agent) - else: try: credentials = _GCloudWrapperCredentials(user_agent) http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/f23b717e/sdks/python/apache_beam/internal/auth_test.py ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/internal/auth_test.py b/sdks/python/apache_beam/internal/auth_test.py new file mode 100644 index 0000000..dfd408e --- /dev/null +++ b/sdks/python/apache_beam/internal/auth_test.py @@ -0,0 +1,44 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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. +# +"""Unit tests for the auth module.""" + +import os +import sys +import unittest + +import mock + +from apache_beam.internal import auth + + +class AuthTest(unittest.TestCase): + + def test_create_application_client(self): + try: + test_args = [ + 'test', '--service_account_name', 'abc', '--service_account_key_file', + os.path.join( + os.path.dirname(__file__), '..', 'tests/data/privatekey.p12')] + with mock.patch.object(sys, 'argv', test_args): + credentials = auth.get_service_credentials() + self.assertIsNotNone(credentials) + except NotImplementedError: + self.skipTest('service account tests require pyOpenSSL module.') + + +if __name__ == '__main__': + unittest.main() http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/f23b717e/sdks/python/apache_beam/tests/data/README.md ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/tests/data/README.md b/sdks/python/apache_beam/tests/data/README.md new file mode 100644 index 0000000..5856342 --- /dev/null +++ b/sdks/python/apache_beam/tests/data/README.md @@ -0,0 +1,20 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you 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. +--> +# Generating Test Data Files +* [privatekey.p12](https://github.com/google/oauth2client/blob/master/tests/data/privatekey.p12) http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/f23b717e/sdks/python/apache_beam/tests/data/privatekey.p12 ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/tests/data/privatekey.p12 b/sdks/python/apache_beam/tests/data/privatekey.p12 new file mode 100644 index 0000000..c369ecb Binary files /dev/null and b/sdks/python/apache_beam/tests/data/privatekey.p12 differ http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/f23b717e/sdks/python/setup.py ---------------------------------------------------------------------- diff --git a/sdks/python/setup.py b/sdks/python/setup.py index 73927bb..033afc7 100644 --- a/sdks/python/setup.py +++ b/sdks/python/setup.py @@ -112,7 +112,7 @@ setuptools.setup( author=PACKAGE_AUTHOR, author_email=PACKAGE_EMAIL, packages=setuptools.find_packages(), - package_data={'apache_beam': ['**/*.pyx', '**/*.pxd']}, + package_data={'apache_beam': ['**/*.pyx', '**/*.pxd', 'tests/data/*']}, ext_modules=cythonize([ '**/*.pyx', 'apache_beam/coders/coder_impl.py',