Use 'id' instead of 'protocol_id' in federation protocol tests

The actual attribute returned in object references of the /protocols API
is 'id', as in all other keystone APIs that return objects. The
implementation of new_ref() here doesn't actually include an 'id'
reference though, and goes out of it's way to test the wrong thing. This
patch fix that, eliminates the workarounds, and does a touch of
refactoring to bring these tests in line with tests of other client
managers.

Change-Id: I9a272b3ef91934e780106d89b5091b4bfb87ad29
Closes-Bug: 1453847
This commit is contained in:
Dolph Mathews
2015-05-11 15:40:33 +00:00
parent 91de8422de
commit 3f757656a4

View File

@@ -137,17 +137,16 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):
""" """
response = copy.deepcopy(ref) response = copy.deepcopy(ref)
response['id'] = response.pop('protocol_id')
del response['identity_provider'] del response['identity_provider']
return response return response
def new_ref(self, **kwargs): def new_ref(self, **kwargs):
kwargs.setdefault('id', uuid.uuid4().hex)
kwargs.setdefault('mapping', uuid.uuid4().hex) kwargs.setdefault('mapping', uuid.uuid4().hex)
kwargs.setdefault('identity_provider', uuid.uuid4().hex) kwargs.setdefault('identity_provider', uuid.uuid4().hex)
kwargs.setdefault('protocol_id', uuid.uuid4().hex)
return kwargs return kwargs
def build_parts(self, identity_provider, protocol_id=None): def build_parts(self, idp_id, protocol_id=None):
"""Build array used to construct mocking URL. """Build array used to construct mocking URL.
Construct and return array with URL parts later used Construct and return array with URL parts later used
@@ -158,7 +157,7 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):
""" """
parts = ['OS-FEDERATION', 'identity_providers', parts = ['OS-FEDERATION', 'identity_providers',
identity_provider, 'protocols'] idp_id, 'protocols']
if protocol_id: if protocol_id:
parts.append(protocol_id) parts.append(protocol_id)
return parts return parts
@@ -203,15 +202,19 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):
$identity_provider/protocols/$protocol $identity_provider/protocols/$protocol
""" """
request_args = self.new_ref() ref = self.new_ref()
expected = self._transform_to_response(request_args) expected = self._transform_to_response(ref)
parts = self.build_parts(request_args['identity_provider'], parts = self.build_parts(
request_args['protocol_id']) idp_id=ref['identity_provider'],
protocol_id=ref['id'])
self.stub_entity('PUT', entity=expected, self.stub_entity('PUT', entity=expected,
parts=parts, status_code=201) parts=parts, status_code=201)
returned = self.manager.create(**request_args) returned = self.manager.create(
protocol_id=ref['id'],
identity_provider=ref['identity_provider'],
mapping=ref['mapping'])
self.assertEqual(expected, returned.to_dict()) self.assertEqual(expected, returned.to_dict())
request_body = {'mapping_id': request_args['mapping']} request_body = {'mapping_id': ref['mapping']}
self.assertEntityRequestBodyIs(request_body) self.assertEntityRequestBodyIs(request_body)
def test_get(self): def test_get(self):
@@ -221,16 +224,17 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):
$identity_provider/protocols/$protocol $identity_provider/protocols/$protocol
""" """
request_args = self.new_ref() ref = self.new_ref()
expected = self._transform_to_response(request_args) expected = self._transform_to_response(ref)
parts = self.build_parts(request_args['identity_provider'], parts = self.build_parts(
request_args['protocol_id']) idp_id=ref['identity_provider'],
protocol_id=ref['id'])
self.stub_entity('GET', entity=expected, self.stub_entity('GET', entity=expected,
parts=parts, status_code=201) parts=parts, status_code=201)
returned = self.manager.get(request_args['identity_provider'], returned = self.manager.get(ref['identity_provider'],
request_args['protocol_id']) ref['id'])
self.assertIsInstance(returned, self.model) self.assertIsInstance(returned, self.model)
self.assertEqual(expected, returned.to_dict()) self.assertEqual(expected, returned.to_dict())
@@ -241,14 +245,15 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):
$identity_provider/protocols/$protocol $identity_provider/protocols/$protocol
""" """
request_args = self.new_ref() ref = self.new_ref()
parts = self.build_parts(request_args['identity_provider'], parts = self.build_parts(
request_args['protocol_id']) idp_id=ref['identity_provider'],
protocol_id=ref['id'])
self.stub_entity('DELETE', parts=parts, status_code=204) self.stub_entity('DELETE', parts=parts, status_code=204)
self.manager.delete(request_args['identity_provider'], self.manager.delete(ref['identity_provider'],
request_args['protocol_id']) ref['id'])
def test_list(self): def test_list(self):
"""Test listing all federation protocols tied to the Identity Provider. """Test listing all federation protocols tied to the Identity Provider.
@@ -263,13 +268,13 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):
'mapping_id': uuid.uuid4().hex 'mapping_id': uuid.uuid4().hex
} }
request_args = self.new_ref() ref = self.new_ref()
expected = [_ref_protocols() for _ in range(3)] expected = [_ref_protocols() for _ in range(3)]
parts = self.build_parts(request_args['identity_provider']) parts = self.build_parts(idp_id=ref['identity_provider'])
self.stub_entity('GET', parts=parts, self.stub_entity('GET', parts=parts,
entity=expected, status_code=200) entity=expected, status_code=200)
returned = self.manager.list(request_args['identity_provider']) returned = self.manager.list(ref['identity_provider'])
for obj, ref_obj in zip(returned, expected): for obj, ref_obj in zip(returned, expected):
self.assertEqual(obj.to_dict(), ref_obj) self.assertEqual(obj.to_dict(), ref_obj)
@@ -293,21 +298,22 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):
$identity_provider/protocols/$protocol $identity_provider/protocols/$protocol
""" """
request_args = self.new_ref() ref = self.new_ref()
expected = self._transform_to_response(request_args) expected = self._transform_to_response(ref)
parts = self.build_parts(request_args['identity_provider'], parts = self.build_parts(
request_args['protocol_id']) idp_id=ref['identity_provider'],
protocol_id=ref['id'])
self.stub_entity('PATCH', parts=parts, self.stub_entity('PATCH', parts=parts,
entity=expected, status_code=200) entity=expected, status_code=200)
returned = self.manager.update(request_args['identity_provider'], returned = self.manager.update(ref['identity_provider'],
request_args['protocol_id'], ref['id'],
mapping=request_args['mapping']) mapping=ref['mapping'])
self.assertIsInstance(returned, self.model) self.assertIsInstance(returned, self.model)
self.assertEqual(expected, returned.to_dict()) self.assertEqual(expected, returned.to_dict())
request_body = {'mapping_id': request_args['mapping']} request_body = {'mapping_id': ref['mapping']}
self.assertEntityRequestBodyIs(request_body) self.assertEntityRequestBodyIs(request_body)