Initialize optional attributes in CA object

When executing "barbican ca list", the client throws an attribute
error if a CA does not contain a meta description field.  This
field is optional.  This fix initializes the _description attribute
to None to prevent the error.

Change-Id: Ic861fe67c59c5109c0f09db46ad229a789d2e510
Closes-bug: #1502928
This commit is contained in:
Dave McCowan 2015-10-05 10:44:40 -04:00
parent 3830d934e9
commit 020e24061b
2 changed files with 28 additions and 6 deletions

View File

@ -136,6 +136,8 @@ class CA(CAFormatter):
def _fill_from_data(self, meta=None, expiration=None,
plugin_name=None, plugin_ca_id=None, created=None,
updated=None, status=None, creator_id=None):
self._name = None
self._description = None
if meta:
for s in meta:
key = list(s.keys())[0]

View File

@ -19,9 +19,9 @@ from barbicanclient import cas
class CAData(object):
def __init__(self):
def __init__(self, description=u'Test CA description'):
self.name = u'Test CA'
self.description = u'Test CA description'
self.description = description
self.plugin_name = u'Test CA Plugin'
self.plugin_ca_id = 'plugin_uuid'
@ -29,10 +29,10 @@ class CAData(object):
self.expiration = str(now)
self.created = str(now)
self.meta = [
{'name': self.name},
{'description': self.description}
]
self.meta = []
self.meta.append({'name': self.name})
if self.description:
self.meta.append({'description': self.description})
self.ca_dict = {'meta': self.meta,
'status': u'ACTIVE',
@ -111,3 +111,23 @@ class WhenTestingCAs(test_client.BaseEntityResource):
def test_should_fail_get_invalid_ca(self):
self.assertRaises(ValueError, self.manager.get,
**{'ca_ref': '12345'})
def test_should_get_ca_that_has_no_meta_description(self):
self.ca = CAData(description=None)
data = self.ca.get_dict(self.entity_href)
m = self.responses.get(self.entity_href, json=data)
ca = self.manager.get(ca_ref=self.entity_href)
self.assertIsInstance(ca, cas.CA)
self.assertEqual(self.entity_href, ca._ca_ref)
# Verify GET wasn't called yet
self.assertFalse(m.called)
# Get description from CA, check it is None
self.assertIsNone(self.ca.description)
self.assertIsNone(ca.description)
# Verify the correct URL was used to make the GET call
self.assertEqual(self.entity_href, m.last_request.url)