@@ -1760,10 +1760,58 @@ def test_11__verify_metadata_file(self):
1760
1760
1761
1761
self .assertRaises (tuf .exceptions .InvalidMetadataJSONError ,
1762
1762
self .repository_updater ._verify_metadata_file ,
1763
- metadata_file_object , 'root' )
1763
+ metadata_file_object , 'root' , None )
1764
1764
1765
1765
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 ):
1767
1815
# Test for an "unsafe" download, where the file is downloaded up to
1768
1816
# a required length (and no more). The "safe" download approach
1769
1817
# downloads an exact required length.
@@ -1783,7 +1831,9 @@ def verify_target_file(targets_path):
1783
1831
self .repository_updater ._get_file ('targets.json' , verify_target_file ,
1784
1832
file_type , file_size , download_safely = False ).close ()
1785
1833
1786
- def test_13__targets_of_role (self ):
1834
+
1835
+
1836
+ def test_15__targets_of_role (self ):
1787
1837
# Test case where a list of targets is given. By default, the 'targets'
1788
1838
# parameter is None.
1789
1839
targets = [{'filepath' : 'file1.txt' , 'fileinfo' : {'length' : 1 , 'hashes' : {'sha256' : 'abc' }}}]
0 commit comments