@@ -1760,10 +1760,58 @@ def test_11__verify_metadata_file(self):
17601760
17611761 self .assertRaises (tuf .exceptions .InvalidMetadataJSONError ,
17621762 self .repository_updater ._verify_metadata_file ,
1763- metadata_file_object , 'root' )
1763+ metadata_file_object , 'root' , None )
17641764
17651765
1766- def test_12__get_file (self ):
1766+
1767+ def test_12__validate_metadata_version (self ):
1768+ # Test for valid metadata version with expected_version.
1769+ self .repository_updater ._validate_metadata_version (
1770+ expected_version = 1 , metadata_role = 'root' , version_downloaded = 1 )
1771+
1772+ # Test for valid metadata version without expected_version.
1773+ self .repository_updater ._validate_metadata_version (
1774+ expected_version = None , metadata_role = 'root' , version_downloaded = 1 )
1775+
1776+ # Test for expected_version different than version downloaded.
1777+ self .assertRaises (tuf .exceptions .BadVersionNumberError ,
1778+ self .repository_updater ._validate_metadata_version ,
1779+ expected_version = 2 , metadata_role = 'root' , version_downloaded = 1 )
1780+
1781+ # Test without expected_version and version_downloaded < current_version.
1782+ self .assertRaises (tuf .exceptions .ReplayedMetadataError ,
1783+ self .repository_updater ._validate_metadata_version ,
1784+ expected_version = None , metadata_role = 'root' , version_downloaded = 0 )
1785+
1786+
1787+
1788+ def test_13__validate_spec_version (self ):
1789+ # Tests when metadata spec ver is compatible with tuf.SPECIFICATION_VERSION
1790+
1791+ # metadata spec ver = tuf.SPECIFICATION_VERSION
1792+ self .repository_updater ._validate_spec_version (tuf .SPECIFICATION_VERSION )
1793+
1794+ code_spec_ver_split = tuf .SPECIFICATION_VERSION .split ('.' )
1795+ code_spec_major = int (code_spec_ver_split [0 ])
1796+ code_spec_minor = int (code_spec_ver_split [1 ])
1797+
1798+ # metadata major ver is the same as tuf.SPECIFICATION_VERSION major ver
1799+ # but metadata minor ver != tuf.SPECIFICATION_VERSION minor ver
1800+ metadata_spec = [str (code_spec_major ), str (code_spec_minor + 1 ), '0' ]
1801+ separator = '.'
1802+ metadata_spec = separator .join (metadata_spec )
1803+ self .repository_updater ._validate_spec_version (metadata_spec )
1804+
1805+ # Test when metadata spec ver is NOT compatible
1806+ # with tuf.SPECIFICATION_VERSION
1807+ metadata_spec = [str (code_spec_major + 1 ), str (code_spec_minor ), '0' ]
1808+ metadata_spec = separator .join (metadata_spec )
1809+ self .assertRaises (tuf .exceptions .UnsupportedSpecificationError ,
1810+ self .repository_updater ._validate_spec_version , metadata_spec )
1811+
1812+
1813+
1814+ def test_14__get_file (self ):
17671815 # Test for an "unsafe" download, where the file is downloaded up to
17681816 # a required length (and no more). The "safe" download approach
17691817 # downloads an exact required length.
@@ -1783,7 +1831,9 @@ def verify_target_file(targets_path):
17831831 self .repository_updater ._get_file ('targets.json' , verify_target_file ,
17841832 file_type , file_size , download_safely = False ).close ()
17851833
1786- def test_13__targets_of_role (self ):
1834+
1835+
1836+ def test_15__targets_of_role (self ):
17871837 # Test case where a list of targets is given. By default, the 'targets'
17881838 # parameter is None.
17891839 targets = [{'filepath' : 'file1.txt' , 'fileinfo' : {'length' : 1 , 'hashes' : {'sha256' : 'abc' }}}]
0 commit comments