Vehicle-Anti-Theft-Face-Rec.../venv/Lib/site-packages/gcloud/test_client.py

230 lines
7.6 KiB
Python

# Copyright 2015 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 unittest2
class Test_ClientFactoryMixin(unittest2.TestCase):
def _getTargetClass(self):
from gcloud.client import _ClientFactoryMixin
return _ClientFactoryMixin
def test_virtual(self):
klass = self._getTargetClass()
self.assertFalse('__init__' in klass.__dict__)
class TestClient(unittest2.TestCase):
def setUp(self):
KLASS = self._getTargetClass()
self.original_cnxn_class = KLASS._connection_class
KLASS._connection_class = _MockConnection
def tearDown(self):
KLASS = self._getTargetClass()
KLASS._connection_class = self.original_cnxn_class
def _getTargetClass(self):
from gcloud.client import Client
return Client
def _makeOne(self, *args, **kw):
return self._getTargetClass()(*args, **kw)
def test_ctor_defaults(self):
from gcloud._testing import _Monkey
from gcloud import client
CREDENTIALS = object()
FUNC_CALLS = []
def mock_get_credentials():
FUNC_CALLS.append('get_credentials')
return CREDENTIALS
with _Monkey(client, get_credentials=mock_get_credentials):
client_obj = self._makeOne()
self.assertTrue(isinstance(client_obj.connection, _MockConnection))
self.assertTrue(client_obj.connection.credentials is CREDENTIALS)
self.assertEqual(FUNC_CALLS, ['get_credentials'])
def test_ctor_explicit(self):
CREDENTIALS = object()
HTTP = object()
client_obj = self._makeOne(credentials=CREDENTIALS, http=HTTP)
self.assertTrue(isinstance(client_obj.connection, _MockConnection))
self.assertTrue(client_obj.connection.credentials is CREDENTIALS)
self.assertTrue(client_obj.connection.http is HTTP)
def test_from_service_account_json(self):
from gcloud._testing import _Monkey
from gcloud import client
KLASS = self._getTargetClass()
MOCK_FILENAME = 'foo.path'
mock_creds = _MockServiceAccountCredentials()
with _Monkey(client, ServiceAccountCredentials=mock_creds):
client_obj = KLASS.from_service_account_json(MOCK_FILENAME)
self.assertTrue(client_obj.connection.credentials is
mock_creds._result)
self.assertEqual(mock_creds.json_called, [MOCK_FILENAME])
def test_from_service_account_json_fail(self):
KLASS = self._getTargetClass()
CREDENTIALS = object()
self.assertRaises(TypeError, KLASS.from_service_account_json, None,
credentials=CREDENTIALS)
def test_from_service_account_p12(self):
from gcloud._testing import _Monkey
from gcloud import client
KLASS = self._getTargetClass()
CLIENT_EMAIL = 'phred@example.com'
MOCK_FILENAME = 'foo.path'
mock_creds = _MockServiceAccountCredentials()
with _Monkey(client, ServiceAccountCredentials=mock_creds):
client_obj = KLASS.from_service_account_p12(CLIENT_EMAIL,
MOCK_FILENAME)
self.assertTrue(client_obj.connection.credentials is
mock_creds._result)
self.assertEqual(mock_creds.p12_called,
[(CLIENT_EMAIL, MOCK_FILENAME)])
def test_from_service_account_p12_fail(self):
KLASS = self._getTargetClass()
CREDENTIALS = object()
self.assertRaises(TypeError, KLASS.from_service_account_p12, None,
None, credentials=CREDENTIALS)
class TestJSONClient(unittest2.TestCase):
def setUp(self):
KLASS = self._getTargetClass()
self.original_cnxn_class = KLASS._connection_class
KLASS._connection_class = _MockConnection
def tearDown(self):
KLASS = self._getTargetClass()
KLASS._connection_class = self.original_cnxn_class
def _getTargetClass(self):
from gcloud.client import JSONClient
return JSONClient
def _makeOne(self, *args, **kw):
return self._getTargetClass()(*args, **kw)
def test_ctor_defaults(self):
from gcloud._testing import _Monkey
from gcloud import client
PROJECT = 'PROJECT'
CREDENTIALS = object()
FUNC_CALLS = []
def mock_determine_proj(project):
FUNC_CALLS.append((project, '_determine_default_project'))
return PROJECT
def mock_get_credentials():
FUNC_CALLS.append('get_credentials')
return CREDENTIALS
with _Monkey(client, get_credentials=mock_get_credentials,
_determine_default_project=mock_determine_proj):
client_obj = self._makeOne()
self.assertEqual(client_obj.project, PROJECT)
self.assertTrue(isinstance(client_obj.connection, _MockConnection))
self.assertTrue(client_obj.connection.credentials is CREDENTIALS)
self.assertEqual(
FUNC_CALLS,
[(None, '_determine_default_project'), 'get_credentials'])
def test_ctor_missing_project(self):
from gcloud._testing import _Monkey
from gcloud import client
FUNC_CALLS = []
def mock_determine_proj(project):
FUNC_CALLS.append((project, '_determine_default_project'))
return None
with _Monkey(client, _determine_default_project=mock_determine_proj):
self.assertRaises(EnvironmentError, self._makeOne)
self.assertEqual(FUNC_CALLS, [(None, '_determine_default_project')])
def test_ctor_w_invalid_project(self):
CREDENTIALS = object()
HTTP = object()
with self.assertRaises(ValueError):
self._makeOne(project=object(), credentials=CREDENTIALS, http=HTTP)
def _explicit_ctor_helper(self, project):
import six
CREDENTIALS = object()
HTTP = object()
client_obj = self._makeOne(project=project, credentials=CREDENTIALS,
http=HTTP)
if isinstance(project, six.binary_type):
self.assertEqual(client_obj.project, project.decode('utf-8'))
else:
self.assertEqual(client_obj.project, project)
self.assertTrue(isinstance(client_obj.connection, _MockConnection))
self.assertTrue(client_obj.connection.credentials is CREDENTIALS)
self.assertTrue(client_obj.connection.http is HTTP)
def test_ctor_explicit_bytes(self):
PROJECT = b'PROJECT'
self._explicit_ctor_helper(PROJECT)
def test_ctor_explicit_unicode(self):
PROJECT = u'PROJECT'
self._explicit_ctor_helper(PROJECT)
class _MockConnection(object):
def __init__(self, credentials=None, http=None):
self.credentials = credentials
self.http = http
class _MockServiceAccountCredentials(object):
def __init__(self):
self.p12_called = []
self.json_called = []
self._result = object()
def from_p12_keyfile(self, email, path):
self.p12_called.append((email, path))
return self._result
def from_json_keyfile_name(self, path):
self.json_called.append(path)
return self._result