def test_generate_snapshot_metadata(self): # Test normal case. temporary_directory = tempfile.mkdtemp(dir=self.temporary_directory) original_repository_path = os.path.join('repository_data', 'repository') repository_directory = os.path.join(temporary_directory, 'repository') shutil.copytree(original_repository_path, repository_directory) metadata_directory = os.path.join(repository_directory, repo_lib.METADATA_STAGED_DIRECTORY_NAME) targets_directory = os.path.join(repository_directory, repo_lib.TARGETS_DIRECTORY_NAME) targets_filename = os.path.join(metadata_directory, repo_lib.TARGETS_FILENAME) version = 1 expiration_date = '1985-10-21T13:20:00Z' # Load a valid repository so that top-level roles exist in roledb and # generate_snapshot_metadata() has roles to specify in snapshot metadata. storage_backend = securesystemslib.storage.FilesystemBackend() repository = repo_tool.Repository(repository_directory, metadata_directory, targets_directory, storage_backend) repository_junk = repo_tool.load_repository(repository_directory) # For testing purposes, store an invalid metadata file in the metadata directory # to verify that it isn't loaded by generate_snapshot_metadata(). Unknown # metadata file extensions should be ignored. invalid_metadata_file = os.path.join(metadata_directory, 'role_file.xml') with open(invalid_metadata_file, 'w') as file_object: file_object.write('bad extension on metadata file') targets_filename = 'targets' snapshot_metadata = \ repo_lib.generate_snapshot_metadata(metadata_directory, version, expiration_date, targets_filename, storage_backend, consistent_snapshot=False) self.assertTrue(tuf.formats.SNAPSHOT_SCHEMA.matches(snapshot_metadata)) # Test improperly formatted arguments. self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_snapshot_metadata, 3, version, expiration_date, targets_filename, consistent_snapshot=False, storage_backend=storage_backend) self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_snapshot_metadata, metadata_directory, '3', expiration_date, targets_filename, storage_backend, consistent_snapshot=False) self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_snapshot_metadata, metadata_directory, version, '3', targets_filename, storage_backend, consistent_snapshot=False) self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_snapshot_metadata, metadata_directory, version, expiration_date, 3, storage_backend, consistent_snapshot=False) self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_snapshot_metadata, metadata_directory, version, expiration_date, targets_filename, 3, storage_backend)
def test_generate_timestamp_metadata(self): # Test normal case. repository_name = 'test_repository' temporary_directory = tempfile.mkdtemp(dir=self.temporary_directory) original_repository_path = os.path.join('repository_data', 'repository') repository_directory = os.path.join(temporary_directory, 'repository') shutil.copytree(original_repository_path, repository_directory) metadata_directory = os.path.join( repository_directory, repo_lib.METADATA_STAGED_DIRECTORY_NAME) targets_directory = os.path.join(repository_directory, repo_lib.TARGETS_DIRECTORY_NAME) snapshot_filename = os.path.join(metadata_directory, repo_lib.SNAPSHOT_FILENAME) # Set valid generate_timestamp_metadata() arguments. version = 1 expiration_date = '1985-10-21T13:20:00Z' # Load a valid repository so that top-level roles exist in roledb and # generate_snapshot_metadata() has roles to specify in snapshot metadata. repository = repo_tool.Repository(repository_directory, metadata_directory, targets_directory, repository_name) repository_junk = repo_tool.load_repository(repository_directory, repository_name) timestamp_metadata = repo_lib.generate_timestamp_metadata( snapshot_filename, version, expiration_date, repository_name) self.assertTrue( tuf.formats.TIMESTAMP_SCHEMA.matches(timestamp_metadata)) # Test improperly formatted arguments. self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_timestamp_metadata, 3, version, expiration_date, repository_name) self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_timestamp_metadata, snapshot_filename, '3', expiration_date, repository_name) self.assertRaises(securesystemslib.exceptions.FormatError, repo_lib.generate_timestamp_metadata, snapshot_filename, version, '3', repository_name)
def test_init(self): # Test normal case. storage_backend = securesystemslib.storage.FilesystemBackend() repository = repo_tool.Repository('repository_directory/', 'metadata_directory/', 'targets_directory/', storage_backend) self.assertTrue(isinstance(repository.root, repo_tool.Root)) self.assertTrue(isinstance(repository.snapshot, repo_tool.Snapshot)) self.assertTrue(isinstance(repository.timestamp, repo_tool.Timestamp)) self.assertTrue(isinstance(repository.targets, repo_tool.Targets)) # Test improperly formatted arguments. self.assertRaises(securesystemslib.exceptions.FormatError, repo_tool.Repository, 3, 'metadata_directory/', 'targets_directory', storage_backend) self.assertRaises(securesystemslib.exceptions.FormatError, repo_tool.Repository, 'repository_directory', 3, 'targets_directory', storage_backend) self.assertRaises(securesystemslib.exceptions.FormatError, repo_tool.Repository, 'repository_directory', 'metadata_directory', storage_backend, 3)