mirror of
https://github.com/theupdateframework/python-tuf
synced 2026-05-24 10:08:28 +00:00
Modify RepositorySimulator.add_delegation
Reduce the number of function arguments and use DelegatedRole instead. When adding a list of delegations to the repository, move the Targets creation inside the loop to create a separate Targets object for each delegation. Create a new Metadata obgect only for delegated roles which do not exist yet in the repository. Signed-off-by: Teodora Sechkova <tsechkova@vmware.com>
This commit is contained in:
parent
568580701c
commit
c77b47ee82
3 changed files with 14 additions and 18 deletions
|
|
@ -345,13 +345,7 @@ def add_target(self, role: str, data: bytes, path: str) -> None:
|
|||
self.target_files[path] = RepositoryTarget(data, target)
|
||||
|
||||
def add_delegation(
|
||||
self,
|
||||
delegator_name: str,
|
||||
name: str,
|
||||
targets: Targets,
|
||||
terminating: bool,
|
||||
paths: Optional[List[str]],
|
||||
hash_prefixes: Optional[List[str]],
|
||||
self, delegator_name: str, role: DelegatedRole, targets: Targets
|
||||
) -> None:
|
||||
"""Add delegated target role to the repository."""
|
||||
if delegator_name == Targets.type:
|
||||
|
|
@ -360,7 +354,6 @@ def add_delegation(
|
|||
delegator = self.md_delegates[delegator_name].signed
|
||||
|
||||
# Create delegation
|
||||
role = DelegatedRole(name, [], 1, terminating, paths, hash_prefixes)
|
||||
if delegator.delegations is None:
|
||||
delegator.delegations = Delegations({}, OrderedDict())
|
||||
# put delegation last by default
|
||||
|
|
@ -372,7 +365,8 @@ def add_delegation(
|
|||
self.add_signer(role.name, signer)
|
||||
|
||||
# Add metadata for the role
|
||||
self.md_delegates[role.name] = Metadata(targets, OrderedDict())
|
||||
if role.name not in self.md_delegates:
|
||||
self.md_delegates[role.name] = Metadata(targets, OrderedDict())
|
||||
|
||||
def write(self) -> None:
|
||||
"""Dump current repository metadata to self.dump_dir
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
from tuf.api.metadata import (
|
||||
SPECIFICATION_VERSION,
|
||||
TOP_LEVEL_ROLE_NAMES,
|
||||
DelegatedRole,
|
||||
TargetFile,
|
||||
Targets,
|
||||
)
|
||||
|
|
@ -145,9 +146,10 @@ def test_delegated_roles_update(
|
|||
sim = self._init_repo(consistent_snapshot)
|
||||
# Add new delegated targets
|
||||
spec_version = ".".join(SPECIFICATION_VERSION)
|
||||
targets = Targets(1, spec_version, sim.safe_expiry, {}, None)
|
||||
for role in rolenames:
|
||||
sim.add_delegation("targets", role, targets, False, ["*"], None)
|
||||
delegated_role = DelegatedRole(role, [], 1, False, ["*"], None)
|
||||
targets = Targets(1, spec_version, sim.safe_expiry, {}, None)
|
||||
sim.add_delegation("targets", delegated_role, targets)
|
||||
sim.update_snapshot()
|
||||
updater = self._init_updater(sim)
|
||||
updater.refresh()
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
from tests import utils
|
||||
from tests.repository_simulator import RepositorySimulator
|
||||
from tuf.api.metadata import SPECIFICATION_VERSION, Targets
|
||||
from tuf.api.metadata import SPECIFICATION_VERSION, DelegatedRole, Targets
|
||||
from tuf.exceptions import BadVersionNumberError, UnsignedMetadataError
|
||||
from tuf.ngclient import Updater
|
||||
|
||||
|
|
@ -143,11 +143,10 @@ def test_fishy_rolenames(self) -> None:
|
|||
|
||||
# Add new delegated targets, update the snapshot
|
||||
spec_version = ".".join(SPECIFICATION_VERSION)
|
||||
targets = Targets(1, spec_version, self.sim.safe_expiry, {}, None)
|
||||
for role in roles_to_filenames:
|
||||
self.sim.add_delegation(
|
||||
"targets", role, targets, False, ["*"], None
|
||||
)
|
||||
for rolename in roles_to_filenames:
|
||||
role = DelegatedRole(rolename, [], 1, False, ["*"], None)
|
||||
targets = Targets(1, spec_version, self.sim.safe_expiry, {}, None)
|
||||
self.sim.add_delegation("targets", role, targets)
|
||||
self.sim.update_snapshot()
|
||||
|
||||
updater = self._run_refresh()
|
||||
|
|
@ -236,7 +235,8 @@ def test_not_loading_targets_twice(self, wrapped_open: MagicMock) -> None:
|
|||
# Add new delegated targets, update the snapshot
|
||||
spec_version = ".".join(SPECIFICATION_VERSION)
|
||||
targets = Targets(1, spec_version, self.sim.safe_expiry, {}, None)
|
||||
self.sim.add_delegation("targets", "role1", targets, False, ["*"], None)
|
||||
role = DelegatedRole("role1", [], 1, False, ["*"], None)
|
||||
self.sim.add_delegation("targets", role, targets)
|
||||
self.sim.update_snapshot()
|
||||
|
||||
# Run refresh, top-level roles are loaded
|
||||
|
|
|
|||
Loading…
Reference in a new issue