Skip to content

Commit c2087b3

Browse files
author
Lukas Pühringer
authored
Merge pull request #1955 from jku/test-client-metadata-length-limits
tests: Test client max metadata length config
2 parents 8e526d7 + 17ec875 commit c2087b3

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,
@@ -779,6 +780,30 @@ def test_expired_metadata(self, mock_time: Mock) -> None:
779780
)
780781
self.assertEqual(md.signed.version, 2)
781782

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

783808
if __name__ == "__main__":
784809
if "--dump" in sys.argv:

0 commit comments

Comments
 (0)