tests: Test client max metadata length config

Fixes #1730

Signed-off-by: Jussi Kukkonen <jkukkonen@vmware.com>
This commit is contained in:
Jussi Kukkonen 2022-04-14 10:22:17 +03:00
parent c47121b1cb
commit 17ec875cd8

View file

@ -18,6 +18,7 @@
from tests.repository_simulator import RepositorySimulator
from tuf.api.exceptions import (
BadVersionNumberError,
DownloadLengthMismatchError,
ExpiredMetadataError,
LengthOrHashMismatchError,
UnsignedMetadataError,
@ -777,6 +778,30 @@ def test_expired_metadata(self, mock_time: Mock) -> None:
md = Metadata.from_file(f"{self.metadata_dir}/{role}.json")
self.assertEqual(md.signed.version, 2)
def test_max_metadata_lengths(self) -> None:
"""Test that clients configured max metadata lengths are respected"""
# client has root v1 already: create a new one available for download
self.sim.root.version += 1
self.sim.publish_root()
config_vars = [
"root_max_length",
"timestamp_max_length",
"snapshot_max_length",
"targets_max_length",
]
# make sure going over any length limit raises DownloadLengthMismatchError
for var_name in config_vars:
updater = self._init_updater()
setattr(updater.config, var_name, 100)
with self.assertRaises(DownloadLengthMismatchError):
updater.refresh()
# All good with normal length limits
updater = self._init_updater()
updater.refresh()
if __name__ == "__main__":
if "--dump" in sys.argv: