Fix syntax error in import_delegations and improve coverage

This commit is contained in:
Vladimir Diaz 2017-07-18 16:09:22 -04:00
parent 4c9d278da5
commit 70bdfb9c78
No known key found for this signature in database
GPG key ID: 5DEE9B97B0E2289A
2 changed files with 18 additions and 4 deletions

View file

@ -533,9 +533,23 @@ def test_2__import_delegations(self):
self.repository_updater.metadata['current']['targets']\
['delegations']['keys'][existing_keyid]['keytype'] = 'ed25519'
# Verify that _import_delegations() raises an exception if it fails to add
# one of the roles loaded from parent role's 'delegations'.
# Verify that _import_delegations() raises an exception if one of the
# delegated keys is malformed.
valid_keyval = self.repository_updater.metadata['current']['targets']\
['delegations']['keys'][existing_keyid]['keyval']
self.repository_updater.metadata['current']['targets']\
['delegations']['keys'][existing_keyid]['keyval'] = 1
self.assertRaises(securesystemslib.exceptions.FormatError, self.repository_updater._import_delegations, 'targets')
self.repository_updater.metadata['current']['targets']\
['delegations']['keys'][existing_keyid]['keyval'] = valid_keyval
# Verify that _import_delegations() raises an exception if one of the
# delegated roles is malformed.
self.repository_updater.metadata['current']['targets']\
['delegations']['roles'][0]['name'] = 1
self.assertRaises(securesystemslib.exceptions.FormatError, self.repository_updater._import_delegations, 'targets')

View file

@ -540,11 +540,11 @@ def _import_delegations(self, parent_role):
# Iterate the keys of the delegated roles of 'parent_role' and load them.
for keyid, keyinfo in six.iteritems(keys_info):
if keyinfo['keytype'] in ['rsa', 'ed25519']:
key, keyids = securesystemslib.keys.format_metadata_to_key(keyinfo)
# We specify the keyid to ensure that it's the correct keyid
# for the key.
try:
key, keyids = securesystemslib.keys.format_metadata_to_key(keyinfo)
for keyid in keyids:
key['keyid'] = keyid
tuf.keydb.add_key(key, keyid=None, repository_name=self.repository_name)
@ -574,7 +574,7 @@ def _import_delegations(self, parent_role):
logger.warning('Role already exists: ' + rolename)
except:
logger.exception('Failed to add delegated role: ' + rolename + '.')
logger.exception('Failed to add delegated role: ' + repr(rolename) + '.')
raise