diff --git a/tests/test_api.py b/tests/test_api.py index 964803ea..85ba9721 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -91,15 +91,10 @@ def test_generic_read(self): path = os.path.join(self.repo_dir, 'metadata', metadata + '.json') metadata_obj = Metadata.read_from_json(path) - # Assert that generic method ... - # ... instantiates the right inner class for each metadata type + # Assert that generic method instantiates the right inner class for + # each metadata type self.assertTrue( isinstance(metadata_obj.signed, inner_metadata_cls)) - # ... and reads the same metadata file as the corresponding method - # on the inner class would do (compare their dict representation) - self.assertDictEqual( - metadata_obj.as_dict(), - inner_metadata_cls.read_from_json(path).as_dict()) # Assert that it chokes correctly on an unknown metadata type bad_metadata_path = 'bad-metadata.json' @@ -185,7 +180,7 @@ def test_metadata_base(self): # with real data snapshot_path = os.path.join( self.repo_dir, 'metadata', 'snapshot.json') - md = Snapshot.read_from_json(snapshot_path) + md = Metadata.read_from_json(snapshot_path) self.assertEqual(md.signed.version, 1) md.signed.bump_version() @@ -200,7 +195,7 @@ def test_metadata_base(self): def test_metadata_snapshot(self): snapshot_path = os.path.join( self.repo_dir, 'metadata', 'snapshot.json') - snapshot = Snapshot.read_from_json(snapshot_path) + snapshot = Metadata.read_from_json(snapshot_path) # Create a dict representing what we expect the updated data to be fileinfo = snapshot.signed.meta @@ -216,7 +211,7 @@ def test_metadata_snapshot(self): def test_metadata_timestamp(self): timestamp_path = os.path.join( self.repo_dir, 'metadata', 'timestamp.json') - timestamp = Timestamp.read_from_json(timestamp_path) + timestamp = Metadata.read_from_json(timestamp_path) self.assertEqual(timestamp.signed.version, 1) timestamp.signed.bump_version() diff --git a/tuf/api/metadata.py b/tuf/api/metadata.py index d239c8b6..7867feea 100644 --- a/tuf/api/metadata.py +++ b/tuf/api/metadata.py @@ -32,9 +32,6 @@ from securesystemslib.util import load_json_file, persist_temp_file from securesystemslib.storage import StorageBackendInterface from securesystemslib.keys import create_signature, verify_signature -from tuf.repository_lib import ( - _strip_version_number -) import iso8601 import tuf.formats @@ -288,46 +285,6 @@ def as_dict(self) -> JsonDict: 'expires': self.expires } - @classmethod - def read_from_json( - cls, filename: str, - storage_backend: Optional[StorageBackendInterface] = None - ) -> Metadata: - signable = load_json_file(filename, storage_backend) - """Loads corresponding JSON-formatted metadata from file storage. - - Arguments: - filename: The path to read the file from. - storage_backend: An object that implements - securesystemslib.storage.StorageBackendInterface. Per default - a (local) FilesystemBackend is used. - - Raises: - securesystemslib.exceptions.StorageError: The file cannot be read. - securesystemslib.exceptions.Error, ValueError: The metadata cannot - be parsed. - - Returns: - A TUF Metadata object whose signed attribute contains an object - of this class. - - """ - # FIXME: It feels dirty to access signable["signed"]["version"] here in - # order to do this check, and also a bit random (there are likely other - # things to check), but later we don't have the filename anymore. If we - # want to stick to the check, which seems reasonable, we should maybe - # think of a better place. - _, fn_prefix = _strip_version_number(filename, True) - if fn_prefix and fn_prefix != signable['signed']['version']: - raise ValueError( - f'version filename prefix ({fn_prefix}) must align with ' - f'version in metadata ({signable["signed"]["version"]}).') - - return Metadata( - signed=cls(**signable['signed']), - signatures=signable['signatures']) - - class Timestamp(Signed): """A container for the signed part of timestamp metadata.