mirror of
https://github.com/theupdateframework/python-tuf
synced 2026-05-24 10:08:28 +00:00
Add test condition for excluded custom field in targetinfo comparisons
Signed-off-by: Vladimir Diaz <vladimir.v.diaz@gmail.com>
This commit is contained in:
parent
f2de8985e8
commit
d1fddfa2a2
1 changed files with 31 additions and 10 deletions
|
|
@ -1871,17 +1871,39 @@ def test_get_valid_targetinfo(self):
|
|||
multi_repo_updater.get_valid_targetinfo, 'bad3.txt')
|
||||
multi_repo_updater.map_file['mapping'][0]['terminating'] = False
|
||||
|
||||
# Verify the case where two repositories provide different targetinfo.
|
||||
# First, have 'role1' sign for a different 'file1.txt' (currently signed
|
||||
# only by the Targets role).
|
||||
repository = repo_tool.load_repository(self.repository_directory2)
|
||||
|
||||
# Test for the case where multiple repos sign for the same target.
|
||||
valid_targetinfo = multi_repo_updater.get_valid_targetinfo('file1.txt')
|
||||
# TODO self.assertTrue(tuf.formats.TARGETINFO_SCHEMA.matches(targetinfo))
|
||||
|
||||
# Modify file1.txt so that different length and hashes are reported
|
||||
# by the two repositories.
|
||||
multi_repo_updater.map_file['mapping'][0]['threshold'] = 2
|
||||
valid_targetinfo = multi_repo_updater.get_valid_targetinfo('file1.txt')
|
||||
|
||||
# Verify that valid targetinfo is matched for two repositories that provide
|
||||
# different custom field. Make sure to set the 'match_custom_field'
|
||||
# argument to 'False' when calling get_valid_targetinfo().
|
||||
repository = repo_tool.load_repository(self.repository_directory2)
|
||||
target1 = os.path.join(self.repository_directory2, 'targets', 'file1.txt')
|
||||
repository.targets.remove_target(target1)
|
||||
custom_field = {"custom": "my_custom_data"}
|
||||
repository.targets.add_target(target1, custom_field)
|
||||
repository.targets.load_signing_key(self.role_keys['targets']['private'])
|
||||
repository.snapshot.load_signing_key(self.role_keys['snapshot']['private'])
|
||||
repository.timestamp.load_signing_key(self.role_keys['timestamp']['private'])
|
||||
repository.writeall()
|
||||
|
||||
# Move the staged metadata to the "live" metadata.
|
||||
shutil.rmtree(os.path.join(self.repository_directory2, 'metadata'))
|
||||
shutil.copytree(os.path.join(self.repository_directory2, 'metadata.staged'),
|
||||
os.path.join(self.repository_directory2, 'metadata'))
|
||||
|
||||
# Do we get the expected match for the two targetinfo that only differ
|
||||
# by the custom field?
|
||||
valid_targetinfo = multi_repo_updater.get_valid_targetinfo(
|
||||
'file1.txt', match_custom_field=False)
|
||||
|
||||
# Verify the case where two repositories provide different targetinfo.
|
||||
# Modify file1.txt so that different length and hashes are reported by the
|
||||
# two repositories.
|
||||
repository = repo_tool.load_repository(self.repository_directory2)
|
||||
target1 = os.path.join(self.repository_directory2, 'targets', 'file1.txt')
|
||||
with open(target1, 'ab') as file_object:
|
||||
file_object.write(b'append extra text')
|
||||
|
|
@ -1920,8 +1942,7 @@ def test_get_updater(self):
|
|||
|
||||
# Test for a repository that doesn't exist.
|
||||
multi_repo_updater.map_file['repositories']['bad_repo_name'] = ['https://bogus:30002']
|
||||
self.assertEqual(None, multi_repo_updater.get_updater('bad_repo_name',
|
||||
multi_repo_updater.map_file['repositories']))
|
||||
self.assertEqual(None, multi_repo_updater.get_updater('bad_repo_name'))
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue