From 65fd02c4ab750cb624fb4104ac3a55c060f8fba1 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Mon, 1 Jun 2020 13:40:59 -0400 Subject: [PATCH 1/3] tuf/repository_tool: Return delegated bin_name during modifications This makes it easier for consumers of repository_tool to mark the appropriate delegated bin as dirty when using delegated targets. Signed-off-by: William Woodruff --- tuf/repository_tool.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tuf/repository_tool.py b/tuf/repository_tool.py index 6e2e967f0a..8d58d2d206 100755 --- a/tuf/repository_tool.py +++ b/tuf/repository_tool.py @@ -2666,7 +2666,7 @@ def add_target_to_bin(self, target_filepath, number_of_bins=DEFAULT_NUM_BINS, object. - None. + The name of the hashed bin that the target was added to. """ # Do the arguments have the correct format? @@ -2689,6 +2689,7 @@ def add_target_to_bin(self, target_filepath, number_of_bins=DEFAULT_NUM_BINS, self._delegated_roles[bin_name].add_target(target_filepath, fileinfo=fileinfo) + return bin_name @@ -2727,7 +2728,7 @@ def remove_target_from_bin(self, target_filepath, Targets object. - None. + The name of the hashed bin that the target was added to. """ # Do the arguments have the correct format? @@ -2749,7 +2750,7 @@ def remove_target_from_bin(self, target_filepath, self._delegated_roles[bin_name].remove_target(target_filepath) - + return bin_name @property From 4327a980cde81bcb86fd63ad403d798f4f4d1a23 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Mon, 1 Jun 2020 14:01:23 -0400 Subject: [PATCH 2/3] tests: Use newly returned role name Signed-off-by: William Woodruff --- tests/test_repository_tool.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/test_repository_tool.py b/tests/test_repository_tool.py index 9ca2991f3e..687bf3625e 100755 --- a/tests/test_repository_tool.py +++ b/tests/test_repository_tool.py @@ -1495,10 +1495,10 @@ def test_add_target_to_bin(self): # Add 'target1_filepath' and verify that the relative path of # 'target1_filepath' is added to the correct bin. - self.targets_object.add_target_to_bin(target1_filepath, 16) + rolename = self.targets_object.add_target_to_bin(target1_filepath, 16) for delegation in self.targets_object.delegations: - if delegation.rolename == '5': + if delegation.rolename == rolename: self.assertTrue('file1.txt' in delegation.target_files) else: @@ -1513,7 +1513,7 @@ def test_add_target_to_bin(self): target1_filepath, 16) # Test for a required hashed bin that does not exist. - self.targets_object.revoke('5') + self.targets_object.revoke(rolename) self.assertRaises(securesystemslib.exceptions.Error, self.targets_object.add_target_to_bin, target1_filepath, 16) @@ -1523,10 +1523,11 @@ def test_add_target_to_bin(self): target2_fileinfo = tuf.formats.make_fileinfo(37, target2_hashes) target2_filepath = 'file2.txt' - self.targets_object.add_target_to_bin(target2_filepath, 16, fileinfo=target2_fileinfo) + rolename = self.targets_object.add_target_to_bin(target2_filepath, 16, + fileinfo=target2_fileinfo) for delegation in self.targets_object.delegations: - if delegation.rolename == '0': + if delegation.rolename == rolename: self.assertTrue(target2_filepath in delegation.target_files) else: From 1e532e825aa698f1ef4a8f78ef2be9a4bb3b984f Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Mon, 1 Jun 2020 14:22:15 -0400 Subject: [PATCH 3/3] tests: Fill in more returned role name use Signed-off-by: William Woodruff --- tests/test_repository_tool.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/test_repository_tool.py b/tests/test_repository_tool.py index 687bf3625e..98bdcd1ff3 100755 --- a/tests/test_repository_tool.py +++ b/tests/test_repository_tool.py @@ -1562,10 +1562,10 @@ def test_remove_target_from_bin(self): # Add 'target1_filepath' and verify that the relative path of # 'target1_filepath' is added to the correct bin. - self.targets_object.add_target_to_bin(target1_filepath, 16) + added_rolename = self.targets_object.add_target_to_bin(target1_filepath, 16) for delegation in self.targets_object.delegations: - if delegation.rolename == '5': + if delegation.rolename == added_rolename: self.assertTrue('file1.txt' in delegation.target_files) self.assertTrue(len(delegation.target_files) == 1) else: @@ -1573,7 +1573,8 @@ def test_remove_target_from_bin(self): # Test the remove_target_from_bin() method. Verify that 'target1_filepath' # has been removed. - self.targets_object.remove_target_from_bin(target1_filepath, 16) + removed_rolename = self.targets_object.remove_target_from_bin(target1_filepath, 16) + self.assertEqual(added_rolename, removed_rolename) for delegation in self.targets_object.delegations: self.assertTrue(target1_filepath not in delegation.target_files) @@ -1609,17 +1610,19 @@ def test_default_bin_num(self): # Add 'target1_filepath' and verify that the relative path of # 'target1_filepath' is added to the correct bin. - self.targets_object.add_target_to_bin(os.path.basename(target1_filepath)) + added_rolename = self.targets_object.add_target_to_bin(os.path.basename(target1_filepath)) for delegation in self.targets_object.delegations: - if delegation.rolename == '558-55b': + if delegation.rolename == added_rolename: self.assertTrue('file1.txt' in delegation.target_files) else: self.assertFalse('file1.txt' in delegation.target_files) # Remove target1_filepath and verify that all bins are now empty - self.targets_object.remove_target_from_bin(os.path.basename(target1_filepath)) + removed_rolename = self.targets_object.remove_target_from_bin( + os.path.basename(target1_filepath)) + self.assertEqual(added_rolename, removed_rolename) for delegation in self.targets_object.delegations: self.assertEqual(delegation.target_files, {})