diff --git a/novaclient/tests/fixture_data/agents.py b/novaclient/tests/fixture_data/agents.py index a21f473de..f1c2aed01 100644 --- a/novaclient/tests/fixture_data/agents.py +++ b/novaclient/tests/fixture_data/agents.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -35,9 +32,9 @@ class Fixture(base.Fixture): } } - httpretty.register_uri(httpretty.POST, self.url(), - body=jsonutils.dumps(post_os_agents), - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=post_os_agents, + headers=self.json_headers) put_os_agents_1 = { "agent": { @@ -48,10 +45,10 @@ class Fixture(base.Fixture): } } - httpretty.register_uri(httpretty.PUT, self.url(1), - body=jsonutils.dumps(put_os_agents_1), - content_type='application/json') + self.requests.register_uri('PUT', self.url(1), + json=put_os_agents_1, + headers=self.json_headers) - httpretty.register_uri(httpretty.DELETE, self.url(1), - content_type='application/json', - status=202) + self.requests.register_uri('DELETE', self.url(1), + headers=self.json_headers, + status_code=202) diff --git a/novaclient/tests/fixture_data/aggregates.py b/novaclient/tests/fixture_data/aggregates.py index 33e30905f..26f00d7ac 100644 --- a/novaclient/tests/fixture_data/aggregates.py +++ b/novaclient/tests/fixture_data/aggregates.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -32,21 +29,24 @@ class Fixture(base.Fixture): 'availability_zone': 'nova1'}, ]} - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_aggregates), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_os_aggregates, + headers=self.json_headers) - r = jsonutils.dumps({'aggregate': get_os_aggregates['aggregates'][0]}) + get_aggregates_1 = {'aggregate': get_os_aggregates['aggregates'][0]} - httpretty.register_uri(httpretty.POST, self.url(), body=r, - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=get_aggregates_1, + headers=self.json_headers) for agg_id in (1, 2): - for method in (httpretty.GET, httpretty.PUT): - httpretty.register_uri(method, self.url(agg_id), body=r, - content_type='application/json') + for method in ('GET', 'PUT'): + self.requests.register_uri(method, self.url(agg_id), + json=get_aggregates_1, + headers=self.json_headers) - httpretty.register_uri(httpretty.POST, self.url(agg_id, 'action'), - body=r, content_type='application/json') + self.requests.register_uri('POST', self.url(agg_id, 'action'), + json=get_aggregates_1, + headers=self.json_headers) - httpretty.register_uri(httpretty.DELETE, self.url(1), status=202) + self.requests.register_uri('DELETE', self.url(1), status_code=202) diff --git a/novaclient/tests/fixture_data/availability_zones.py b/novaclient/tests/fixture_data/availability_zones.py index c23788f51..451a64b2a 100644 --- a/novaclient/tests/fixture_data/availability_zones.py +++ b/novaclient/tests/fixture_data/availability_zones.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -41,9 +38,10 @@ class V1(base.Fixture): } ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_availability_zone), - content_type='application/json') + + self.requests.register_uri('GET', self.url(), + json=get_os_availability_zone, + headers=self.json_headers) get_os_zone_detail = { self.zone_info_key: [ @@ -88,9 +86,9 @@ class V1(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url('detail'), - body=jsonutils.dumps(get_os_zone_detail), - content_type='application/json') + self.requests.register_uri('GET', self.url('detail'), + json=get_os_zone_detail, + headers=self.json_headers) class V3(V1): diff --git a/novaclient/tests/fixture_data/base.py b/novaclient/tests/fixture_data/base.py index 72f46d1dd..6a2e238b5 100644 --- a/novaclient/tests/fixture_data/base.py +++ b/novaclient/tests/fixture_data/base.py @@ -19,9 +19,11 @@ COMPUTE_URL = 'http://compute.host' class Fixture(fixtures.Fixture): base_url = None + json_headers = {'Content-Type': 'application/json'} - def __init__(self, compute_url=COMPUTE_URL): + def __init__(self, requests, compute_url=COMPUTE_URL): super(Fixture, self).__init__() + self.requests = requests self.compute_url = compute_url def url(self, *args, **kwargs): diff --git a/novaclient/tests/fixture_data/certs.py b/novaclient/tests/fixture_data/certs.py index 3ce0f0f07..40421ca1b 100644 --- a/novaclient/tests/fixture_data/certs.py +++ b/novaclient/tests/fixture_data/certs.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -43,9 +40,9 @@ class Fixture(base.Fixture): 'data': 'foo' } } - httpretty.register_uri(httpretty.GET, self.url('root'), - body=jsonutils.dumps(get_os_certificate), - content_type='application/json') + self.requests.register_uri('GET', self.url('root'), + json=get_os_certificate, + headers=self.json_headers) post_os_certificates = { 'certificate': { @@ -53,6 +50,6 @@ class Fixture(base.Fixture): 'data': 'bar' } } - httpretty.register_uri(httpretty.POST, self.url(), - body=jsonutils.dumps(post_os_certificates), - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=post_os_certificates, + headers=self.json_headers) diff --git a/novaclient/tests/fixture_data/client.py b/novaclient/tests/fixture_data/client.py index c4ca3ec38..91aa47f21 100644 --- a/novaclient/tests/fixture_data/client.py +++ b/novaclient/tests/fixture_data/client.py @@ -11,11 +11,9 @@ # under the License. import fixtures -import httpretty from keystoneclient.auth.identity import v2 from keystoneclient import session -from novaclient.openstack.common import jsonutils from novaclient.v1_1 import client as v1_1client from novaclient.v3 import client as v3client @@ -25,11 +23,13 @@ COMPUTE_URL = 'http://compute.host' class V1(fixtures.Fixture): - def __init__(self, compute_url=COMPUTE_URL, identity_url=IDENTITY_URL): + def __init__(self, requests, + compute_url=COMPUTE_URL, identity_url=IDENTITY_URL): super(V1, self).__init__() self.identity_url = identity_url self.compute_url = compute_url self.client = None + self.requests = requests self.token = { 'access': { @@ -86,13 +86,12 @@ class V1(fixtures.Fixture): def setUp(self): super(V1, self).setUp() - httpretty.enable() - self.addCleanup(httpretty.disable) auth_url = '%s/tokens' % self.identity_url - httpretty.register_uri(httpretty.POST, auth_url, - body=jsonutils.dumps(self.token), - content_type='application/json') + headers = {'X-Content-Type': 'application/json'} + self.requests.register_uri('POST', auth_url, + json=self.token, + headers=headers) self.client = self.new_client() def new_client(self): diff --git a/novaclient/tests/fixture_data/cloudpipe.py b/novaclient/tests/fixture_data/cloudpipe.py index fffd2a1fe..32b5c210c 100644 --- a/novaclient/tests/fixture_data/cloudpipe.py +++ b/novaclient/tests/fixture_data/cloudpipe.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -24,17 +21,17 @@ class Fixture(base.Fixture): super(Fixture, self).setUp() get_os_cloudpipe = {'cloudpipes': [{'project_id': 1}]} - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_cloudpipe), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_os_cloudpipe, + headers=self.json_headers) instance_id = '9d5824aa-20e6-4b9f-b967-76a699fc51fd' post_os_cloudpipe = {'instance_id': instance_id} - httpretty.register_uri(httpretty.POST, self.url(), - body=jsonutils.dumps(post_os_cloudpipe), - content_type='application/json', - status=202) + self.requests.register_uri('POST', self.url(), + json=post_os_cloudpipe, + headers=self.json_headers, + status_code=202) - httpretty.register_uri(httpretty.PUT, self.url('configure-project'), - content_type='application/json', - status=202) + self.requests.register_uri('PUT', self.url('configure-project'), + headers=self.json_headers, + status_code=202) diff --git a/novaclient/tests/fixture_data/fixedips.py b/novaclient/tests/fixture_data/fixedips.py index 64a36d213..71f18a4e6 100644 --- a/novaclient/tests/fixture_data/fixedips.py +++ b/novaclient/tests/fixture_data/fixedips.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -31,11 +28,12 @@ class Fixture(base.Fixture): 'host': 'bar' } } - httpretty.register_uri(httpretty.GET, self.url('192.168.1.1'), - body=jsonutils.dumps(get_os_fixed_ips), - content_type='application/json') - httpretty.register_uri(httpretty.POST, - self.url('192.168.1.1', 'action'), - content_type='application/json', - status=202) + self.requests.register_uri('GET', self.url('192.168.1.1'), + json=get_os_fixed_ips, + headers=self.json_headers) + + self.requests.register_uri('POST', + self.url('192.168.1.1', 'action'), + headers=self.json_headers, + status_code=202) diff --git a/novaclient/tests/fixture_data/floatingips.py b/novaclient/tests/fixture_data/floatingips.py index 8dd590427..d2c1b8016 100644 --- a/novaclient/tests/fixture_data/floatingips.py +++ b/novaclient/tests/fixture_data/floatingips.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests import fakes from novaclient.tests.fixture_data import base @@ -28,29 +26,28 @@ class FloatingFixture(base.Fixture): {'id': 2, 'fixed_ip': '10.0.0.2', 'ip': '11.0.0.2'}] get_os_floating_ips = {'floating_ips': floating_ips} - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_floating_ips), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_os_floating_ips, + headers=self.json_headers) for ip in floating_ips: get_os_floating_ip = {'floating_ip': ip} - httpretty.register_uri(httpretty.GET, self.url(ip['id']), - body=jsonutils.dumps(get_os_floating_ip), - content_type='application/json') + self.requests.register_uri('GET', self.url(ip['id']), + json=get_os_floating_ip, + headers=self.json_headers) - httpretty.register_uri(httpretty.DELETE, self.url(ip['id']), - content_type='application/json', - status=204) + self.requests.register_uri('DELETE', self.url(ip['id']), + headers=self.json_headers, + status_code=204) - def post_os_floating_ips(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_os_floating_ips(request, context): + body = jsonutils.loads(request.body) ip = floating_ips[0].copy() ip['pool'] = body.get('pool') - ip = jsonutils.dumps({'floating_ip': ip}) - return 200, headers, ip - httpretty.register_uri(httpretty.POST, self.url(), - body=post_os_floating_ips, - content_type='application/json') + return {'floating_ip': ip} + self.requests.register_uri('POST', self.url(), + json=post_os_floating_ips, + headers=self.json_headers) class DNSFixture(base.Fixture): @@ -66,10 +63,10 @@ class DNSFixture(base.Fixture): {'domain': 'example.com'} ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_floating_ip_dns), - content_type='application/json', - status=205) + self.requests.register_uri('GET', self.url(), + json=get_os_floating_ip_dns, + headers=self.json_headers, + status_code=205) get_dns_testdomain_entries_testname = { 'dns_entry': { @@ -80,31 +77,30 @@ class DNSFixture(base.Fixture): } } url = self.url('testdomain', 'entries', 'testname') - body = jsonutils.dumps(get_dns_testdomain_entries_testname) - httpretty.register_uri(httpretty.GET, url, - body=body, - content_type='application/json', - status=205) + self.requests.register_uri('GET', url, + json=get_dns_testdomain_entries_testname, + headers=self.json_headers, + status_code=205) - httpretty.register_uri(httpretty.DELETE, self.url('testdomain'), - status=200) + self.requests.register_uri('DELETE', self.url('testdomain')) url = self.url('testdomain', 'entries', 'testname') - httpretty.register_uri(httpretty.DELETE, url, status=200) + self.requests.register_uri('DELETE', url) - def put_dns_testdomain_entries_testname(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def put_dns_testdomain_entries_testname(request, context): + body = jsonutils.loads(request.body) fakes.assert_has_keys(body['dns_entry'], required=['ip', 'dns_type']) - return 205, headers, request.body - httpretty.register_uri(httpretty.PUT, url, - body=put_dns_testdomain_entries_testname, - content_type='application/json') + context.status_code = 205 + return request.body + self.requests.register_uri('PUT', url, + body=put_dns_testdomain_entries_testname, + headers=self.json_headers) url = self.url('testdomain', 'entries') - httpretty.register_uri(httpretty.GET, url, status=404) + self.requests.register_uri('GET', url, status_code=404) - get_os_floating_ip_dns_testdomain_entries = { + get_os_floating_ip_dns_testdomain = { 'dns_entries': [ { 'dns_entry': { @@ -124,14 +120,13 @@ class DNSFixture(base.Fixture): }, ] } - body = jsonutils.dumps(get_os_floating_ip_dns_testdomain_entries) - httpretty.register_uri(httpretty.GET, url + '?ip=1.2.3.4', - body=body, - status=205, - content_type='application/json') + self.requests.register_uri('GET', url + '?ip=1.2.3.4', + json=get_os_floating_ip_dns_testdomain, + status_code=205, + headers=self.json_headers) - def put_os_floating_ip_dns_testdomain(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def put_os_floating_ip_dns_testdomain(request, context): + body = jsonutils.loads(request.body) if body['domain_entry']['scope'] == 'private': fakes.assert_has_keys(body['domain_entry'], required=['availability_zone', 'scope']) @@ -142,11 +137,12 @@ class DNSFixture(base.Fixture): fakes.assert_has_keys(body['domain_entry'], required=['project', 'scope']) - headers['Content-Type'] = 'application/json' - return (205, headers, request.body) + return request.body - httpretty.register_uri(httpretty.PUT, self.url('testdomain'), - body=put_os_floating_ip_dns_testdomain) + self.requests.register_uri('PUT', self.url('testdomain'), + body=put_os_floating_ip_dns_testdomain, + status_code=205, + headers=self.json_headers) class BulkFixture(base.Fixture): @@ -162,40 +158,38 @@ class BulkFixture(base.Fixture): {'id': 2, 'fixed_ip': '10.0.0.2', 'ip': '11.0.0.2'}, ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_floating_ips_bulk), - content_type='application/json') - httpretty.register_uri(httpretty.GET, self.url('testHost'), - body=jsonutils.dumps(get_os_floating_ips_bulk), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_os_floating_ips_bulk, + headers=self.json_headers) + self.requests.register_uri('GET', self.url('testHost'), + json=get_os_floating_ips_bulk, + headers=self.json_headers) - def put_os_floating_ips_bulk_delete(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def put_os_floating_ips_bulk_delete(request, context): + body = jsonutils.loads(request.body) ip_range = body.get('ip_range') - data = {'floating_ips_bulk_delete': ip_range} - return 200, headers, jsonutils.dumps(data) + return {'floating_ips_bulk_delete': ip_range} - httpretty.register_uri(httpretty.PUT, self.url('delete'), - body=put_os_floating_ips_bulk_delete, - content_type='application/json') + self.requests.register_uri('PUT', self.url('delete'), + json=put_os_floating_ips_bulk_delete, + headers=self.json_headers) - def post_os_floating_ips_bulk(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_os_floating_ips_bulk(request, context): + body = jsonutils.loads(request.body) params = body.get('floating_ips_bulk_create') pool = params.get('pool', 'defaultPool') interface = params.get('interface', 'defaultInterface') - data = { + return { 'floating_ips_bulk_create': { 'ip_range': '192.168.1.0/30', 'pool': pool, 'interface': interface } } - return 200, headers, jsonutils.dumps(data) - httpretty.register_uri(httpretty.POST, self.url(), - body=post_os_floating_ips_bulk, - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=post_os_floating_ips_bulk, + headers=self.json_headers) class PoolsFixture(base.Fixture): @@ -211,6 +205,6 @@ class PoolsFixture(base.Fixture): {'name': 'bar'} ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_floating_ip_pools), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_os_floating_ip_pools, + headers=self.json_headers) diff --git a/novaclient/tests/fixture_data/fping.py b/novaclient/tests/fixture_data/fping.py index 9542f83d4..837db6daa 100644 --- a/novaclient/tests/fixture_data/fping.py +++ b/novaclient/tests/fixture_data/fping.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -30,9 +27,9 @@ class Fixture(base.Fixture): "alive": True, } } - httpretty.register_uri(httpretty.GET, self.url(1), - body=jsonutils.dumps(get_os_fping_1), - content_type='application/json') + self.requests.register_uri('GET', self.url(1), + json=get_os_fping_1, + headers=self.json_headers) get_os_fping = { 'servers': [ @@ -44,6 +41,6 @@ class Fixture(base.Fixture): }, ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_fping), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_os_fping, + headers=self.json_headers) diff --git a/novaclient/tests/fixture_data/hosts.py b/novaclient/tests/fixture_data/hosts.py index 193a5bb67..6ac217cb0 100644 --- a/novaclient/tests/fixture_data/hosts.py +++ b/novaclient/tests/fixture_data/hosts.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty from six.moves.urllib import parse from novaclient.openstack.common import jsonutils @@ -36,12 +35,15 @@ class BaseFixture(base.Fixture): 'cpu': 1, 'memory_mb': 2048, 'disk_gb': 30}} ] } - httpretty.register_uri(httpretty.GET, self.url('host'), - body=jsonutils.dumps(get_os_hosts_host), - content_type='application/json') - def get_os_hosts(request, url, headers): - host, query = parse.splitquery(url) + headers = {'Content-Type': 'application/json'} + + self.requests.register_uri('GET', self.url('host'), + json=get_os_hosts_host, + headers=headers) + + def get_os_hosts(request, context): + host, query = parse.splitquery(request.url) zone = 'nova1' if query: @@ -51,7 +53,7 @@ class BaseFixture(base.Fixture): except Exception: pass - data = { + return { 'hosts': [ { 'host': 'host1', @@ -65,56 +67,52 @@ class BaseFixture(base.Fixture): } ] } - return 200, headers, jsonutils.dumps(data) - httpretty.register_uri(httpretty.GET, self.url(), - body=get_os_hosts, - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_os_hosts, + headers=headers) get_os_hosts_sample_host = { 'host': [ {'resource': {'host': 'sample_host'}} ], } - httpretty.register_uri(httpretty.GET, self.url('sample_host'), - body=jsonutils.dumps(get_os_hosts_sample_host), - content_type='application/json') + self.requests.register_uri('GET', self.url('sample_host'), + json=get_os_hosts_sample_host, + headers=headers) - httpretty.register_uri(httpretty.PUT, self.url('sample_host', 1), - body=jsonutils.dumps(self.put_host_1()), - content_type='application/json') + self.requests.register_uri('PUT', self.url('sample_host', 1), + json=self.put_host_1(), + headers=headers) - httpretty.register_uri(httpretty.PUT, self.url('sample_host', 2), - body=jsonutils.dumps(self.put_host_2()), - content_type='application/json') + self.requests.register_uri('PUT', self.url('sample_host', 2), + json=self.put_host_2(), + headers=headers) - httpretty.register_uri(httpretty.PUT, self.url('sample_host', 3), - body=jsonutils.dumps(self.put_host_3()), - content_type='application/json') + self.requests.register_uri('PUT', self.url('sample_host', 3), + json=self.put_host_3(), + headers=headers) - url = self.url('sample_host', 'reboot') - httpretty.register_uri(httpretty.GET, url, - body=jsonutils.dumps(self.get_host_reboot()), - content_type='application/json') + self.requests.register_uri('GET', self.url('sample_host', 'reboot'), + json=self.get_host_reboot(), + headers=headers) - url = self.url('sample_host', 'startup') - httpretty.register_uri(httpretty.GET, url, - body=jsonutils.dumps(self.get_host_startup()), - content_type='application/json') + self.requests.register_uri('GET', self.url('sample_host', 'startup'), + json=self.get_host_startup(), + headers=headers) - url = self.url('sample_host', 'shutdown') - httpretty.register_uri(httpretty.GET, url, - body=jsonutils.dumps(self.get_host_shutdown()), - content_type='application/json') + self.requests.register_uri('GET', self.url('sample_host', 'shutdown'), + json=self.get_host_shutdown(), + headers=headers) - def put_os_hosts_sample_host(request, url, headers): + def put_os_hosts_sample_host(request, context): result = {'host': 'dummy'} - result.update(jsonutils.loads(request.body.decode('utf-8'))) - return 200, headers, jsonutils.dumps(result) + result.update(jsonutils.loads(request.body)) + return result - httpretty.register_uri(httpretty.PUT, self.url('sample_host'), - body=put_os_hosts_sample_host, - content_type='application/json') + self.requests.register_uri('PUT', self.url('sample_host'), + json=put_os_hosts_sample_host, + headers=headers) class V1(BaseFixture): diff --git a/novaclient/tests/fixture_data/hypervisors.py b/novaclient/tests/fixture_data/hypervisors.py index 068236a2d..c3f6f7210 100644 --- a/novaclient/tests/fixture_data/hypervisors.py +++ b/novaclient/tests/fixture_data/hypervisors.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -30,9 +27,11 @@ class V1(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_hypervisors), - content_type='application/json') + self.headers = {'Content-Type': 'application/json'} + + self.requests.register_uri('GET', self.url(), + json=get_os_hypervisors, + headers=self.headers) get_os_hypervisors_detail = { 'hypervisors': [ @@ -83,9 +82,9 @@ class V1(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url('detail'), - body=jsonutils.dumps(get_os_hypervisors_detail), - content_type='application/json') + self.requests.register_uri('GET', self.url('detail'), + json=get_os_hypervisors_detail, + headers=self.headers) get_os_hypervisors_stats = { 'hypervisor_statistics': { @@ -104,9 +103,9 @@ class V1(base.Fixture): } } - httpretty.register_uri(httpretty.GET, self.url('statistics'), - body=jsonutils.dumps(get_os_hypervisors_stats), - content_type='application/json') + self.requests.register_uri('GET', self.url('statistics'), + json=get_os_hypervisors_stats, + headers=self.headers) get_os_hypervisors_search = { 'hypervisors': [ @@ -115,9 +114,9 @@ class V1(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url('hyper', 'search'), - body=jsonutils.dumps(get_os_hypervisors_search), - content_type='application/json') + self.requests.register_uri('GET', self.url('hyper', 'search'), + json=get_os_hypervisors_search, + headers=self.headers) get_hyper_server = { 'hypervisors': [ @@ -140,9 +139,9 @@ class V1(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url('hyper', 'servers'), - body=jsonutils.dumps(get_hyper_server), - content_type='application/json') + self.requests.register_uri('GET', self.url('hyper', 'servers'), + json=get_hyper_server, + headers=self.headers) get_os_hypervisors_1234 = { 'hypervisor': { @@ -166,9 +165,9 @@ class V1(base.Fixture): } } - httpretty.register_uri(httpretty.GET, self.url(1234), - body=jsonutils.dumps(get_os_hypervisors_1234), - content_type='application/json') + self.requests.register_uri('GET', self.url(1234), + json=get_os_hypervisors_1234, + headers=self.headers) get_os_hypervisors_uptime = { 'hypervisor': { @@ -178,9 +177,9 @@ class V1(base.Fixture): } } - httpretty.register_uri(httpretty.GET, self.url(1234, 'uptime'), - body=jsonutils.dumps(get_os_hypervisors_uptime), - content_type='application/json') + self.requests.register_uri('GET', self.url(1234, 'uptime'), + json=get_os_hypervisors_uptime, + headers=self.headers) class V3(V1): @@ -195,10 +194,10 @@ class V3(V1): ] } - httpretty.register_uri(httpretty.GET, - self.url('search', query='hyper'), - body=jsonutils.dumps(get_os_hypervisors_search), - content_type='application/json') + self.requests.register_uri('GET', + self.url('search', query='hyper'), + json=get_os_hypervisors_search, + headers=self.headers) get_1234_servers = { 'hypervisor': { @@ -211,6 +210,6 @@ class V3(V1): }, } - httpretty.register_uri(httpretty.GET, self.url(1234, 'servers'), - body=jsonutils.dumps(get_1234_servers), - content_type='application/json') + self.requests.register_uri('GET', self.url(1234, 'servers'), + json=get_1234_servers, + headers=self.headers) diff --git a/novaclient/tests/fixture_data/images.py b/novaclient/tests/fixture_data/images.py index 09a134e5f..40cfd0c94 100644 --- a/novaclient/tests/fixture_data/images.py +++ b/novaclient/tests/fixture_data/images.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests import fakes from novaclient.tests.fixture_data import base @@ -31,9 +29,11 @@ class V1(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_images), - content_type='application/json') + headers = {'Content-Type': 'application/json'} + + self.requests.register_uri('GET', self.url(), + json=get_images, + headers=headers) image_1 = { 'id': 1, @@ -58,60 +58,53 @@ class V1(base.Fixture): "links": {}, } - get_images_detail = {'images': [image_1, image_2]} + self.requests.register_uri('GET', self.url('detail'), + json={'images': [image_1, image_2]}, + headers=headers) - httpretty.register_uri(httpretty.GET, self.url('detail'), - body=jsonutils.dumps(get_images_detail), - content_type='application/json') + self.requests.register_uri('GET', self.url(1), + json={'image': image_1}, + headers=headers) - get_images_1 = {'image': image_1} + self.requests.register_uri('GET', self.url(2), + json={'image': image_2}, + headers=headers) - httpretty.register_uri(httpretty.GET, self.url(1), - body=jsonutils.dumps(get_images_1), - content_type='application/json') + self.requests.register_uri('GET', self.url(456), + json={'image': image_2}, + headers=headers) - get_images_2 = {'image': image_2} - - httpretty.register_uri(httpretty.GET, self.url(2), - body=jsonutils.dumps(get_images_2), - content_type='application/json') - - httpretty.register_uri(httpretty.GET, self.url(456), - body=jsonutils.dumps(get_images_2), - content_type='application/json') - - def post_images(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_images(request, context): + body = jsonutils.loads(request.body) assert list(body) == ['image'] fakes.assert_has_keys(body['image'], required=['serverId', 'name']) - return 202, headers, jsonutils.dumps(images_1) + return images_1 - httpretty.register_uri(httpretty.POST, self.url(), - body=post_images, - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=post_images, + headers=headers, + status_code=202) - def post_images_1_metadata(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_images_1_metadata(request, context): + body = jsonutils.loads(request.body) assert list(body) == ['metadata'] fakes.assert_has_keys(body['metadata'], required=['test_key']) - data = jsonutils.dumps({'metadata': image_1['metadata']}) - return 200, headers, data + return {'metadata': image_1['metadata']} - httpretty.register_uri(httpretty.POST, self.url(1, 'metadata'), - body=post_images_1_metadata, - content_type='application/json') + self.requests.register_uri('POST', self.url(1, 'metadata'), + json=post_images_1_metadata, + headers=headers) for u in (1, 2, '1/metadata/test_key'): - httpretty.register_uri(httpretty.DELETE, self.url(u), - status=204) + self.requests.register_uri('DELETE', self.url(u), status_code=204) - httpretty.register_uri(httpretty.HEAD, self.url(1), status=200, - x_image_meta_id=1, - x_image_meta_name='CentOS 5.2', - x_image_meta_updated='2010-10-10T12:00:00Z', - x_image_meta_created='2010-10-10T12:00:00Z', - x_image_meta_status='ACTIVE', - x_image_meta_property_test_key='test_value') + image_headers = {'x-image-meta-id': '1', + 'x-image-meta-name': 'CentOS 5.2', + 'x-image-meta-updated': '2010-10-10T12:00:00Z', + 'x-image-meta-created': '2010-10-10T12:00:00Z', + 'x-image-meta-status': 'ACTIVE', + 'x-image-meta-property-test-key': 'test_value'} + self.requests.register_uri('HEAD', self.url(1), headers=image_headers) class V3(V1): diff --git a/novaclient/tests/fixture_data/keypairs.py b/novaclient/tests/fixture_data/keypairs.py index b3400a76c..cc8921beb 100644 --- a/novaclient/tests/fixture_data/keypairs.py +++ b/novaclient/tests/fixture_data/keypairs.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. - -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests import fakes from novaclient.tests.fixture_data import base @@ -26,25 +23,27 @@ class V1(base.Fixture): super(V1, self).setUp() keypair = {'fingerprint': 'FAKE_KEYPAIR', 'name': 'test'} - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps({'keypairs': [keypair]}), - content_type='application/json') + headers = {'Content-Type': 'application/json'} - httpretty.register_uri(httpretty.GET, self.url('test'), - body=jsonutils.dumps({'keypair': keypair}), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json={'keypairs': [keypair]}, + headers=headers) - httpretty.register_uri(httpretty.DELETE, self.url('test'), status=202) + self.requests.register_uri('GET', self.url('test'), + json={'keypair': keypair}, + headers=headers) - def post_os_keypairs(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + self.requests.register_uri('DELETE', self.url('test'), status_code=202) + + def post_os_keypairs(request, context): + body = jsonutils.loads(request.body) assert list(body) == ['keypair'] fakes.assert_has_keys(body['keypair'], required=['name']) - return 202, headers, jsonutils.dumps({'keypair': keypair}) + return {'keypair': keypair} - httpretty.register_uri(httpretty.POST, self.url(), - body=post_os_keypairs, - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=post_os_keypairs, + headers=headers) class V3(V1): diff --git a/novaclient/tests/fixture_data/limits.py b/novaclient/tests/fixture_data/limits.py index 5eca22e4d..0b9488d3f 100644 --- a/novaclient/tests/fixture_data/limits.py +++ b/novaclient/tests/fixture_data/limits.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -77,6 +74,7 @@ class Fixture(base.Fixture): }, } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_limits), - content_type='application/json') + headers = {'Content-Type': 'application/json'} + self.requests.register_uri('GET', self.url(), + json=get_limits, + headers=headers) diff --git a/novaclient/tests/fixture_data/networks.py b/novaclient/tests/fixture_data/networks.py index 12bb4b1eb..df721b25d 100644 --- a/novaclient/tests/fixture_data/networks.py +++ b/novaclient/tests/fixture_data/networks.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -34,29 +32,30 @@ class Fixture(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_os_networks), - content_type='application/json') + headers = {'Content-Type': 'application/json'} - def post_os_networks(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) - data = jsonutils.dumps({'network': body}) - return 202, headers, data + self.requests.register_uri('GET', self.url(), + json=get_os_networks, + headers=headers) - httpretty.register_uri(httpretty.POST, self.url(), - body=post_os_networks, - content_type='application/json') + def post_os_networks(request, context): + body = jsonutils.loads(request.body) + return {'network': body} + + self.requests.register_uri("POST", self.url(), + json=post_os_networks, + headers=headers) get_os_networks_1 = {'network': {"label": "1", "cidr": "10.0.0.0/24"}} - httpretty.register_uri(httpretty.GET, self.url(1), - body=jsonutils.dumps(get_os_networks_1), - content_type='application/json') + self.requests.register_uri('GET', self.url(1), + json=get_os_networks_1, + headers=headers) - httpretty.register_uri(httpretty.DELETE, - self.url('networkdelete'), - stauts=202) + self.requests.register_uri('DELETE', + self.url('networkdelete'), + status_code=202) for u in ('add', 'networkdisassociate/action', 'networktest/action', '1/action', '2/action'): - httpretty.register_uri(httpretty.POST, self.url(u), stauts=202) + self.requests.register_uri('POST', self.url(u), status_code=202) diff --git a/novaclient/tests/fixture_data/quotas.py b/novaclient/tests/fixture_data/quotas.py index 70db079dd..3250f8843 100644 --- a/novaclient/tests/fixture_data/quotas.py +++ b/novaclient/tests/fixture_data/quotas.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -25,32 +22,32 @@ class V1(base.Fixture): uuid = '97f4c221-bff4-4578-b030-0df4ef119353' uuid2 = '97f4c221bff44578b0300df4ef119353' - test_json = jsonutils.dumps({'quota_set': self.test_quota('test')}) + test_json = {'quota_set': self.test_quota('test')} + self.headers = {'Content-Type': 'application/json'} for u in ('test', 'tenant-id', 'tenant-id/defaults', '%s/defaults' % uuid2): - httpretty.register_uri(httpretty.GET, self.url(u), - body=test_json, - content_type='application/json') + self.requests.register_uri('GET', self.url(u), + json=test_json, + headers=self.headers) - quota_json = jsonutils.dumps({'quota_set': self.test_quota(uuid)}) - httpretty.register_uri(httpretty.PUT, self.url(uuid), - body=quota_json, - content_type='application/json') - httpretty.register_uri(httpretty.GET, self.url(uuid), - body=quota_json, - content_type='application/json') + self.requests.register_uri('PUT', self.url(uuid), + json={'quota_set': self.test_quota(uuid)}, + headers=self.headers) - quota_json2 = jsonutils.dumps({'quota_set': self.test_quota(uuid2)}) - httpretty.register_uri(httpretty.PUT, self.url(uuid2), - body=quota_json2, - content_type='application/json') - httpretty.register_uri(httpretty.GET, self.url(uuid2), - body=quota_json2, - content_type='application/json') + self.requests.register_uri('GET', self.url(uuid), + json={'quota_set': self.test_quota(uuid)}, + headers=self.headers) + + self.requests.register_uri('PUT', self.url(uuid2), + json={'quota_set': self.test_quota(uuid2)}, + headers=self.headers) + self.requests.register_uri('GET', self.url(uuid2), + json={'quota_set': self.test_quota(uuid2)}, + headers=self.headers) for u in ('test', uuid2): - httpretty.register_uri(httpretty.DELETE, self.url(u), status=202) + self.requests.register_uri('DELETE', self.url(u), status_code=202) def test_quota(self, tenant_id='test'): return { @@ -82,6 +79,6 @@ class V3(V1): } } - httpretty.register_uri(httpretty.GET, self.url('test', 'detail'), - body=jsonutils.dumps(get_detail), - content_type='application/json') + self.requests.register_uri('GET', self.url('test', 'detail'), + json=get_detail, + headers=self.headers) diff --git a/novaclient/tests/fixture_data/security_group_rules.py b/novaclient/tests/fixture_data/security_group_rules.py index 303cfee7c..480c4fc6d 100644 --- a/novaclient/tests/fixture_data/security_group_rules.py +++ b/novaclient/tests/fixture_data/security_group_rules.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests import fakes from novaclient.tests.fixture_data import base @@ -34,24 +32,26 @@ class Fixture(base.Fixture): 'cidr': '10.0.0.0/8' } - get_rules = {'security_group_rules': [rule]} - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_rules), - content_type='application/json') + headers = {'Content-Type': 'application/json'} + + self.requests.register_uri('GET', self.url(), + json={'security_group_rules': [rule]}, + headers=headers) for u in (1, 11, 12): - httpretty.register_uri(httpretty.DELETE, self.url(u), status=202) + self.requests.register_uri('DELETE', self.url(u), status_code=202) - def post_rules(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_rules(request, context): + body = jsonutils.loads(request.body) assert list(body) == ['security_group_rule'] fakes.assert_has_keys(body['security_group_rule'], required=['parent_group_id'], optional=['group_id', 'ip_protocol', 'from_port', 'to_port', 'cidr']) - return 202, headers, jsonutils.dumps({'security_group_rule': rule}) + return {'security_group_rule': rule} - httpretty.register_uri(httpretty.POST, self.url(), - body=post_rules, - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=post_rules, + headers=headers, + status_code=202) diff --git a/novaclient/tests/fixture_data/security_groups.py b/novaclient/tests/fixture_data/security_groups.py index 9f0c271ad..7d1fed380 100644 --- a/novaclient/tests/fixture_data/security_groups.py +++ b/novaclient/tests/fixture_data/security_groups.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. - -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests import fakes from novaclient.tests.fixture_data import base @@ -64,36 +61,39 @@ class Fixture(base.Fixture): } get_groups = {'security_groups': [security_group_1, security_group_2]} - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_groups), - content_type='application/json') + headers = {'Content-Type': 'application/json'} + + self.requests.register_uri('GET', self.url(), + json=get_groups, + headers=headers) get_group_1 = {'security_group': security_group_1} - httpretty.register_uri(httpretty.GET, self.url(1), - body=jsonutils.dumps(get_group_1), - content_type='application/json') + self.requests.register_uri('GET', self.url(1), + json=get_group_1, + headers=headers) - httpretty.register_uri(httpretty.DELETE, self.url(1), status=202) + self.requests.register_uri('DELETE', self.url(1), status_code=202) - def post_os_security_groups(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_os_security_groups(request, context): + body = jsonutils.loads(request.body) assert list(body) == ['security_group'] fakes.assert_has_keys(body['security_group'], required=['name', 'description']) - r = jsonutils.dumps({'security_group': security_group_1}) - return 202, headers, r + return {'security_group': security_group_1} - httpretty.register_uri(httpretty.POST, self.url(), - body=post_os_security_groups, - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=post_os_security_groups, + headers=headers, + status_code=202) - def put_os_security_groups_1(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def put_os_security_groups_1(request, context): + body = jsonutils.loads(request.body) assert list(body) == ['security_group'] fakes.assert_has_keys(body['security_group'], required=['name', 'description']) - return 205, headers, request.body + return body - httpretty.register_uri(httpretty.PUT, self.url(1), - body=put_os_security_groups_1, - content_type='application/json') + self.requests.register_uri('PUT', self.url(1), + json=put_os_security_groups_1, + headers=headers, + status_code=205) diff --git a/novaclient/tests/fixture_data/server_groups.py b/novaclient/tests/fixture_data/server_groups.py index 65a0c78d2..47e307153 100644 --- a/novaclient/tests/fixture_data/server_groups.py +++ b/novaclient/tests/fixture_data/server_groups.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. - -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import base @@ -54,22 +51,23 @@ class Fixture(base.Fixture): } ] - get_server_groups = {'server_groups': server_groups} - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_server_groups), - content_type='application/json') + headers = {'Content-Type': 'application/json'} + + self.requests.register_uri('GET', self.url(), + json={'server_groups': server_groups}, + headers=headers) server = server_groups[0] - server_json = jsonutils.dumps({'server_group': server}) + server_j = jsonutils.dumps({'server_group': server}) def _register(method, *args): - httpretty.register_uri(method, self.url(*args), body=server_json) + self.requests.register_uri(method, self.url(*args), text=server_j) - _register(httpretty.POST) - _register(httpretty.POST, server['id']) - _register(httpretty.GET, server['id']) - _register(httpretty.PUT, server['id']) - _register(httpretty.POST, server['id'], '/action') + _register('POST') + _register('POST', server['id']) + _register('GET', server['id']) + _register('PUT', server['id']) + _register('POST', server['id'], '/action') - httpretty.register_uri(httpretty.DELETE, self.url(server['id']), - status=202) + self.requests.register_uri('DELETE', self.url(server['id']), + status_code=202) diff --git a/novaclient/tests/fixture_data/servers.py b/novaclient/tests/fixture_data/servers.py index e862b4f69..6f753fc85 100644 --- a/novaclient/tests/fixture_data/servers.py +++ b/novaclient/tests/fixture_data/servers.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - from novaclient.openstack.common import jsonutils from novaclient.tests import fakes from novaclient.tests.fixture_data import base @@ -31,9 +29,9 @@ class Base(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, self.url(), - body=jsonutils.dumps(get_servers), - content_type='application/json') + self.requests.register_uri('GET', self.url(), + json=get_servers, + headers=self.json_headers) self.server_1234 = { "id": 1234, @@ -151,48 +149,47 @@ class Base(base.Fixture): servers = [self.server_1234, self.server_5678, self.server_9012] get_servers_detail = {"servers": servers} - httpretty.register_uri(httpretty.GET, self.url('detail'), - body=jsonutils.dumps(get_servers_detail), - content_type='application/json') + self.requests.register_uri('GET', self.url('detail'), + json=get_servers_detail, + headers=self.json_headers) self.server_1235 = self.server_1234.copy() self.server_1235['id'] = 1235 self.server_1235['status'] = 'error' self.server_1235['fault'] = {'message': 'something went wrong!'} - servers.append(self.server_1235) - for s in servers: - httpretty.register_uri(httpretty.GET, self.url(s['id']), - body=jsonutils.dumps({'server': s}), - content_type='application/json') + for s in servers + [self.server_1235]: + self.requests.register_uri('GET', self.url(s['id']), + json={'server': s}, + headers=self.json_headers) for s in (1234, 5678): - httpretty.register_uri(httpretty.DELETE, self.url(s), status=202) + self.requests.register_uri('DELETE', self.url(s), status_code=202) for k in ('test_key', 'key1', 'key2'): - httpretty.register_uri(httpretty.DELETE, - self.url(1234, 'metadata', k), - status=204) + self.requests.register_uri('DELETE', + self.url(1234, 'metadata', k), + status_code=204) - metadata1 = jsonutils.dumps({'metadata': {'test_key': 'test_value'}}) - httpretty.register_uri(httpretty.POST, self.url(1234, 'metadata'), - body=metadata1, status=200, - content_type='application/json') - httpretty.register_uri(httpretty.PUT, - self.url(1234, 'metadata', 'test_key'), - body=metadata1, status=200, - content_type='application/json') + metadata1 = {'metadata': {'test_key': 'test_value'}} + self.requests.register_uri('POST', self.url(1234, 'metadata'), + json=metadata1, + headers=self.json_headers) + self.requests.register_uri('PUT', + self.url(1234, 'metadata', 'test_key'), + json=metadata1, + headers=self.json_headers) - self.diagnostic = jsonutils.dumps({'data': 'Fake diagnostics'}) + self.diagnostic = {'data': 'Fake diagnostics'} - metadata2 = jsonutils.dumps({'metadata': {'key1': 'val1'}}) + metadata2 = {'metadata': {'key1': 'val1'}} for u in ('uuid1', 'uuid2', 'uuid3', 'uuid4'): - httpretty.register_uri(httpretty.POST, self.url(u, 'metadata'), - body=metadata2, status=204) - httpretty.register_uri(httpretty.DELETE, - self.url(u, 'metadata', 'key1'), - body=self.diagnostic, - content_type='application/json') + self.requests.register_uri('POST', self.url(u, 'metadata'), + json=metadata2, status_code=204) + self.requests.register_uri('DELETE', + self.url(u, 'metadata', 'key1'), + json=self.diagnostic, + headers=self.json_headers) get_security_groups = { "security_groups": [{ @@ -203,18 +200,17 @@ class Base(base.Fixture): 'rules': []}] } - httpretty.register_uri(httpretty.GET, - self.url('1234', 'os-security-groups'), - body=jsonutils.dumps(get_security_groups), - status=200) + self.requests.register_uri('GET', + self.url('1234', 'os-security-groups'), + json=get_security_groups) - httpretty.register_uri(httpretty.POST, self.url(), - body=self.post_servers, - content_type='application/json') + self.requests.register_uri('POST', self.url(), + json=self.post_servers, + headers=self.json_headers) - httpretty.register_uri(httpretty.POST, self.url('1234', 'action'), - body=self.post_servers_1234_action, - content_type='application/json') + self.requests.register_uri('POST', self.url('1234', 'action'), + json=self.post_servers_1234_action, + headers=self.json_headers) get_os_interface = { "interfaceAttachments": [ @@ -235,30 +231,31 @@ class Base(base.Fixture): ] } - httpretty.register_uri(httpretty.GET, - self.url('1234', 'os-interface'), - body=jsonutils.dumps(get_os_interface), - content_type='application/json') + self.requests.register_uri('GET', + self.url('1234', 'os-interface'), + json=get_os_interface, + headers=self.json_headers) interface_data = {'interfaceAttachment': {}} - httpretty.register_uri(httpretty.POST, - self.url('1234', 'os-interface'), - body=jsonutils.dumps(interface_data), - content_type='application/json') + self.requests.register_uri('POST', + self.url('1234', 'os-interface'), + json=interface_data, + headers=self.json_headers) - def put_servers_1234(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def put_servers_1234(request, context): + body = jsonutils.loads(request.body) assert list(body) == ['server'] fakes.assert_has_keys(body['server'], optional=['name', 'adminPass']) - return 204, headers, request.body + return request.body - httpretty.register_uri(httpretty.PUT, self.url(1234), - body=put_servers_1234, - content_type='application/json') + self.requests.register_uri('PUT', self.url(1234), + body=put_servers_1234, + status_code=204, + headers=self.json_headers) - def post_os_volumes_boot(request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_os_volumes_boot(request, context): + body = jsonutils.loads(request.body) assert (set(body.keys()) <= set(['server', 'os:scheduler_hints'])) @@ -277,23 +274,24 @@ class Base(base.Fixture): msg = "found extra keys: 'block_device_mapping'" raise AssertionError(msg) - return 202, headers, jsonutils.dumps({'server': self.server_9012}) + return {'server': self.server_9012} # NOTE(jamielennox): hack to make os_volumes mock go to the right place base_url = self.base_url self.base_url = None - httpretty.register_uri(httpretty.POST, self.url('os-volumes_boot'), - body=post_os_volumes_boot, - content_type='application/json') + self.requests.register_uri('POST', self.url('os-volumes_boot'), + json=post_os_volumes_boot, + status_code=202, + headers=self.json_headers) self.base_url = base_url # # Server password # - httpretty.register_uri(httpretty.DELETE, - self.url(1234, 'os-server-password'), - status=202) + self.requests.register_uri('DELETE', + self.url(1234, 'os-server-password'), + status_code=202) class V1(Base): @@ -306,29 +304,28 @@ class V1(Base): # add = self.server_1234['addresses'] - httpretty.register_uri(httpretty.GET, self.url(1234, 'ips'), - jsonutils.dumps({'addresses': add}), - content_type='application/json') + self.requests.register_uri('GET', self.url(1234, 'ips'), + json={'addresses': add}, + headers=self.json_headers) - httpretty.register_uri(httpretty.GET, self.url(1234, 'ips', 'public'), - jsonutils.dumps({'public': add['public']}), - content_type='application/json') + self.requests.register_uri('GET', self.url(1234, 'ips', 'public'), + json={'public': add['public']}, + headers=self.json_headers) - httpretty.register_uri(httpretty.GET, self.url(1234, 'ips', 'private'), - jsonutils.dumps({'private': add['private']}), - content_type='application/json') + self.requests.register_uri('GET', self.url(1234, 'ips', 'private'), + json={'private': add['private']}, + headers=self.json_headers) - httpretty.register_uri(httpretty.DELETE, - self.url(1234, 'ips', 'public', '1.2.3.4'), - status=202) + self.requests.register_uri('DELETE', + self.url(1234, 'ips', 'public', '1.2.3.4'), + status_code=202) - httpretty.register_uri(httpretty.GET, - self.url('1234', 'diagnostics'), - body=self.diagnostic, - status=200) + self.requests.register_uri('GET', + self.url('1234', 'diagnostics'), + json=self.diagnostic) - httpretty.register_uri(httpretty.DELETE, - self.url('1234', 'os-interface', 'port-id')) + self.requests.register_uri('DELETE', + self.url('1234', 'os-interface', 'port-id')) # Testing with the following password and key # @@ -351,12 +348,13 @@ class V1(Base): '/y5a6Z3/AoJZYGG7IH5WN88UROU3B9JZGFB2qtPLQTOvDMZLUhoPRIJeHiVSlo1N' 'tI2/++UsXVg3ow6ItqCJGgdNuGG5JB+bslDHWPxROpesEIHdczk46HCpHQN8f1sk' 'Hi/fmZZNQQqj1Ijq0caOIw=='} - httpretty.register_uri(httpretty.GET, - self.url(1234, 'os-server-password'), - jsonutils.dumps(get_server_password)) + self.requests.register_uri('GET', + self.url(1234, 'os-server-password'), + json=get_server_password) - def post_servers(self, request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_servers(self, request, context): + body = jsonutils.loads(request.body) + context.status_code = 202 assert (set(body.keys()) <= set(['server', 'os:scheduler_hints'])) fakes.assert_has_keys(body['server'], @@ -370,12 +368,12 @@ class V1(Base): else: body = self.server_1234 - return 202, headers, jsonutils.dumps({'server': body}) + return {'server': body} - def post_servers_1234_action(self, request, url, headers): + def post_servers_1234_action(self, request, context): _body = '' - body = jsonutils.loads(request.body.decode('utf-8')) - resp = 202 + body = jsonutils.loads(request.body) + context.status_code = 202 assert len(body.keys()) == 1 action = list(body)[0] if action == 'reboot': @@ -393,7 +391,8 @@ class V1(Base): elif action == 'confirmResize': assert body[action] is None # This one method returns a different response code - return 204, headers, '' + context.status_code = 204 + return None elif action == 'revertResize': assert body[action] is None elif action == 'migrate': @@ -445,12 +444,13 @@ class V1(Base): assert list(body[action]) == ['address'] elif action == 'createImage': assert set(body[action].keys()) == set(['name', 'metadata']) - headers['location'] = "http://blah/images/456" + context.headers['location'] = "http://blah/images/456" elif action == 'changePassword': assert list(body[action]) == ['adminPass'] elif action == 'os-getConsoleOutput': assert list(body[action]) == ['length'] - return 202, headers, jsonutils.dumps({'output': 'foo'}) + context.status_code = 202 + return {'output': 'foo'} elif action == 'os-getVNCConsole': assert list(body[action]) == ['type'] elif action == 'os-getSPICEConsole': @@ -480,7 +480,7 @@ class V1(Base): assert set(keys) == set(['host', 'onSharedStorage']) else: raise AssertionError("Unexpected server action: %s" % action) - return resp, headers, jsonutils.dumps({'server': _body}) + return {'server': _body} class V3(Base): @@ -507,32 +507,30 @@ class V3(Base): ] } - httpretty.register_uri(httpretty.GET, - self.url('1234', 'os-attach-interfaces'), - body=jsonutils.dumps(get_interfaces), - content_type='application/json') + self.requests.register_uri('GET', + self.url('1234', 'os-attach-interfaces'), + json=get_interfaces, + headers=self.json_headers) attach_body = {'interface_attachment': {}} - httpretty.register_uri(httpretty.POST, - self.url('1234', 'os-attach-interfaces'), - body=jsonutils.dumps(attach_body), - content_type='application/json') + self.requests.register_uri('POST', + self.url('1234', 'os-attach-interfaces'), + json=attach_body, + headers=self.json_headers) - httpretty.register_uri(httpretty.GET, - self.url('1234', 'os-server-diagnostics'), - body=self.diagnostic, - status=200) + self.requests.register_uri('GET', + self.url('1234', 'os-server-diagnostics'), + json=self.diagnostic) - httpretty.register_uri(httpretty.DELETE, - self.url('1234', 'os-attach-interfaces', - 'port-id')) + url = self.url('1234', 'os-attach-interfaces', 'port-id') + self.requests.register_uri('DELETE', url) - httpretty.register_uri(httpretty.GET, - self.url(1234, 'os-server-password'), - jsonutils.dumps({'password': ''})) + self.requests.register_uri('GET', + self.url(1234, 'os-server-password'), + json={'password': ''}) - def post_servers(self, request, url, headers): - body = jsonutils.loads(request.body.decode('utf-8')) + def post_servers(self, request, context): + body = jsonutils.loads(request.body) assert set(body.keys()) <= set(['server']) fakes.assert_has_keys(body['server'], required=['name', 'image_ref', 'flavor_ref'], @@ -543,10 +541,11 @@ class V3(Base): else: body = self.server_1234 - return 202, headers, jsonutils.dumps({'server': body}) + context.status_code = 202 + return {'server': body} - def post_servers_1234_action(self, request, url, headers): - resp = 202 + def post_servers_1234_action(self, request, context): + context.status_code = 202 body_is_none_list = [ 'revert_resize', 'migrate', 'stop', 'start', 'force_delete', 'restore', 'pause', 'unpause', 'lock', 'unlock', 'unrescue', @@ -577,7 +576,7 @@ class V3(Base): 'detach': ['volume_id'], 'swap_volume_attachment': ['old_volume_id', 'new_volume_id']} - body = jsonutils.loads(request.body.decode('utf-8')) + body = jsonutils.loads(request.body) assert len(body.keys()) == 1 action = list(body)[0] _body = body_return_map.get(action, '') @@ -598,13 +597,13 @@ class V3(Base): assert body[action]['type'] in ['HARD', 'SOFT'] elif action == 'confirm_resize': # This one method returns a different response code - resp = 204 + context.status_code = 204 elif action == 'create_image': - headers['location'] = "http://blah/images/456" + context.headers['location'] = "http://blah/images/456" if action not in set.union(set(body_is_none_list), set(body_params_check_exact.keys()), set(body_param_check_exists.keys())): raise AssertionError("Unexpected server action: %s" % action) - return resp, headers, jsonutils.dumps(_body) + return _body diff --git a/novaclient/tests/utils.py b/novaclient/tests/utils.py index be251998c..036702ec5 100644 --- a/novaclient/tests/utils.py +++ b/novaclient/tests/utils.py @@ -14,8 +14,8 @@ import os import fixtures -import httpretty import requests +from requests_mock.contrib import fixture as requests_mock_fixture import six import testscenarios import testtools @@ -52,24 +52,26 @@ class FixturedTestCase(testscenarios.TestWithScenarios, TestCase): def setUp(self): super(FixturedTestCase, self).setUp() - httpretty.reset() + self.requests = self.useFixture(requests_mock_fixture.Fixture()) self.data_fixture = None self.client_fixture = None self.cs = None if self.client_fixture_class: - self.client_fixture = self.useFixture(self.client_fixture_class()) + fix = self.client_fixture_class(self.requests) + self.client_fixture = self.useFixture(fix) self.cs = self.client_fixture.client if self.data_fixture_class: - self.data_fixture = self.useFixture(self.data_fixture_class()) + fix = self.data_fixture_class(self.requests) + self.data_fixture = self.useFixture(fix) def assert_called(self, method, path, body=None): - self.assertEqual(httpretty.last_request().method, method) - self.assertEqual(httpretty.last_request().path, path) + self.assertEqual(self.requests.last_request.method, method) + self.assertEqual(self.requests.last_request.path_url, path) if body: - req_data = httpretty.last_request().body + req_data = self.requests.last_request.body if isinstance(req_data, six.binary_type): req_data = req_data.decode('utf-8') if not isinstance(body, six.string_types): diff --git a/novaclient/tests/v1_1/test_agents.py b/novaclient/tests/v1_1/test_agents.py index 46efe839a..3bc006fb5 100644 --- a/novaclient/tests/v1_1/test_agents.py +++ b/novaclient/tests/v1_1/test_agents.py @@ -13,9 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty - -from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import agents as data from novaclient.tests.fixture_data import client from novaclient.tests import utils @@ -53,9 +50,10 @@ class AgentsTest(utils.FixturedTestCase): ] } - httpretty.register_uri(httpretty.GET, self.data_fixture.url(), - body=jsonutils.dumps(get_os_agents), - content_type='application/json') + headers = {'Content-Type': 'application/json'} + self.requests.register_uri('GET', self.data_fixture.url(), + json=get_os_agents, + headers=headers) def test_list_agents(self): self.stub_hypervisors() diff --git a/novaclient/tests/v1_1/test_servers.py b/novaclient/tests/v1_1/test_servers.py index 5ef06baaa..9df2edf4b 100644 --- a/novaclient/tests/v1_1/test_servers.py +++ b/novaclient/tests/v1_1/test_servers.py @@ -12,11 +12,11 @@ # License for the specific language governing permissions and limitations # under the License. -import httpretty import mock import six from novaclient import exceptions +from novaclient.openstack.common import jsonutils from novaclient.tests.fixture_data import client from novaclient.tests.fixture_data import floatingips from novaclient.tests.fixture_data import servers as data @@ -31,7 +31,7 @@ class ServersTest(utils.FixturedTestCase): def setUp(self): super(ServersTest, self).setUp() - self.useFixture(floatingips.FloatingFixture()) + self.useFixture(floatingips.FloatingFixture(self.requests)) def test_list_servers(self): sl = self.cs.servers.list() @@ -191,7 +191,7 @@ class ServersTest(utils.FixturedTestCase): self.assertIsInstance(s, servers.Server) # verify disk config param was used in the request: - body = httpretty.last_request().parsed_body + body = jsonutils.loads(self.requests.last_request.body) server = body['server'] self.assertTrue('OS-DCF:diskConfig' in server) self.assertEqual(disk_config, server['OS-DCF:diskConfig']) @@ -280,7 +280,7 @@ class ServersTest(utils.FixturedTestCase): self.assert_called('POST', '/servers/1234/action') # verify disk config param was used in the request: - body = httpretty.last_request().parsed_body + body = jsonutils.loads(self.requests.last_request.body) d = body[operation] self.assertTrue('OS-DCF:diskConfig' in d) @@ -296,7 +296,7 @@ class ServersTest(utils.FixturedTestCase): s = self.cs.servers.get(1234) s.rebuild(image=1, preserve_ephemeral=True) self.assert_called('POST', '/servers/1234/action') - body = httpretty.last_request().parsed_body + body = jsonutils.loads(self.requests.last_request.body) d = body['rebuild'] self.assertIn('preserve_ephemeral', d) self.assertEqual(d['preserve_ephemeral'], True) @@ -305,7 +305,7 @@ class ServersTest(utils.FixturedTestCase): files = {'/etc/passwd': 'some data'} s = self.cs.servers.get(1234) s.rebuild(image=1, name='new', meta={'foo': 'bar'}, files=files) - body = httpretty.last_request().parsed_body + body = jsonutils.loads(self.requests.last_request.body) d = body['rebuild'] self.assertEqual('new', d['name']) self.assertEqual({'foo': 'bar'}, d['metadata']) diff --git a/test-requirements.txt b/test-requirements.txt index 910d74c47..2240f7ad9 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,9 +3,9 @@ hacking>=0.9.2,<0.10 coverage>=3.6 discover fixtures>=0.3.14 -httpretty>=0.8.0,!=0.8.1,!=0.8.2 keyring>=2.1,!=3.3 mock>=1.0 +requests-mock>=0.4.0 sphinx>=1.1.2,!=1.2.0,<1.3 python-keystoneclient>=0.10.0 oslosphinx