Skip to content

Commit a38bf7c

Browse files
author
Jussi Kukkonen
committed
tests: Refactor key rotation in simulator
Add a method to rotate roles keys into RepositorySimulator (only top-level roles are supported for now). Rotation is used in four places already and this refactoring makes the tests easier to understand. Signed-off-by: Jussi Kukkonen <[email protected]>
1 parent f172972 commit a38bf7c

File tree

2 files changed

+16
-24
lines changed

2 files changed

+16
-24
lines changed

tests/repository_simulator.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,15 @@ def add_signer(self, role: str, signer: SSlibSigner) -> None:
163163
self.signers[role] = {}
164164
self.signers[role][signer.key_dict["keyid"]] = signer
165165

166+
def rotate_keys(self, role: str) -> None:
167+
"""remove all keys for role, then add threshold of new keys"""
168+
self.root.roles[role].keyids.clear()
169+
self.signers[role].clear()
170+
for _ in range(0, self.root.roles[role].threshold):
171+
key, signer = self.create_key()
172+
self.root.add_key(role, key)
173+
self.add_signer(role, signer)
174+
166175
def _initialize(self) -> None:
167176
"""Setup a minimal valid repository."""
168177

tests/test_updater_top_level_update.py

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -360,12 +360,8 @@ def test_new_timestamp_fast_foward_recovery(self) -> None:
360360
self._run_refresh()
361361
self._assert_version_equals(Timestamp.type, 99999)
362362

363-
# repo add new timestamp keys and recovers the timestamp version
364-
self.sim.root.roles[Timestamp.type].keyids.clear()
365-
self.sim.signers[Timestamp.type].clear()
366-
key, signer = self.sim.create_key()
367-
self.sim.root.add_key(Timestamp.type, key)
368-
self.sim.add_signer(Timestamp.type, signer)
363+
# repository rotates timestamp keys, rolls back timestamp version
364+
self.sim.rotate_keys(Timestamp.type)
369365
self.sim.root.version += 1
370366
self.sim.publish_root()
371367
self.sim.timestamp.version = 1
@@ -448,17 +444,9 @@ def test_new_snapshot_fast_foward_recovery(self) -> None:
448444
self._run_refresh()
449445
self._assert_version_equals(Snapshot.type, 99999)
450446

451-
# repo add new snapshot and timestamp keys and recovers snapshot version
452-
self.sim.root.roles[Snapshot.type].keyids.clear()
453-
self.sim.signers[Snapshot.type].clear()
454-
self.sim.root.roles[Timestamp.type].keyids.clear()
455-
self.sim.signers[Timestamp.type].clear()
456-
snapshot_key, snapshot_signer = self.sim.create_key()
457-
self.sim.root.add_key(Snapshot.type, snapshot_key)
458-
self.sim.add_signer(Snapshot.type, snapshot_signer)
459-
timestamp_key, timestamp_signer = self.sim.create_key()
460-
self.sim.root.add_key(Timestamp.type, timestamp_key)
461-
self.sim.add_signer(Timestamp.type, timestamp_signer)
447+
# repository rotates snapshot & timestamp keys, rolls back snapshot
448+
self.sim.rotate_keys(Snapshot.type)
449+
self.sim.rotate_keys(Timestamp.type)
462450
self.sim.root.version += 1
463451
self.sim.publish_root()
464452

@@ -562,13 +550,8 @@ def test_new_targets_fast_forward_recovery(self) -> None:
562550
self._run_refresh()
563551
self._assert_version_equals(Targets.type, 99999)
564552

565-
# repo add new snapshot keys and recovers the targets version
566-
self.sim.root.roles[Snapshot.type].keyids.clear()
567-
self.sim.signers[Snapshot.type].clear()
568-
snapshot_key, snapshot_signer = self.sim.create_key()
569-
self.sim.root.add_key(Snapshot.type, snapshot_key)
570-
self.sim.add_signer(Snapshot.type, snapshot_signer)
571-
553+
# repository rotates snapshot keys, rolls back targets version
554+
self.sim.rotate_keys(Snapshot.type)
572555
self.sim.root.version += 1
573556
self.sim.publish_root()
574557

0 commit comments

Comments
 (0)