Skip to content

Commit ab51493

Browse files
committed
Tests for new validation functions in updater.py
Signed-off-by: Martin Vrachev <[email protected]>
1 parent 8afd335 commit ab51493

File tree

2 files changed

+51
-4
lines changed

2 files changed

+51
-4
lines changed

tests/test_endless_data_attack.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,10 @@ def test_with_tuf(self):
269269
self.repository_updater.refresh()
270270

271271
except tuf.exceptions.NoWorkingMirrorError as exception:
272-
for mirror_url, mirror_error in six.iteritems(exception.mirror_errors):
273-
self.assertTrue(isinstance(mirror_error, securesystemslib.exceptions.Error))
272+
for _, mirror_error in six.iteritems(exception.mirror_errors):
273+
# Throw tuf.exceptions.InvalidMetadataJSONError
274+
# because the metadata is not a valud JSON file.
275+
self.assertTrue(isinstance(mirror_error, tuf.exceptions.InvalidMetadataJSONError))
274276

275277
else:
276278
self.fail('TUF did not prevent an endless data attack.')

tests/test_updater.py

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,10 +1742,55 @@ def test_11__verify_metadata_file(self):
17421742

17431743
self.assertRaises(tuf.exceptions.InvalidMetadataJSONError,
17441744
self.repository_updater._verify_metadata_file,
1745-
metadata_file_object, 'root')
1745+
metadata_file_object, 'root', None)
17461746

17471747

1748-
def test_13__targets_of_role(self):
1748+
def test_12__validate_metadata_version(self):
1749+
# Test for valid metadata version with expected_version.
1750+
self.repository_updater._validate_metadata_version(
1751+
expected_version=1, metadata_role='root', version_downloaded=1)
1752+
1753+
# Test for valid metadata version without expected_version.
1754+
self.repository_updater._validate_metadata_version(
1755+
expected_version=None, metadata_role='root', version_downloaded=1)
1756+
1757+
# Test for expected_version different than version downloaded.
1758+
self.assertRaises(tuf.exceptions.BadVersionNumberError,
1759+
self.repository_updater._validate_metadata_version,
1760+
expected_version=2, metadata_role='root', version_downloaded=1)
1761+
1762+
# Test without expected_version and version_downloaded < current_version.
1763+
self.assertRaises(tuf.exceptions.ReplayedMetadataError,
1764+
self.repository_updater._validate_metadata_version,
1765+
expected_version=None, metadata_role='root', version_downloaded=0)
1766+
1767+
1768+
def test_13__validate_spec_version(self):
1769+
# Tests when metadata spec ver is compatible with tuf.SPECIFICATION_VERSION
1770+
1771+
# metadata spec ver = tuf.SPECIFICATION_VERSION
1772+
self.repository_updater._validate_spec_version(tuf.SPECIFICATION_VERSION)
1773+
1774+
code_spec_ver_split = tuf.SPECIFICATION_VERSION.split('.')
1775+
code_spec_major = int(code_spec_ver_split[0])
1776+
code_spec_minor= int(code_spec_ver_split[1])
1777+
1778+
# metadata major ver is the same as tuf.SPECIFICATION_VERSION major ver
1779+
# but metadata minor ver != tuf.SPECIFICATION_VERSION minor ver
1780+
metadata_spec = [str(code_spec_major), str(code_spec_minor + 1), '0']
1781+
separator = '.'
1782+
metadata_spec = separator.join(metadata_spec)
1783+
self.repository_updater._validate_spec_version(metadata_spec)
1784+
1785+
# Test when metadata spec ver is NOT compatible
1786+
# with tuf.SPECIFICATION_VERSION
1787+
metadata_spec = [str(code_spec_major + 1), str(code_spec_minor), '0']
1788+
metadata_spec = separator.join(metadata_spec)
1789+
self.assertRaises(tuf.exceptions.UnsupportedSpecificationError,
1790+
self.repository_updater._validate_spec_version, metadata_spec)
1791+
1792+
1793+
def test_15__targets_of_role(self):
17491794
# Test case where a list of targets is given. By default, the 'targets'
17501795
# parameter is None.
17511796
targets = [{'filepath': 'file1.txt', 'fileinfo': {'length': 1, 'hashes': {'sha256': 'abc'}}}]

0 commit comments

Comments
 (0)