def test_6_generate_release_metadata(self): """ test_6_generate_release_metadata() uses previously tested singnerlib's build_root_file(), build_target_file() and get_metadata_file_info. In order to use generate_release_metadata() we need to have root.txt and targets.txt in the metadata directory, plus we need to have targets directory (with target files/directories). """ # SETUP original_get_key = tuf.repo.keystore.get_key # Create root.txt and targets.txt as described above. meta_dir = self._create_root_and_targets_meta_files() # TESTS # Test: Run generate_release_metadata(). release_meta = signerlib.generate_release_metadata(meta_dir) # Verify that created metadata dictionary corresponds to # SIGNABLE_SCHEMA and its 'signed' value to RELEASE_SCHEMA. self.assertTrue(formats.SIGNABLE_SCHEMA.matches(release_meta)) self.assertTrue(formats.RELEASE_SCHEMA.matches(release_meta["signed"])) # Test: exceptions. self.assertRaises(tuf.Error, signerlib.generate_release_metadata, self.random_path()) self.assertRaises(tuf.FormatError, signerlib.generate_release_metadata, ["junk"]) # RESTORE tuf.repo.keystore.get_key = original_get_key
def test_6_generate_release_metadata(self): """ test_6_generate_release_metadata() uses previously tested singnerlib's build_root_file(), build_targets_file() and get_metadata_file_info. In order to use generate_release_metadata() we need to have root.txt and targets.txt in the metadata directory, plus we need to have targets directory (with target files/directories). """ # SETUP original_get_key = tuf.repo.keystore.get_key version = 8 expiration_date = '1985-10-26 01:20:00 UTC' # Create root.txt and targets.txt as described above. meta_dir = self._create_root_and_targets_meta_files() # TESTS # Test: Run generate_release_metadata(). release_meta = signerlib.generate_release_metadata(meta_dir, version, expiration_date) # Verify that created metadata dictionary corresponds to # SIGNABLE_SCHEMA and its 'signed' value to RELEASE_SCHEMA. self.assertTrue(formats.SIGNABLE_SCHEMA.matches(release_meta)) self.assertTrue(formats.RELEASE_SCHEMA.matches(release_meta['signed'])) # Test: exceptions. self.assertRaises(tuf.Error, signerlib.generate_release_metadata, self.random_path(), version, expiration_date) self.assertRaises(tuf.FormatError, signerlib.generate_release_metadata, ['junk'], version, expiration_date) self.assertRaises(tuf.Error, signerlib.generate_release_metadata, meta_dir, self.random_string(), expiration_date) self.assertRaises(tuf.Error, signerlib.generate_release_metadata, meta_dir, version, self.random_string()) # RESTORE tuf.repo.keystore.get_key = original_get_key
def test_6_generate_release_metadata(self): """ test_6_generate_release_metadata() uses previously tested singnerlib's build_root_file(), build_target_file() and get_metadata_file_info. In order to use generate_release_metadata() we need to have root.txt and targets.txt in the metadata directory, plus we need to have targets directory (with target files/directories). """ # SETUP # Create root.txt and targets.txt as described above. meta_dir = self._create_root_and_targets_meta_files() # TESTS # Test: Run generate_release_metadata(). try: release_meta = signerlib.generate_release_metadata(meta_dir) except Exception, e: raise
def _get_role_info(self, role, directory=None): """ This method generates role's metadata dictionary, it uses previously tested signerlib's methods. Note that at everything maintains the order. Nothing that has not been tested previously is used in any of the following conditions. <Arguments> directory: Directory of a config file. <Returns> Tuple (role's metadata(not signed), role's keyids, directory, optional) """ if not directory: # Create a temp directory to hold a config file. directory = self.make_temp_directory() # Get role's keyids. role_keyids = self.top_level_role_info[role]["keyids"] if role == "root": # Create config file using previously tested build_config_file(). config_path = signerlib.build_config_file(directory, 365, self.top_level_role_info) # Patch keystore's get_key method. tuf.repo.keystore.get_key = self.get_keystore_key # Create root metadata. root_meta = signerlib.generate_root_metadata(config_path) return root_meta, role_keyids, directory, config_path elif role == "targets": # Generate target files. # 'repo_dir' represents repository base. # 'target_files' represents a list of relative target paths. repo_dir, target_files = self.make_temp_directory_with_data_files(directory=directory) # Patch keystore's get_key method. tuf.repo.keystore.get_key = self.get_keystore_key # Run the 'signerlib.generate_targets_metadata'. Test its return value. # Its return value should correspond to tuf.formats.SIGNABLE_SCHEMA targets_meta = signerlib.generate_targets_metadata(repo_dir, target_files) return targets_meta, role_keyids, repo_dir, target_files elif role == "release": # Generate 'root.txt' and 'targets.txt' with targets directory in # the repository containing files and directories. meta_dir = self._create_root_and_targets_meta_files() release_meta = signerlib.generate_release_metadata(meta_dir) return release_meta, role_keyids, meta_dir elif role == "timestamp": # Generate 'release.txt' which includes creation of 'root.txt', # 'targets.txt' and target files. junk, release_keyids, meta_dir = self._get_role_info("release") signerlib.build_release_file(release_keyids, meta_dir) release_filepath = os.path.join(meta_dir, "release.txt") # Generate timestamp metadata. timestamp_meta = signerlib.generate_timestamp_metadata(release_filepath) return timestamp_meta, role_keyids, meta_dir else: print "\nUnrecognized top-level role."
def _get_role_info(self, role, directory=None): """ This method generates role's metadata dictionary, it uses previously tested signerlib's methods. Note that at everything maintains the order. Nothing that has not been tested previously is used in any of the following conditions. <Arguments> directory: Directory of a config file. <Returns> Tuple (role's metadata(not signed), role's keyids, directory, optional) """ # The version number and expiration date for metadata files created. version = 8 expiration_date = '1985-10-26 01:20:00 UTC' if not directory: # Create a temp directory to hold a config file. directory = self.make_temp_directory() # Get role's keyids. role_keyids = self.top_level_role_info[role]['keyids'] if role == 'root': # Create config file using previously tested build_config_file(). config_path = signerlib.build_config_file(directory, 365, self.top_level_role_info) # Patch keystore's get_key method. tuf.repo.keystore.get_key = self.get_keystore_key # Create root metadata. root_meta = signerlib.generate_root_metadata(config_path, version) return root_meta, role_keyids, directory, config_path elif role == 'targets': # Generate target files. # 'repo_dir' represents repository base. # 'target_files' represents a list of relative target paths. repo_dir, target_files = \ self.make_temp_directory_with_data_files(directory=directory) # Patch keystore's get_key method. tuf.repo.keystore.get_key = self.get_keystore_key # Run the 'signerlib.generate_targets_metadata'. Test its return value. # Its return value should correspond to tuf.formats.SIGNABLE_SCHEMA targets_meta = signerlib.generate_targets_metadata(repo_dir, target_files, version, expiration_date) return targets_meta, role_keyids, repo_dir, target_files elif role == 'release': # Generate 'root.txt' and 'targets.txt' with targets directory in # the repository containing files and directories. meta_dir = self._create_root_and_targets_meta_files() release_meta = signerlib.generate_release_metadata(meta_dir, version, expiration_date) return release_meta, role_keyids, meta_dir elif role == 'timestamp': # Generate 'release.txt' which includes creation of 'root.txt', # 'targets.txt' and target files. junk, release_keyids, meta_dir = self._get_role_info('release') signerlib.build_release_file(release_keyids, meta_dir, version, expiration_date) release_filepath = os.path.join(meta_dir, 'release.txt') # Generate timestamp metadata. timestamp_meta = signerlib.generate_timestamp_metadata(release_filepath, version, expiration_date) return timestamp_meta, role_keyids, meta_dir else: logger.warning('\nUnrecognized top-level role.')