@@ -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