Skip to content

Commit 0964284

Browse files
Cover the remaining LOC for the TAP 4 changes, including thresholds
1 parent d1ec71a commit 0964284

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

tests/test_multiple_repositories_integration.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,6 @@ def test_repository_tool(self):
268268

269269
my_updaters[0].download_target(targetinfo, self.temporary_directory)
270270
self.assertTrue(os.path.exists(os.path.join(self.temporary_directory, 'file3.txt')))
271-
updater2_directory = os.path.join(self.temporary_directory, 'updater2')
272-
my_updaters[1].download_target(targetinfo, updater2_directory)
273-
self.assertTrue(os.path.exists(os.path.join(self.temporary_directory, 'file3.txt')))
274271

275272

276273

tests/test_updater.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1839,6 +1839,11 @@ def test_get_one_valid_targetinfo(self):
18391839
# Restore the Root file.
18401840
shutil.move(backup_root_filepath, root_filepath)
18411841

1842+
# Test that the first mapping is skipped if it's irrelevant to the target
1843+
# file.
1844+
self.assertRaises(tuf.exceptions.UnknownTargetError,
1845+
multi_repo_updater.get_one_valid_targetinfo, 'non-existent.txt')
1846+
18421847
# Verify that a targetinfo is not returned for a non-existent target.
18431848
multi_repo_updater.map_file['mapping'][1]['terminating'] = False
18441849
self.assertRaises(tuf.exceptions.UnknownTargetError,
@@ -1850,6 +1855,49 @@ def test_get_one_valid_targetinfo(self):
18501855
multi_repo_updater.map_file['mapping'][0]['terminating'] = True
18511856
self.assertRaises(tuf.exceptions.UnknownTargetError,
18521857
multi_repo_updater.get_one_valid_targetinfo, 'bad3.txt')
1858+
multi_repo_updater.map_file['mapping'][0]['terminating'] = False
1859+
1860+
# Verify the case where two repositories provide different targetinfo.
1861+
# First, have 'role1' sign for a different 'file1.txt' (currently signed
1862+
# only by the Targets role).
1863+
repository = repo_tool.load_repository(self.repository_directory2)
1864+
1865+
# Test for the case where multiple repos sign for the same target.
1866+
#self.assertTrue(tuf.formats.TARGETINFO_SCHEMA.matches(
1867+
# multi_repo_updater.get_one_valid_targetinfo('file1.txt')))
1868+
multi_repo_updater.get_one_valid_targetinfo('file1.txt')
1869+
1870+
# Modify file1.txt so that different a length and hashes are added signed
1871+
# role1.
1872+
target1 = os.path.join(self.repository_directory2, 'targets', 'file1.txt')
1873+
with open(target1, 'ab') as file_object:
1874+
file_object.write(b'append extra text')
1875+
repository.targets.remove_target(target1)
1876+
repository.targets.add_target(target1)
1877+
1878+
repository.targets.load_signing_key(self.role_keys['targets']['private'])
1879+
repository.snapshot.load_signing_key(self.role_keys['snapshot']['private'])
1880+
repository.timestamp.load_signing_key(self.role_keys['timestamp']['private'])
1881+
repository.writeall()
1882+
1883+
# Move the staged metadata to the "live" metadata.
1884+
shutil.rmtree(os.path.join(self.repository_directory2, 'metadata'))
1885+
shutil.copytree(os.path.join(self.repository_directory2, 'metadata.staged'),
1886+
os.path.join(self.repository_directory2, 'metadata'))
1887+
1888+
targets_file = securesystemslib.util.load_json_file(
1889+
os.path.join(self.repository_directory2, 'metadata', 'targets.json'))
1890+
1891+
targets_file2 = securesystemslib.util.load_json_file(
1892+
os.path.join(self.repository_directory, 'metadata', 'targets.json'))
1893+
1894+
multi_repo_updater.get_one_valid_targetinfo('file1.txt')
1895+
1896+
multi_repo_updater.map_file['mapping'][0]['threshold'] = 2
1897+
self.assertRaises(tuf.exceptions.UnknownTargetError,
1898+
multi_repo_updater.get_one_valid_targetinfo, 'file1.txt')
1899+
1900+
18531901

18541902

18551903

0 commit comments

Comments
 (0)