Skip to content

Commit 17ec875

Browse files
author
Jussi Kukkonen
committed
tests: Test client max metadata length config
Fixes theupdateframework#1730 Signed-off-by: Jussi Kukkonen <[email protected]>
1 parent c47121b commit 17ec875

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

tests/test_updater_top_level_update.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from tests.repository_simulator import RepositorySimulator
1919
from tuf.api.exceptions import (
2020
BadVersionNumberError,
21+
DownloadLengthMismatchError,
2122
ExpiredMetadataError,
2223
LengthOrHashMismatchError,
2324
UnsignedMetadataError,
@@ -777,6 +778,30 @@ def test_expired_metadata(self, mock_time: Mock) -> None:
777778
md = Metadata.from_file(f"{self.metadata_dir}/{role}.json")
778779
self.assertEqual(md.signed.version, 2)
779780

781+
def test_max_metadata_lengths(self) -> None:
782+
"""Test that clients configured max metadata lengths are respected"""
783+
784+
# client has root v1 already: create a new one available for download
785+
self.sim.root.version += 1
786+
self.sim.publish_root()
787+
788+
config_vars = [
789+
"root_max_length",
790+
"timestamp_max_length",
791+
"snapshot_max_length",
792+
"targets_max_length",
793+
]
794+
# make sure going over any length limit raises DownloadLengthMismatchError
795+
for var_name in config_vars:
796+
updater = self._init_updater()
797+
setattr(updater.config, var_name, 100)
798+
with self.assertRaises(DownloadLengthMismatchError):
799+
updater.refresh()
800+
801+
# All good with normal length limits
802+
updater = self._init_updater()
803+
updater.refresh()
804+
780805

781806
if __name__ == "__main__":
782807
if "--dump" in sys.argv:

0 commit comments

Comments
 (0)