@@ -1119,6 +1119,33 @@ def test_get_roles_in_succinct_roles(self) -> None:
11191119 expected_bin_suffix = f"{ bin_numer :0{expected_suffix_length }x} "
11201120 self .assertEqual (role_name , f"bin-{ expected_bin_suffix } " )
11211121
1122+ def test_delegations_get_delegated_role (self ) -> None :
1123+ delegations = Delegations ({}, {})
1124+ targets = Targets (delegations = delegations )
1125+
1126+ with self .assertRaises (ValueError ):
1127+ targets .get_delegated_role ("abc" )
1128+
1129+ # test "normal" delegated role (path or path_hash_prefix)
1130+ role = DelegatedRole ("delegated" , [], 1 , False , [])
1131+ delegations .roles = {"delegated" : role }
1132+ with self .assertRaises (ValueError ):
1133+ targets .get_delegated_role ("not-delegated" )
1134+ self .assertEqual (targets .get_delegated_role ("delegated" ), role )
1135+ delegations .roles = None
1136+
1137+ # test succinct delegation
1138+ bit_len = 3
1139+ role2 = SuccinctRoles ([], 1 , bit_len , "prefix" )
1140+ delegations .succinct_roles = role2
1141+ for name in ["prefix-" , "prefix--1" , f"prefix-{ 2 ** bit_len :0x} " ]:
1142+ with self .assertRaises (ValueError , msg = f"role name '{ name } '" ):
1143+ targets .get_delegated_role (name )
1144+ for i in range (0 , 2 ** bit_len ):
1145+ self .assertEqual (
1146+ targets .get_delegated_role (f"prefix-{ i :0x} " ), role2
1147+ )
1148+
11221149
11231150# Run unit test.
11241151if __name__ == "__main__" :
0 commit comments