Skip to content

Removing get_credentials() from core. #3667

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions bigtable/google/cloud/bigtable/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

import os

import google.auth
import google.auth.credentials
from google.gax.utils import metrics
from google.longrunning import operations_grpc
Expand All @@ -40,7 +41,6 @@
from google.cloud._http import DEFAULT_USER_AGENT
from google.cloud.client import _ClientFactoryMixin
from google.cloud.client import _ClientProjectMixin
from google.cloud.credentials import get_credentials
from google.cloud.environment_vars import BIGTABLE_EMULATOR

from google.cloud.bigtable import __version__
Expand Down Expand Up @@ -211,7 +211,7 @@ def __init__(self, project=None, credentials=None,
read_only=False, admin=False, user_agent=DEFAULT_USER_AGENT):
_ClientProjectMixin.__init__(self, project=project)
if credentials is None:
credentials = get_credentials()
credentials, _ = google.auth.default()

if read_only and admin:
raise ValueError('A read-only client cannot also perform'
Expand Down
13 changes: 6 additions & 7 deletions bigtable/tests/unit/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,20 +360,19 @@ def test_constructor_both_admin_and_read_only(self):
read_only=True)

def test_constructor_implicit_credentials(self):
from google.cloud._testing import _Monkey
from google.cloud.bigtable import client as MUT
from google.cloud.bigtable.client import DATA_SCOPE

creds = _make_credentials()
expected_scopes = [MUT.DATA_SCOPE]

def mock_get_credentials():
return creds
expected_scopes = [DATA_SCOPE]

with _Monkey(MUT, get_credentials=mock_get_credentials):
patch = mock.patch(
'google.auth.default', return_value=(creds, None))
with patch as default:
self._constructor_test_helper(
None, None,
expected_creds=creds.with_scopes.return_value)

default.assert_called_once_with()
creds.with_scopes.assert_called_once_with(expected_scopes)

def test_constructor_credentials_wo_create_scoped(self):
Expand Down
4 changes: 2 additions & 2 deletions core/google/cloud/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
import google_auth_httplib2
import six

import google.auth
import google.auth.credentials
from google.cloud._helpers import _determine_default_project
from google.cloud.credentials import get_credentials
from google.oauth2 import service_account


Expand Down Expand Up @@ -135,7 +135,7 @@ def __init__(self, credentials=None, _http=None):
credentials, google.auth.credentials.Credentials)):
raise ValueError(_GOOGLE_AUTH_CREDENTIALS_HELP)
if credentials is None and _http is None:
credentials = get_credentials()
credentials, _ = google.auth.default()

This comment was marked as spam.

This comment was marked as spam.

self._credentials = google.auth.credentials.with_scopes_if_required(
credentials, self.SCOPE)
self._http_internal = _http
Expand Down
30 changes: 0 additions & 30 deletions core/google/cloud/credentials.py

This file was deleted.

23 changes: 17 additions & 6 deletions core/nox.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.

from __future__ import absolute_import
import os

import nox

Expand All @@ -29,16 +30,26 @@ def unit_tests(session, python_version):
session.virtualenv_dirname = 'unit-' + python_version

# Install all test dependencies, then install this package in-place.
session.install('mock', 'pytest', 'pytest-cov',
'grpcio >= 1.0.2')
session.install(
'mock',
'pytest',
'pytest-cov',
'grpcio >= 1.0.2',
)
session.install('-e', '.')

# Run py.test against the unit tests.
session.run(
'py.test', '--quiet',
'--cov=google.cloud', '--cov=tests.unit', '--cov-append',
'--cov-config=.coveragerc', '--cov-report=', '--cov-fail-under=97',
'tests/unit',
'py.test',
'--quiet',
'--cov=google.cloud',
'--cov=tests.unit',
'--cov-append',
'--cov-config=.coveragerc',
'--cov-report=',
'--cov-fail-under=97',
os.path.join('tests', 'unit'),
*session.posargs
)


Expand Down
83 changes: 35 additions & 48 deletions core/tests/unit/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,37 +59,31 @@ def test_unpickleable(self):
with self.assertRaises(pickle.PicklingError):
pickle.dumps(client_obj)

def test_ctor_defaults(self):
from google.cloud._testing import _Monkey
from google.cloud import client

CREDENTIALS = _make_credentials()
FUNC_CALLS = []

def mock_get_credentials():
FUNC_CALLS.append('get_credentials')
return CREDENTIALS
def test_constructor_defaults(self):
credentials = _make_credentials()

with _Monkey(client, get_credentials=mock_get_credentials):
patch = mock.patch(
'google.auth.default', return_value=(credentials, None))
with patch as default:
client_obj = self._make_one()

self.assertIs(client_obj._credentials, CREDENTIALS)
self.assertIs(client_obj._credentials, credentials)
self.assertIsNone(client_obj._http_internal)
self.assertEqual(FUNC_CALLS, ['get_credentials'])
default.assert_called_once_with()

def test_ctor_explicit(self):
CREDENTIALS = _make_credentials()
HTTP = object()
client_obj = self._make_one(credentials=CREDENTIALS, _http=HTTP)
def test_constructor_explicit(self):
credentials = _make_credentials()
http = mock.sentinel.http
client_obj = self._make_one(credentials=credentials, _http=http)

self.assertIs(client_obj._credentials, CREDENTIALS)
self.assertIs(client_obj._http_internal, HTTP)
self.assertIs(client_obj._credentials, credentials)
self.assertIs(client_obj._http_internal, http)

def test_ctor_bad_credentials(self):
CREDENTIALS = object()
def test_constructor_bad_credentials(self):
credentials = mock.sentinel.credentials

with self.assertRaises(ValueError):
self._make_one(credentials=CREDENTIALS)
self._make_one(credentials=credentials)

def test_from_service_account_json(self):
from google.cloud import _helpers
Expand Down Expand Up @@ -162,34 +156,27 @@ def _get_target_class():
def _make_one(self, *args, **kw):
return self._get_target_class()(*args, **kw)

def test_ctor_defaults(self):
from google.cloud._testing import _Monkey
from google.cloud import client

PROJECT = 'PROJECT'
CREDENTIALS = _make_credentials()
FUNC_CALLS = []

def mock_determine_proj(project):
FUNC_CALLS.append((project, '_determine_default_project'))
return PROJECT
def test_constructor_defaults(self):
credentials = _make_credentials()
patch1 = mock.patch(
'google.auth.default', return_value=(credentials, None))

def mock_get_credentials():
FUNC_CALLS.append('get_credentials')
return CREDENTIALS
project = 'prahj-ekt'
patch2 = mock.patch(
'google.cloud.client._determine_default_project',
return_value=project)

with _Monkey(client, get_credentials=mock_get_credentials,
_determine_default_project=mock_determine_proj):
client_obj = self._make_one()
with patch1 as default:
with patch2 as _determine_default_project:
client_obj = self._make_one()

self.assertEqual(client_obj.project, PROJECT)
self.assertIs(client_obj._credentials, CREDENTIALS)
self.assertEqual(client_obj.project, project)
self.assertIs(client_obj._credentials, credentials)
self.assertIsNone(client_obj._http_internal)
self.assertEqual(
FUNC_CALLS,
[(None, '_determine_default_project'), 'get_credentials'])
default.assert_called_once_with()
_determine_default_project.assert_called_once_with(None)

def test_ctor_missing_project(self):
def test_constructor_missing_project(self):
from google.cloud._testing import _Monkey
from google.cloud import client

Expand All @@ -204,7 +191,7 @@ def mock_determine_proj(project):

self.assertEqual(FUNC_CALLS, [(None, '_determine_default_project')])

def test_ctor_w_invalid_project(self):
def test_constructor_w_invalid_project(self):
CREDENTIALS = _make_credentials()
HTTP = object()
with self.assertRaises(ValueError):
Expand All @@ -227,11 +214,11 @@ def _explicit_ctor_helper(self, project):
self.assertIs(client_obj._credentials, CREDENTIALS)
self.assertIs(client_obj._http_internal, HTTP)

def test_ctor_explicit_bytes(self):
def test_constructor_explicit_bytes(self):
PROJECT = b'PROJECT'
self._explicit_ctor_helper(PROJECT)

def test_ctor_explicit_unicode(self):
def test_constructor_explicit_unicode(self):
PROJECT = u'PROJECT'
self._explicit_ctor_helper(PROJECT)

Expand Down
34 changes: 0 additions & 34 deletions core/tests/unit/test_credentials.py

This file was deleted.

15 changes: 11 additions & 4 deletions datastore/nox.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,17 @@ def unit_tests(session, python_version):
session.install('-e', '.')

# Run py.test against the unit tests.
session.run('py.test', '--quiet',
'--cov=google.cloud.datastore', '--cov=tests.unit', '--cov-append',
'--cov-config=.coveragerc', '--cov-report=', '--cov-fail-under=97',
'tests/unit',
session.run(
'py.test',
'--quiet',
'--cov=google.cloud.datastore',
'--cov=tests.unit',
'--cov-append',
'--cov-config=.coveragerc',
'--cov-report=',
'--cov-fail-under=97',
os.path.join('tests', 'unit'),
*session.posargs
)


Expand Down
18 changes: 7 additions & 11 deletions datastore/tests/unit/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,22 +148,16 @@ def test_constructor_w_implicit_inputs(self):

other = 'other'
creds = _make_credentials()
default_called = []

def fallback_mock(project):
default_called.append(project)
return project or other

klass = self._get_target_class()
patch1 = mock.patch(
'google.cloud.datastore.client._determine_default_project',
new=fallback_mock)
return_value=other)
patch2 = mock.patch(
'google.cloud.client.get_credentials',
return_value=creds)
'google.auth.default', return_value=(creds, None))

with patch1:
with patch2:
with patch1 as _determine_default_project:
with patch2 as default:
client = klass()

self.assertEqual(client.project, other)
Expand All @@ -174,7 +168,9 @@ def fallback_mock(project):

self.assertIsNone(client.current_batch)
self.assertIsNone(client.current_transaction)
self.assertEqual(default_called, [None])

default.assert_called_once_with()
_determine_default_project.assert_called_once_with(None)

def test_constructor_w_explicit_inputs(self):
from google.cloud.datastore.client import _DATASTORE_BASE_URL
Expand Down
23 changes: 8 additions & 15 deletions datastore/tests/unit/test_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -550,21 +550,14 @@ def _call_fut(self, iterator, entity_pb):
return _item_to_entity(iterator, entity_pb)

def test_it(self):
from google.cloud._testing import _Monkey
from google.cloud.datastore import helpers

result = object()
entities = []

def mocked(entity_pb):
entities.append(entity_pb)
return result

entity_pb = object()
with _Monkey(helpers, entity_from_protobuf=mocked):
self.assertIs(result, self._call_fut(None, entity_pb))

self.assertEqual(entities, [entity_pb])
entity_pb = mock.sentinel.entity_pb
patch = mock.patch(
'google.cloud.datastore.helpers.entity_from_protobuf')
with patch as entity_from_protobuf:
result = self._call_fut(None, entity_pb)
self.assertIs(result, entity_from_protobuf.return_value)

entity_from_protobuf.assert_called_once_with(entity_pb)


class Test__pb_from_query(unittest.TestCase):
Expand Down
Loading