Make sure we pass propert dicts to validate
In register_uris, validate takes a dict that matches the dict one normally passes to requests_mock - that is, it can take json, headers, etc. Unfortunately, our fixture doesn't error when one passes a normal dict to it thinking you're passing a json dict for it to validate. This fixes the call sites - the associated tests need to be fixed. Change-Id: I16f265fe41219be0f3b031eb8be26f740a65d665
This commit is contained in:
parent
ce587ccfe0
commit
10e6fbe44f
@ -929,17 +929,21 @@ class OperatorCloud(openstackcloud.OpenStackCloud):
|
||||
urlkwargs['interface'] = interface
|
||||
endpoint_args.append(urlkwargs)
|
||||
else:
|
||||
expected_endpoints = {'public': public_url,
|
||||
'internal': internal_url,
|
||||
'admin': admin_url}
|
||||
# NOTE(notmorgan): This is done as a list of tuples to ensure we
|
||||
# have a deterministic order we try and create the endpoint
|
||||
# elements. This is done mostly so that it is possible to test the
|
||||
# requests themselves.
|
||||
expected_endpoints = [('public', public_url),
|
||||
('internal', internal_url),
|
||||
('admin', admin_url)]
|
||||
if self.cloud_config.get_api_version('identity').startswith('2'):
|
||||
urlkwargs = {}
|
||||
for interface, url in expected_endpoints.items():
|
||||
for interface, url in expected_endpoints:
|
||||
if url:
|
||||
urlkwargs['{}url'.format(interface)] = url
|
||||
endpoint_args.append(urlkwargs)
|
||||
else:
|
||||
for interface, url in expected_endpoints.items():
|
||||
for interface, url in expected_endpoints:
|
||||
if url:
|
||||
urlkwargs = {}
|
||||
urlkwargs['url'] = url
|
||||
|
@ -259,9 +259,11 @@ class RequestsMockTestCase(BaseTestCase):
|
||||
response['enabled'] = enabled
|
||||
request['enabled'] = enabled
|
||||
response.setdefault('enabled', True)
|
||||
request.setdefault('enabled', True)
|
||||
if description:
|
||||
response['description'] = description
|
||||
request['description'] = description
|
||||
request.setdefault('description', None)
|
||||
if v3:
|
||||
project_key = 'project'
|
||||
else:
|
||||
@ -275,7 +277,7 @@ class RequestsMockTestCase(BaseTestCase):
|
||||
name = name or self.getUniqueString('groupname')
|
||||
domain_id = uuid.UUID(domain_id or uuid.uuid4().hex).hex
|
||||
response = {'id': group_id, 'name': name, 'domain_id': domain_id}
|
||||
request = {'name': name}
|
||||
request = {'name': name, 'domain_id': domain_id}
|
||||
if description is not None:
|
||||
response['description'] = description
|
||||
request['description'] = description
|
||||
@ -374,6 +376,8 @@ class RequestsMockTestCase(BaseTestCase):
|
||||
response = {'id': endpoint_id, 'service_id': service_id,
|
||||
'region': region}
|
||||
v3_endpoints = {}
|
||||
request = response.copy()
|
||||
request.pop('id')
|
||||
if admin_url:
|
||||
response['adminURL'] = admin_url
|
||||
v3_endpoints['admin'] = self._get_endpoint_v3_data(
|
||||
@ -388,6 +392,8 @@ class RequestsMockTestCase(BaseTestCase):
|
||||
service_id, region, public_url, interface='public')
|
||||
request = response.copy()
|
||||
request.pop('id')
|
||||
for u in ('publicURL', 'internalURL', 'adminURL'):
|
||||
request[u.lower()] = request.pop(u, None)
|
||||
return _EndpointDataV2(endpoint_id, service_id, region, public_url,
|
||||
internal_url, admin_url, v3_endpoints,
|
||||
{'endpoint': response}, {'endpoint': request})
|
||||
|
@ -338,7 +338,7 @@ class TestMemoryCache(base.RequestsMockTestCase):
|
||||
|
||||
user_data = self._get_user_data(email='test@example.com')
|
||||
new_resp = {'user': user_data.json_response['user'].copy()}
|
||||
new_resp['user']['email'] = 'updated@example.com'
|
||||
new_resp['user']['email'] = 'Nope@Nope.Nope'
|
||||
new_req = {'user': {'email': new_resp['user']['email']}}
|
||||
|
||||
mock_users_url = self.get_mock_url(
|
||||
@ -355,6 +355,9 @@ class TestMemoryCache(base.RequestsMockTestCase):
|
||||
users_list_resp = {'users': [user_data.json_response['user']]}
|
||||
updated_users_list_resp = {'users': [new_resp['user']]}
|
||||
|
||||
# Password is None in the original create below
|
||||
user_data.json_request['user']['password'] = None
|
||||
|
||||
uris_to_mock = [
|
||||
# Inital User List is Empty
|
||||
dict(method='GET', uri=mock_users_url, status_code=200,
|
||||
@ -363,7 +366,7 @@ class TestMemoryCache(base.RequestsMockTestCase):
|
||||
# GET to get the user data after POST
|
||||
dict(method='POST', uri=mock_users_url, status_code=200,
|
||||
json=user_data.json_response,
|
||||
validate=user_data.json_request),
|
||||
validate=dict(json=user_data.json_request)),
|
||||
# List Users Call
|
||||
dict(method='GET', uri=mock_users_url, status_code=200,
|
||||
json=users_list_resp),
|
||||
@ -376,7 +379,7 @@ class TestMemoryCache(base.RequestsMockTestCase):
|
||||
dict(method='GET', uri=mock_user_resource_url, status_code=200,
|
||||
json=user_data.json_response),
|
||||
dict(method='PUT', uri=mock_user_resource_url, status_code=200,
|
||||
json=new_resp, validate=new_req),
|
||||
json=new_resp, validate=dict(json=new_req)),
|
||||
dict(method='GET', uri=mock_user_resource_url, status_code=200,
|
||||
json=new_resp),
|
||||
# List Users Call
|
||||
|
@ -111,7 +111,8 @@ class TestDomains(base.RequestsMockTestCase):
|
||||
domain_resource_uri = self.get_mock_url(append=[domain_data.domain_id])
|
||||
self.register_uris([
|
||||
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
|
||||
json=new_resp, validate={'domain': {'enabled': False}}),
|
||||
json=new_resp,
|
||||
validate=dict(json={'domain': {'enabled': False}})),
|
||||
dict(method='DELETE', uri=domain_resource_uri, status_code=204)])
|
||||
self.op_cloud.delete_domain(domain_data.domain_id)
|
||||
self.assert_calls()
|
||||
@ -126,7 +127,8 @@ class TestDomains(base.RequestsMockTestCase):
|
||||
dict(method='GET', uri=self.get_mock_url(), status_code=200,
|
||||
json={'domains': [domain_data.json_response['domain']]}),
|
||||
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
|
||||
json=new_resp, validate={'domain': {'enabled': False}}),
|
||||
json=new_resp,
|
||||
validate=dict(json={'domain': {'enabled': False}})),
|
||||
dict(method='DELETE', uri=domain_resource_uri, status_code=204)])
|
||||
self.op_cloud.delete_domain(name_or_id=domain_data.domain_id)
|
||||
self.assert_calls()
|
||||
@ -143,7 +145,8 @@ class TestDomains(base.RequestsMockTestCase):
|
||||
domain_resource_uri = self.get_mock_url(append=[domain_data.domain_id])
|
||||
self.register_uris([
|
||||
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
|
||||
json=new_resp, validate={'domain': {'enabled': False}}),
|
||||
json=new_resp,
|
||||
validate=dict(json={'domain': {'enabled': False}})),
|
||||
dict(method='DELETE', uri=domain_resource_uri, status_code=404)])
|
||||
with testtools.ExpectedException(
|
||||
shade.OpenStackCloudURINotFound,
|
||||
|
@ -44,7 +44,9 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
service_data.service_id, public_url=self._dummy_url(),
|
||||
internal_url=self._dummy_url(), admin_url=self._dummy_url())
|
||||
other_endpoint_data = self._get_endpoint_v2_data(
|
||||
service_data.service_id, public_url=self._dummy_url())
|
||||
service_data.service_id, region=endpoint_data.region,
|
||||
public_url=endpoint_data.public_url)
|
||||
# correct the keys
|
||||
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
@ -57,7 +59,7 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(base_url_append=None),
|
||||
status_code=200,
|
||||
json=endpoint_data.json_response,
|
||||
validate=endpoint_data.json_request),
|
||||
validate=dict(json=endpoint_data.json_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
resource='services', base_url_append='OS-KSADM'),
|
||||
@ -77,7 +79,7 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(base_url_append=None),
|
||||
status_code=200,
|
||||
json=other_endpoint_data.json_response,
|
||||
validate=other_endpoint_data.json_request)
|
||||
validate=dict(json=other_endpoint_data.json_request))
|
||||
])
|
||||
|
||||
endpoints = self.op_cloud.create_endpoint(
|
||||
@ -151,7 +153,8 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(),
|
||||
status_code=200,
|
||||
json=public_endpoint_data_disabled.json_response,
|
||||
validate=public_endpoint_data_disabled.json_request),
|
||||
validate=dict(
|
||||
json=public_endpoint_data_disabled.json_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
append=[public_endpoint_data_disabled.endpoint_id]),
|
||||
@ -166,7 +169,7 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(),
|
||||
status_code=200,
|
||||
json=public_endpoint_data.json_response,
|
||||
validate=public_endpoint_data.json_request),
|
||||
validate=dict(json=public_endpoint_data.json_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
append=[public_endpoint_data.endpoint_id]),
|
||||
@ -176,7 +179,7 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(),
|
||||
status_code=200,
|
||||
json=internal_endpoint_data.json_response,
|
||||
validate=internal_endpoint_data.json_request),
|
||||
validate=dict(json=internal_endpoint_data.json_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
append=[internal_endpoint_data.endpoint_id]),
|
||||
@ -186,7 +189,7 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(),
|
||||
status_code=200,
|
||||
json=admin_endpoint_data.json_response,
|
||||
validate=admin_endpoint_data.json_request),
|
||||
validate=dict(json=admin_endpoint_data.json_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
append=[admin_endpoint_data.endpoint_id]),
|
||||
@ -251,15 +254,18 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
|
||||
def test_update_endpoint_v3(self):
|
||||
service_data = self._get_service_data()
|
||||
dummy_url = self._dummy_url()
|
||||
endpoint_data = self._get_endpoint_v3_data(
|
||||
service_id=service_data.service_id, interface='admin',
|
||||
enabled=False)
|
||||
reference_request = endpoint_data.json_request.copy()
|
||||
reference_request['endpoint']['url'] = dummy_url
|
||||
self.register_uris([
|
||||
dict(method='PATCH',
|
||||
uri=self.get_mock_url(append=[endpoint_data.endpoint_id]),
|
||||
status_code=200,
|
||||
json=endpoint_data.json_response,
|
||||
validate=endpoint_data.json_request),
|
||||
validate=dict(json=reference_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(append=[endpoint_data.endpoint_id]),
|
||||
status_code=200,
|
||||
@ -269,7 +275,7 @@ class TestCloudEndpoints(base.RequestsMockTestCase):
|
||||
endpoint_data.endpoint_id,
|
||||
service_name_or_id=service_data.service_id,
|
||||
region=endpoint_data.region,
|
||||
url=self._dummy_url(),
|
||||
url=dummy_url,
|
||||
interface=endpoint_data.interface,
|
||||
enabled=False
|
||||
)
|
||||
|
@ -72,7 +72,7 @@ class TestGroups(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(),
|
||||
status_code=200,
|
||||
json=group_data.json_response,
|
||||
validate=group_data.json_request),
|
||||
validate=dict(json=group_data.json_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(append=[group_data.group_id]),
|
||||
status_code=200,
|
||||
@ -84,6 +84,8 @@ class TestGroups(base.RequestsMockTestCase):
|
||||
|
||||
def test_update_group(self):
|
||||
group_data = self._get_group_data()
|
||||
# Domain ID is not sent
|
||||
group_data.json_request['group'].pop('domain_id')
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(),
|
||||
@ -93,7 +95,7 @@ class TestGroups(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(append=[group_data.group_id]),
|
||||
status_code=200,
|
||||
json=group_data.json_response,
|
||||
validate=group_data.json_request),
|
||||
validate=dict(json=group_data.json_request)),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(append=[group_data.group_id]),
|
||||
status_code=200,
|
||||
|
@ -39,7 +39,7 @@ class TestProject(base.RequestsMockTestCase):
|
||||
self.register_uris([
|
||||
dict(method='POST', uri=self.get_mock_url(v3=False),
|
||||
status_code=200, json=project_data.json_response,
|
||||
validate=project_data.json_request)
|
||||
validate=dict(json=project_data.json_request))
|
||||
])
|
||||
project = self.op_cloud.create_project(
|
||||
name=project_data.project_name,
|
||||
@ -52,12 +52,14 @@ class TestProject(base.RequestsMockTestCase):
|
||||
def test_create_project_v3(self,):
|
||||
project_data = self._get_project_data(
|
||||
description=self.getUniqueString('projectDesc'))
|
||||
reference_req = project_data.json_request.copy()
|
||||
reference_req['project']['enabled'] = True
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(),
|
||||
status_code=200,
|
||||
json=project_data.json_response,
|
||||
validate=project_data.json_request)
|
||||
validate=dict(json=reference_req))
|
||||
])
|
||||
project = self.op_cloud.create_project(
|
||||
name=project_data.project_name,
|
||||
@ -135,6 +137,9 @@ class TestProject(base.RequestsMockTestCase):
|
||||
project_data = self._get_project_data(
|
||||
v3=False,
|
||||
description=self.getUniqueString('projectDesc'))
|
||||
# remove elements that are not updated in this test.
|
||||
project_data.json_request['tenant'].pop('name')
|
||||
project_data.json_request['tenant'].pop('enabled')
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(v3=False),
|
||||
@ -145,7 +150,7 @@ class TestProject(base.RequestsMockTestCase):
|
||||
v3=False, append=[project_data.project_id]),
|
||||
status_code=200,
|
||||
json=project_data.json_response,
|
||||
validate=project_data.json_request)
|
||||
validate=dict(json=project_data.json_request))
|
||||
])
|
||||
project = self.op_cloud.update_project(
|
||||
project_data.project_id,
|
||||
@ -160,6 +165,11 @@ class TestProject(base.RequestsMockTestCase):
|
||||
def test_update_project_v3(self):
|
||||
project_data = self._get_project_data(
|
||||
description=self.getUniqueString('projectDesc'))
|
||||
reference_req = project_data.json_request.copy()
|
||||
# Remove elements not actually sent in the update
|
||||
reference_req['project'].pop('domain_id')
|
||||
reference_req['project'].pop('name')
|
||||
reference_req['project'].pop('enabled')
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
@ -170,7 +180,7 @@ class TestProject(base.RequestsMockTestCase):
|
||||
dict(method='PATCH',
|
||||
uri=self.get_mock_url(append=[project_data.project_id]),
|
||||
status_code=200, json=project_data.json_response,
|
||||
validate=project_data.json_request)
|
||||
validate=dict(json=reference_req))
|
||||
])
|
||||
project = self.op_cloud.update_project(
|
||||
project_data.project_id,
|
||||
|
@ -588,7 +588,8 @@ class TestSecurityGroups(base.RequestsMockTestCase):
|
||||
dict(
|
||||
method='POST',
|
||||
uri='%s/servers/%s/action' % (fakes.COMPUTE_ENDPOINT, '1234'),
|
||||
validate={'addSecurityGroup': {'name': 'nova-sec-group'}},
|
||||
validate=dict(
|
||||
json={'addSecurityGroup': {'name': 'nova-sec-group'}}),
|
||||
status_code=202,
|
||||
),
|
||||
])
|
||||
@ -620,7 +621,8 @@ class TestSecurityGroups(base.RequestsMockTestCase):
|
||||
json={'security_groups': [neutron_grp_dict]}),
|
||||
dict(method='POST',
|
||||
uri='%s/servers/%s/action' % (fakes.COMPUTE_ENDPOINT, '1234'),
|
||||
validate={'addSecurityGroup': {'name': 'neutron-sec-group'}},
|
||||
validate=dict(
|
||||
json={'addSecurityGroup': {'name': 'neutron-sec-group'}}),
|
||||
status_code=202),
|
||||
])
|
||||
|
||||
@ -642,7 +644,8 @@ class TestSecurityGroups(base.RequestsMockTestCase):
|
||||
dict(
|
||||
method='POST',
|
||||
uri='%s/servers/%s/action' % (fakes.COMPUTE_ENDPOINT, '1234'),
|
||||
validate={'removeSecurityGroup': {'name': 'nova-sec-group'}},
|
||||
validate=dict(
|
||||
json={'removeSecurityGroup': {'name': 'nova-sec-group'}}),
|
||||
),
|
||||
])
|
||||
|
||||
@ -673,7 +676,7 @@ class TestSecurityGroups(base.RequestsMockTestCase):
|
||||
json={'security_groups': [neutron_grp_dict]}),
|
||||
dict(method='POST',
|
||||
uri='%s/servers/%s/action' % (fakes.COMPUTE_ENDPOINT, '1234'),
|
||||
validate=validate),
|
||||
validate=dict(json=validate)),
|
||||
])
|
||||
|
||||
self.assertTrue(self.cloud.remove_server_security_groups(
|
||||
|
@ -40,12 +40,14 @@ class CloudServices(base.RequestsMockTestCase):
|
||||
self.use_keystone_v2()
|
||||
service_data = self._get_service_data(name='a service', type='network',
|
||||
description='A test service')
|
||||
reference_req = service_data.json_request.copy()
|
||||
reference_req.pop('enabled')
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(base_url_append='OS-KSADM'),
|
||||
status_code=200,
|
||||
json=service_data.json_response_v2,
|
||||
validate=service_data.json_request),
|
||||
validate=dict(json={'OS-KSADM:service': reference_req})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(base_url_append='OS-KSADM',
|
||||
append=[service_data.service_id]),
|
||||
@ -74,7 +76,7 @@ class CloudServices(base.RequestsMockTestCase):
|
||||
uri=self.get_mock_url(),
|
||||
status_code=200,
|
||||
json=service_data.json_response_v3,
|
||||
validate=service_data.json_request),
|
||||
validate=dict(json={'service': service_data.json_request})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(append=[service_data.service_id]),
|
||||
status_code=200,
|
||||
@ -108,12 +110,15 @@ class CloudServices(base.RequestsMockTestCase):
|
||||
request['enabled'] = False
|
||||
resp = service_data.json_response_v3.copy()
|
||||
resp['enabled'] = False
|
||||
request.pop('description')
|
||||
request.pop('name')
|
||||
request.pop('type')
|
||||
self.register_uris([
|
||||
dict(method='PATCH',
|
||||
uri=self.get_mock_url(append=[service_data.service_id]),
|
||||
status_code=200,
|
||||
json=resp,
|
||||
validate=request),
|
||||
validate=dict(json={'service': request})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(append=[service_data.service_id]),
|
||||
status_code=200,
|
||||
|
@ -51,7 +51,8 @@ class TestUsers(base.RequestsMockTestCase):
|
||||
uri=self._get_keystone_mock_url(resource='users', v3=False),
|
||||
status_code=200,
|
||||
json=user_data.json_response,
|
||||
validate=dict(json=user_data.json_request))])
|
||||
validate=dict(json=user_data.json_request)),
|
||||
])
|
||||
|
||||
user = self.op_cloud.create_user(
|
||||
name=user_data.name, email=user_data.email,
|
||||
@ -71,7 +72,8 @@ class TestUsers(base.RequestsMockTestCase):
|
||||
dict(method='POST',
|
||||
uri=self._get_keystone_mock_url(resource='users'),
|
||||
status_code=200, json=user_data.json_response,
|
||||
validate=dict(json=user_data.json_request))])
|
||||
validate=dict(json=user_data.json_request)),
|
||||
])
|
||||
|
||||
user = self.op_cloud.create_user(
|
||||
name=user_data.name, email=user_data.email,
|
||||
|
Loading…
x
Reference in New Issue
Block a user