Add code coverage for load_repository

This commit is contained in:
Vladimir Diaz 2016-10-25 17:20:44 -04:00
parent 321b4af058
commit aad5c94b04
3 changed files with 23 additions and 5 deletions

View file

@ -1542,9 +1542,20 @@ def test_load_repository(self):
temporary_directory = tempfile.mkdtemp(dir=self.temporary_directory)
original_repository_directory = os.path.join('repository_data',
'repository')
repository_directory = os.path.join(temporary_directory, 'repository')
metadata_directory = os.path.join(repository_directory, 'metadata.staged')
shutil.copytree(original_repository_directory, repository_directory)
# For testing purposes, add a metadata file with an extension that is
# not supported, and another with invalid JSON content.
invalid_metadata_file = os.path.join(metadata_directory, 'root.xml')
root_file = os.path.join(metadata_directory, 'root.json')
shutil.copyfile(root_file, invalid_metadata_file)
bad_root_content = os.path.join(metadata_directory, 'root_bad.json')
with open(bad_root_content, 'wb') as file_object:
file_object.write('bad')
repository = repo_tool.load_repository(repository_directory)
self.assertTrue(isinstance(repository, repo_tool.Repository))
@ -1561,8 +1572,8 @@ def test_load_repository(self):
self.assertTrue(len(repository.timestamp.keys))
self.assertEqual(1, repository.targets('role1').version)
# Assumed the targets (tuf/tests/repository_data/) role contains 'file1.txt'
# and 'file2.txt'.
# It is assumed that the targets (tuf/tests/repository_data/) role contains
# 'file1.txt' and 'file2.txt'.
self.assertTrue('/file1.txt' in repository.targets.target_files)
self.assertTrue('/file2.txt' in repository.targets.target_files)
self.assertTrue('/file3.txt' in repository.targets('role1').target_files)

View file

@ -2887,6 +2887,8 @@ def load_repository(repository_directory):
metadata_name = metadata_name[:-extension_length]
else:
logger.debug('Skipping file with unsupported metadata'
' extension: ' + repr(metadata_path))
continue
# Skip top-level roles, only interested in delegated roles now that the
@ -2906,7 +2908,9 @@ def load_repository(repository_directory):
try:
signable = tuf.util.load_json_file(metadata_path)
except (ValueError, IOError):
except (tuf.Error, ValueError, IOError):
logger.debug('Tried to load metadata with invalid JSON'
' content: ' + repr(metadata_path))
continue
metadata_object = signable['signed']
@ -2931,6 +2935,9 @@ def load_repository(repository_directory):
if os.path.exists(metadata_path + '.gz'):
roleinfo['compressions'].append('gz')
else:
logger.debug('A compressed version does not exist.')
tuf.roledb.add_role(metadata_name, roleinfo)
loaded_metadata.append(metadata_name)

View file

@ -917,7 +917,7 @@ def load_json_file(filepath):
tuf.Error: If 'filepath' cannot be deserialized to a Python object.
IOError in case of runtime IO exceptions.
IOError: If there are runtime IO exceptions.
<Side Effects>
None.