MetadataBundle: Change ValueErrors to RuntimeErrors

As the metadata type is no longer an argument, these are not
ValueErrors.

Signed-off-by: Jussi Kukkonen <jkukkonen@vmware.com>
This commit is contained in:
Jussi Kukkonen 2021-05-14 16:25:01 +03:00
parent f8b714d167
commit 2d155faae6
2 changed files with 29 additions and 9 deletions

View file

@ -14,15 +14,35 @@ class TestMetadataBundle(unittest.TestCase):
def test_local_load(self):
repo_dir = os.path.join(os.getcwd(), 'repository_data', 'repository', 'metadata')
# test loading all local metadata succesfully
bundle = MetadataBundle(repo_dir)
bundle.root_update_finished()
self.assertTrue(bundle.load_local_timestamp())
self.assertTrue(bundle.load_local_snapshot())
self.assertTrue(bundle.load_local_targets())
self.assertTrue(bundle.load_local_delegated_targets('role1','targets'))
self.assertTrue(bundle.load_local_delegated_targets('role2','role1'))
# Make sure loading metadata without its "dependencies" fails
bundle = MetadataBundle(repo_dir)
with self.assertRaises(RuntimeError):
bundle.load_local_timestamp()
bundle.root_update_finished()
with self.assertRaises(RuntimeError):
bundle.load_local_snapshot()
self.assertTrue(bundle.load_local_timestamp())
with self.assertRaises(RuntimeError):
bundle.load_local_targets()
self.assertTrue(bundle.load_local_snapshot())
with self.assertRaises(RuntimeError):
bundle.load_local_delegated_targets('role1','targets')
self.assertTrue(bundle.load_local_targets())
with self.assertRaises(RuntimeError):
bundle.load_local_delegated_targets('role2','role1')
self.assertTrue(bundle.load_local_delegated_targets('role1','targets'))
self.assertTrue(bundle.load_local_delegated_targets('role2','role1'))
if __name__ == '__main__':
utils.configure_test_logging(sys.argv)

View file

@ -204,7 +204,7 @@ def update_root(self, data: bytes):
def root_update_finished(self):
"""Mark root metadata as final."""
if self.reference_time is not None:
raise ValueError("Root update is already finished")
raise RuntimeError("Root update is already finished")
# Store our reference "now", verify root expiry
self.reference_time = datetime.utcnow()
@ -306,7 +306,7 @@ def _load_intermediate_root(self, data: bytes):
Note that an expired intermediate root is considered valid: expiry is
only checked for the final root in root_update_finished()."""
if self.reference_time is not None:
raise ValueError("Cannot update root after root update is finished")
raise RuntimeError("Cannot update root after root update is finished")
try:
new_root = Metadata.from_bytes(data)
@ -341,9 +341,9 @@ def _load_timestamp(self, data: bytes):
"""Verifies and loads 'data' as new timestamp metadata."""
if self.reference_time is None:
# root_update_finished() not called
raise ValueError("Cannot update timestamp before root")
raise RuntimeError("Cannot update timestamp before root")
if self.snapshot is not None:
raise ValueError("Cannot update timestamp after snapshot")
raise RuntimeError("Cannot update timestamp after snapshot")
try:
new_timestamp = Metadata.from_bytes(data)
@ -391,9 +391,9 @@ def _load_snapshot(self, data: bytes): # pylint: disable=too-many-branches
"""Verifies and loads 'data' as new snapshot metadata."""
if self.timestamp is None:
raise ValueError("Cannot update snapshot before timestamp")
raise RuntimeError("Cannot update snapshot before timestamp")
if self.targets is not None:
raise ValueError("Cannot update snapshot after targets")
raise RuntimeError("Cannot update snapshot after targets")
meta = self.timestamp.signed.meta["snapshot.json"]
@ -462,11 +462,11 @@ def _load_delegated_targets(
Raises if verification fails
"""
if self.snapshot is None:
raise ValueError("Cannot load targets before snapshot")
raise RuntimeError("Cannot load targets before snapshot")
delegator = self.get(delegator_name)
if delegator is None:
raise ValueError("Cannot load targets before delegator")
raise RuntimeError("Cannot load targets before delegator")
# Verify against the hashes in snapshot, if any
meta = self.snapshot.signed.meta.get(f"{role_name}.json")