remove all references to the mock response classes and consolidate the rawmockhttp classes with the mockhttp classes
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/6c6cf413 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/6c6cf413 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/6c6cf413 Branch: refs/heads/trunk Commit: 6c6cf413b8d70dd25776f8eacaeadf5b733ee2e3 Parents: 8701590 Author: Anthony Shaw <anthonys...@apache.org> Authored: Tue Apr 11 11:48:26 2017 +1000 Committer: Anthony Shaw <anthonys...@apache.org> Committed: Tue Apr 11 11:48:26 2017 +1000 ---------------------------------------------------------------------- libcloud/test/__init__.py | 22 +++++++++++++++++--- .../test/compute/test_dimensiondata_v2_4.py | 12 +++-------- libcloud/test/compute/test_opennebula.py | 5 +++-- libcloud/test/storage/test_atmos.py | 14 ++++--------- libcloud/test/storage/test_azure_blobs.py | 20 +++++------------- libcloud/test/storage/test_backblaze_b2.py | 11 +++------- libcloud/test/storage/test_base.py | 8 +++---- libcloud/test/storage/test_cloudfiles.py | 13 ++---------- libcloud/test/storage/test_oss.py | 14 ++----------- libcloud/test/storage/test_s3.py | 14 +++---------- 10 files changed, 47 insertions(+), 86 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/__init__.py ---------------------------------------------------------------------- diff --git a/libcloud/test/__init__.py b/libcloud/test/__init__.py index f75991f..be75456 100644 --- a/libcloud/test/__init__.py +++ b/libcloud/test/__init__.py @@ -129,8 +129,8 @@ class MockHttp(LibcloudConnection): proxy_url = None - def request(self, method, url, body=None, headers=None, raw=False, stream=False): - # Find a method we can use for this request + def _get_request(self, method, url, body=None, headers=None, raw=False, stream=False): + # Find a method we can use for this request parsed = urlparse.urlparse(url) _, _, path, _, query, _ = parsed qs = parse_qs(query) @@ -145,7 +145,10 @@ class MockHttp(LibcloudConnection): self.test._add_visited_url(url=url) self.test._add_executed_mock_method(method_name=meth_name) - r_status, r_body, r_headers, r_reason = meth(method, url, body, headers) + return meth(method, url, body, headers) + + def request(self, method, url, body=None, headers=None, raw=False, stream=False): + r_status, r_body, r_headers, r_reason = self._get_request(method, url, body, headers) with requests_mock.mock() as m: m.register_uri(method, url, text=r_body, reason=r_reason, @@ -154,6 +157,17 @@ class MockHttp(LibcloudConnection): method=method, url=url, body=body, headers=headers, raw=raw, stream=stream) + def prepared_request(self, method, url, body=None, + headers=None, raw=False, stream=False): + r_status, r_body, r_headers, r_reason = self._get_request(method, url, body, headers) + + with requests_mock.mock() as m: + m.register_uri(method, url, text=r_body, reason=r_reason, + headers=r_headers, status_code=r_status) + super(MockHttp, self).prepared_request( + method=method, url=url, body=body, headers=headers, + raw=raw, stream=stream) + # Mock request/response example def _example(self, method, url, body, headers): """ @@ -228,6 +242,8 @@ class MockConnection(object): def __init__(self, action): self.action = action +StorageMockHttp = MockHttp + if __name__ == "__main__": import doctest http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/compute/test_dimensiondata_v2_4.py ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/test_dimensiondata_v2_4.py b/libcloud/test/compute/test_dimensiondata_v2_4.py index d746d05..6b30081 100644 --- a/libcloud/test/compute/test_dimensiondata_v2_4.py +++ b/libcloud/test/compute/test_dimensiondata_v2_4.py @@ -33,7 +33,7 @@ from libcloud.common.dimensiondata import TYPES_URN from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver as DimensionData from libcloud.compute.drivers.dimensiondata import DimensionDataNic from libcloud.compute.base import Node, NodeAuthPassword, NodeLocation -from libcloud.test import MockHttp, unittest, MockRawResponse, StorageMockHttp +from libcloud.test import MockHttp, unittest from libcloud.test.compute import TestCaseMixin from libcloud.test.file_fixtures import ComputeFileFixtures from libcloud.test.secrets import DIMENSIONDATA_PARAMS @@ -45,8 +45,6 @@ class DimensionData_v2_4_Tests(unittest.TestCase, TestCaseMixin): def setUp(self): DimensionData.connectionCls.active_api_version = '2.4' DimensionData.connectionCls.conn_class = DimensionDataMockHttp - DimensionData.connectionCls.rawResponseCls = \ - DimensionDataMockRawResponse DimensionDataMockHttp.type = None self.driver = DimensionData(*DIMENSIONDATA_PARAMS) @@ -2125,7 +2123,8 @@ class InvalidRequestError(Exception): super(InvalidRequestError, self).__init__("Invalid Request - %s" % tag) -class DimensionDataMockRawResponse(MockRawResponse): +class DimensionDataMockHttp(MockHttp): + fixtures = ComputeFileFixtures('dimensiondata') def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_report_usage(self, method, url, body, headers): @@ -2146,11 +2145,6 @@ class DimensionDataMockRawResponse(MockRawResponse): ) return (httplib.BAD_REQUEST, body, {}, httplib.responses[httplib.OK]) - -class DimensionDataMockHttp(StorageMockHttp, MockHttp): - - fixtures = ComputeFileFixtures('dimensiondata') - def _oec_0_9_myaccount_UNAUTHORIZED(self, method, url, body, headers): return (httplib.UNAUTHORIZED, "", {}, httplib.responses[httplib.UNAUTHORIZED]) http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/compute/test_opennebula.py ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/test_opennebula.py b/libcloud/test/compute/test_opennebula.py index 345a2cf..049ec48 100644 --- a/libcloud/test/compute/test_opennebula.py +++ b/libcloud/test/compute/test_opennebula.py @@ -36,7 +36,8 @@ from libcloud.compute.drivers.opennebula import ACTION from libcloud.test.file_fixtures import ComputeFileFixtures from libcloud.common.types import InvalidCredsError -from libcloud.test import MockResponse, MockHttp +from libcloud.common.base import Response +from libcloud.test import MockHttp from libcloud.test.compute import TestCaseMixin from libcloud.test.secrets import OPENNEBULA_PARAMS @@ -52,7 +53,7 @@ class OpenNebula_ResponseTests(unittest.TestCase): XML = """<?xml version="1.0" encoding="UTF-8"?><root/>""" def test_unauthorized_response(self): - http_response = MockResponse(httplib.UNAUTHORIZED, + http_response = Response(httplib.UNAUTHORIZED, OpenNebula_ResponseTests.XML, headers={'content-type': 'application/xml'}) http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/storage/test_atmos.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_atmos.py b/libcloud/test/storage/test_atmos.py index 7f6baf2..28ba7ba 100644 --- a/libcloud/test/storage/test_atmos.py +++ b/libcloud/test/storage/test_atmos.py @@ -33,7 +33,7 @@ from libcloud.storage.types import ContainerAlreadyExistsError, \ from libcloud.storage.drivers.atmos import AtmosConnection, AtmosDriver from libcloud.storage.drivers.dummy import DummyIterator -from libcloud.test import StorageMockHttp, MockRawResponse, MockResponse +from libcloud.test import MockHttp from libcloud.test.file_fixtures import StorageFileFixtures @@ -41,11 +41,9 @@ class AtmosTests(unittest.TestCase): def setUp(self): AtmosDriver.connectionCls.conn_class = AtmosMockHttp - AtmosDriver.connectionCls.rawResponseCls = AtmosMockRawResponse AtmosDriver.path = '' AtmosMockHttp.type = None AtmosMockHttp.upload_created = False - AtmosMockRawResponse.type = None self.driver = AtmosDriver('dummy', base64.b64encode(b('dummy'))) self._remove_test_file() @@ -247,7 +245,7 @@ class AtmosTests(unittest.TestCase): self.assertTrue(result) def test_download_object_success_not_found(self): - AtmosMockRawResponse.type = 'NOT_FOUND' + AtmosMockHttp.type = 'NOT_FOUND' container = Container(name='foo_bar_container', extra={}, driver=self.driver) @@ -475,7 +473,7 @@ class AtmosTests(unittest.TestCase): b(expected).decode('utf-8')) -class AtmosMockHttp(StorageMockHttp, unittest.TestCase): +class AtmosMockHttp(MockHttp, unittest.TestCase): fixtures = StorageFileFixtures('atmos') upload_created = False upload_stream_created = False @@ -484,7 +482,7 @@ class AtmosMockHttp(StorageMockHttp, unittest.TestCase): unittest.TestCase.__init__(self) if kwargs.get('host', None) and kwargs.get('port', None): - StorageMockHttp.__init__(self, *args, **kwargs) + MockHttp.__init__(self, *args, **kwargs) self._upload_object_via_stream_first_request = True @@ -750,10 +748,6 @@ class AtmosMockHttp(StorageMockHttp, unittest.TestCase): def _rest_namespace_fbc_ftu(self, method, url, body, headers): return (httplib.CREATED, '', {}, httplib.responses[httplib.CREATED]) - -class AtmosMockRawResponse(MockRawResponse): - fixtures = StorageFileFixtures('atmos') - def _rest_namespace_foo_bar_container_foo_bar_object(self, method, url, body, headers): body = self._generate_random_data(1000) http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/storage/test_azure_blobs.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_azure_blobs.py b/libcloud/test/storage/test_azure_blobs.py index 5eefbaa..58ccda8 100644 --- a/libcloud/test/storage/test_azure_blobs.py +++ b/libcloud/test/storage/test_azure_blobs.py @@ -39,13 +39,12 @@ from libcloud.storage.drivers.azure_blobs import AzureBlobsStorageDriver from libcloud.storage.drivers.azure_blobs import AZURE_BLOCK_MAX_SIZE from libcloud.storage.drivers.azure_blobs import AZURE_PAGE_CHUNK_SIZE -from libcloud.test import StorageMockHttp, MockRawResponse # pylint: disable-msg=E0611 -from libcloud.test import MockHttpTestCase # pylint: disable-msg=E0611 +from libcloud.test import MockHttp # pylint: disable-msg=E0611 from libcloud.test.file_fixtures import StorageFileFixtures # pylint: disable-msg=E0611 from libcloud.test.secrets import STORAGE_AZURE_BLOBS_PARAMS -class AzureBlobsMockHttp(StorageMockHttp, MockHttpTestCase): +class AzureBlobsMockHttp(MockHttp): fixtures = StorageFileFixtures('azure_blobs') base_headers = {} @@ -317,11 +316,6 @@ class AzureBlobsMockHttp(StorageMockHttp, MockHttpTestCase): headers, httplib.responses[httplib.CREATED]) - -class AzureBlobsMockRawResponse(MockRawResponse): - - fixtures = StorageFileFixtures('azure_blobs') - def _foo_bar_container_foo_test_upload_INVALID_HASH(self, method, url, body, headers): body = '' @@ -368,7 +362,6 @@ class AzureBlobsTests(unittest.TestCase): driver_type = AzureBlobsStorageDriver driver_args = STORAGE_AZURE_BLOBS_PARAMS mock_response_klass = AzureBlobsMockHttp - mock_raw_response_klass = AzureBlobsMockRawResponse @classmethod def create_driver(self): @@ -376,10 +369,7 @@ class AzureBlobsTests(unittest.TestCase): def setUp(self): self.driver_type.connectionCls.conn_class = self.mock_response_klass - self.driver_type.connectionCls.rawResponseCls = \ - self.mock_raw_response_klass self.mock_response_klass.type = None - self.mock_raw_response_klass.type = None self.driver = self.create_driver() def tearDown(self): @@ -586,7 +576,7 @@ class AzureBlobsTests(unittest.TestCase): self.assertTrue(result) def test_download_object_invalid_file_size(self): - self.mock_raw_response_klass.type = 'INVALID_SIZE' + self.mock_response_klass.type = 'INVALID_SIZE' container = Container(name='foo_bar_container', extra={}, driver=self.driver) obj = Object(name='foo_bar_object', size=1000, hash=None, extra={}, @@ -600,7 +590,7 @@ class AzureBlobsTests(unittest.TestCase): self.assertFalse(result) def test_download_object_invalid_file_already_exists(self): - self.mock_raw_response_klass.type = 'INVALID_SIZE' + self.mock_response_klass.type = 'INVALID_SIZE' container = Container(name='foo_bar_container', extra={}, driver=self.driver) obj = Object(name='foo_bar_object', size=1000, hash=None, extra={}, @@ -649,7 +639,7 @@ class AzureBlobsTests(unittest.TestCase): def test_upload_object_invalid_md5(self): # Invalid md5 is returned by azure - self.mock_raw_response_klass.type = 'INVALID_HASH' + self.mock_response_klass.type = 'INVALID_HASH' container = Container(name='foo_bar_container', extra={}, driver=self.driver) http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/storage/test_backblaze_b2.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_backblaze_b2.py b/libcloud/test/storage/test_backblaze_b2.py index c537762..074bd67 100644 --- a/libcloud/test/storage/test_backblaze_b2.py +++ b/libcloud/test/storage/test_backblaze_b2.py @@ -22,8 +22,7 @@ import mock from libcloud.storage.drivers.backblaze_b2 import BackblazeB2StorageDriver from libcloud.utils.py3 import httplib from libcloud.test import unittest -from libcloud.test import StorageMockHttp -from libcloud.test import MockRawResponse +from libcloud.test import MockHttp from libcloud.test import MockHttpTestCase from libcloud.test.file_fixtures import StorageFileFixtures @@ -40,10 +39,8 @@ class BackblazeB2StorageDriverTestCase(unittest.TestCase): self.driver_klass.connectionCls.authCls = MockAuthConn() self.driver_klass.connectionCls.conn_class = \ BackblazeB2MockHttp - self.driver_klass.connectionCls.rawResponseCls = \ - BackblazeB2MockRawResponse + BackblazeB2MockHttp.type = None - BackblazeB2MockRawResponse.type = None self.driver = self.driver_klass(*self.driver_args) def test_list_containers(self): @@ -156,7 +153,7 @@ class BackblazeB2StorageDriverTestCase(unittest.TestCase): self.assertEqual(url, 'https://podxxx.backblaze.com/b2api/v1/b2_upload_file/abcd/defg') -class BackblazeB2MockHttp(StorageMockHttp, MockHttpTestCase): +class BackblazeB2MockHttp(MockHttp): fixtures = StorageFileFixtures('backblaze_b2') def _b2api_v1_b2_list_buckets(self, method, url, body, headers): @@ -232,8 +229,6 @@ class BackblazeB2MockHttp(StorageMockHttp, MockHttpTestCase): raise AssertionError('Unsupported method') return (httplib.OK, body, {}, httplib.responses[httplib.OK]) - -class BackblazeB2MockRawResponse(MockRawResponse): def _file_test00001_2_txt(self, method, url, body, headers): # test_download_object if method == 'GET': http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/storage/test_base.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_base.py b/libcloud/test/storage/test_base.py index 66f0ae1..127eda1 100644 --- a/libcloud/test/storage/test_base.py +++ b/libcloud/test/storage/test_base.py @@ -27,11 +27,10 @@ from libcloud.storage.base import StorageDriver from libcloud.storage.base import DEFAULT_CONTENT_TYPE from libcloud.test import unittest -from libcloud.test import StorageMockHttp -from libcloud.test import MockRawResponse +from libcloud.test import MockHttp -class BaseMockRawResponse(MockRawResponse): +class BaseMockRawResponse(MockHttp): def _(self, method, url, body, headers): body = 'ab' return (httplib.OK, body, {}, httplib.responses[httplib.OK]) @@ -41,8 +40,7 @@ class BaseStorageTests(unittest.TestCase): def setUp(self): self.send_called = 0 - StorageDriver.connectionCls.conn_class = StorageMockHttp - StorageDriver.connectionCls.rawResponseCls = BaseMockRawResponse + StorageDriver.connectionCls.conn_class = BaseMockRawResponse self.driver1 = StorageDriver('username', 'key', host='localhost') self.driver1.supports_chunked_encoding = True http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/storage/test_cloudfiles.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_cloudfiles.py b/libcloud/test/storage/test_cloudfiles.py index 80fd697..e42540a 100644 --- a/libcloud/test/storage/test_cloudfiles.py +++ b/libcloud/test/storage/test_cloudfiles.py @@ -39,7 +39,7 @@ from libcloud.storage.types import ObjectHashMismatchError from libcloud.storage.types import InvalidContainerNameError from libcloud.storage.drivers.cloudfiles import CloudFilesStorageDriver -from libcloud.test import StorageMockHttp, MockRawResponse, MockResponse # pylint: disable-msg=E0611 +from libcloud.test import MockHttp # pylint: disable-msg=E0611 from libcloud.test import MockHttpTestCase # pylint: disable-msg=E0611 from libcloud.test import unittest from libcloud.test.file_fixtures import StorageFileFixtures # pylint: disable-msg=E0611 @@ -53,10 +53,7 @@ class CloudFilesTests(unittest.TestCase): def setUp(self): self.driver_klass.connectionCls.conn_class = CloudFilesMockHttp - self.driver_klass.connectionCls.rawResponseCls = \ - CloudFilesMockRawResponse CloudFilesMockHttp.type = None - CloudFilesMockRawResponse.type = None driver_kwargs = self.driver_kwargs.copy() driver_kwargs['region'] = self.region @@ -888,7 +885,7 @@ class CloudFilesDeprecatedUKTests(CloudFilesTests): region = 'lon' -class CloudFilesMockHttp(StorageMockHttp, MockHttpTestCase): +class CloudFilesMockHttp(MockHttp): fixtures = StorageFileFixtures('cloudfiles') base_headers = {'content-type': 'application/json; charset=UTF-8'} @@ -1148,12 +1145,6 @@ class CloudFilesMockHttp(StorageMockHttp, MockHttpTestCase): return (status_code, body, headers, httplib.responses[httplib.OK]) - -class CloudFilesMockRawResponse(MockRawResponse): - - fixtures = StorageFileFixtures('cloudfiles') - base_headers = {'content-type': 'application/json; charset=UTF-8'} - def _v1_MossoCloudFS_py3_img_or_vid(self, method, url, body, headers): headers = {'etag': 'e2378cace8712661ce7beec3d9362ef6'} headers.update(self.base_headers) http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/storage/test_oss.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_oss.py b/libcloud/test/storage/test_oss.py index 304b809..d2fbe13 100644 --- a/libcloud/test/storage/test_oss.py +++ b/libcloud/test/storage/test_oss.py @@ -47,7 +47,7 @@ from libcloud.storage.drivers.oss import OSSConnection from libcloud.storage.drivers.oss import OSSStorageDriver from libcloud.storage.drivers.oss import CHUNK_SIZE from libcloud.storage.drivers.dummy import DummyIterator -from libcloud.test import StorageMockHttp, MockRawResponse, MockResponse # pylint: disable-msg=E0611 +from libcloud.test import MockHttp # pylint: disable-msg=E0611 from libcloud.test import MockHttpTestCase # pylint: disable-msg=E0611 from libcloud.test.file_fixtures import StorageFileFixtures # pylint: disable-msg=E0611 from libcloud.test.secrets import STORAGE_OSS_PARAMS @@ -85,7 +85,7 @@ class ObjectTestCase(unittest.TestCase): self.assertTrue(obj.__repr__() is not None) -class OSSMockHttp(StorageMockHttp, MockHttpTestCase): +class OSSMockHttp(MockHttp): fixtures = StorageFileFixtures('oss') base_headers = {} @@ -309,11 +309,6 @@ class OSSMockHttp(StorageMockHttp, MockHttpTestCase): headers, httplib.responses[httplib.OK]) - -class OSSMockRawResponse(MockRawResponse, MockHttpTestCase): - - fixtures = StorageFileFixtures('oss') - def parse_body(self): if len(self.body) == 0 and not self.parse_zero_length_body: return self.body @@ -412,7 +407,6 @@ class OSSStorageDriverTestCase(unittest.TestCase): driver_type = OSSStorageDriver driver_args = STORAGE_OSS_PARAMS mock_response_klass = OSSMockHttp - mock_raw_response_klass = OSSMockRawResponse @classmethod def create_driver(self): @@ -420,12 +414,8 @@ class OSSStorageDriverTestCase(unittest.TestCase): def setUp(self): self.driver_type.connectionCls.conn_class = self.mock_response_klass - self.driver_type.connectionCls.rawResponseCls = \ - self.mock_raw_response_klass self.mock_response_klass.type = None self.mock_response_klass.test = self - self.mock_raw_response_klass.type = None - self.mock_raw_response_klass.test = self self.driver = self.create_driver() def tearDown(self): http://git-wip-us.apache.org/repos/asf/libcloud/blob/6c6cf413/libcloud/test/storage/test_s3.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_s3.py b/libcloud/test/storage/test_s3.py index d2de5d5..44ee4a6 100644 --- a/libcloud/test/storage/test_s3.py +++ b/libcloud/test/storage/test_s3.py @@ -48,14 +48,14 @@ from libcloud.storage.drivers.s3 import S3APNEStorageDriver from libcloud.storage.drivers.s3 import CHUNK_SIZE from libcloud.utils.py3 import b -from libcloud.test import StorageMockHttp, MockRawResponse, MockResponse # pylint: disable-msg=E0611 +from libcloud.test import MockHttp # pylint: disable-msg=E0611 from libcloud.test import MockHttpTestCase # pylint: disable-msg=E0611 from libcloud.test import unittest from libcloud.test.file_fixtures import StorageFileFixtures # pylint: disable-msg=E0611 from libcloud.test.secrets import STORAGE_S3_PARAMS -class S3MockHttp(StorageMockHttp, MockHttpTestCase): +class S3MockHttp(MockHttp): fixtures = StorageFileFixtures('s3') base_headers = {} @@ -303,11 +303,6 @@ class S3MockHttp(StorageMockHttp, MockHttpTestCase): headers, httplib.responses[httplib.NO_CONTENT]) - -class S3MockRawResponse(MockRawResponse): - - fixtures = StorageFileFixtures('s3') - def parse_body(self): if len(self.body) == 0 and not self.parse_zero_length_body: return self.body @@ -386,7 +381,6 @@ class S3Tests(unittest.TestCase): driver_type = S3StorageDriver driver_args = STORAGE_S3_PARAMS mock_response_klass = S3MockHttp - mock_raw_response_klass = S3MockRawResponse @classmethod def create_driver(self): @@ -394,10 +388,8 @@ class S3Tests(unittest.TestCase): def setUp(self): self.driver_type.connectionCls.conn_class = self.mock_response_klass - self.driver_type.connectionCls.rawResponseCls = \ - self.mock_raw_response_klass + self.mock_response_klass.type = None - self.mock_raw_response_klass.type = None self.driver = self.create_driver() def tearDown(self):