From 39a58ded05d378aa944a4cb44368d1ea0baf7280 Mon Sep 17 00:00:00 2001 From: Fintan Halpenny Date: Tue, 3 Mar 2026 15:21:35 +0000 Subject: [PATCH] node/test: Use `Arbitrary` for `SignedRefs` Ensure the test code does not rely on `SignedRefs` construction, but rather the `Arbitrary` construction. --- crates/radicle-node/src/test/peer.rs | 19 +++++++------------ crates/radicle-node/src/tests.rs | 18 ++++++++---------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/crates/radicle-node/src/test/peer.rs b/crates/radicle-node/src/test/peer.rs index a2f35428..7c8db438 100644 --- a/crates/radicle-node/src/test/peer.rs +++ b/crates/radicle-node/src/test/peer.rs @@ -8,6 +8,7 @@ use std::str::FromStr; use log::*; use radicle::crypto; +use radicle::git::Oid; use radicle::identity::Visibility; use radicle::node::address::Store as _; use radicle::node::device::Device; @@ -15,7 +16,8 @@ use radicle::node::Database; use radicle::node::UserAgent; use radicle::node::{address, Alias, ConnectOptions}; use radicle::rad; -use radicle::storage::refs::{RefsAt, SignedRefsAt, IDENTITY_ROOT}; +use radicle::storage::refs; +use radicle::storage::refs::{RefsAt, SignedRefsAt}; use radicle::storage::{ReadRepository, RemoteRepository}; use radicle::Storage; @@ -360,17 +362,10 @@ where ann.into().signed(self.signer()).into() } - pub fn signed_refs_at( - &self, - mut refs: Refs, - at: radicle::git::Oid, - repo: &R, - ) -> SignedRefsAt { - refs.insert(IDENTITY_ROOT.to_ref_string(), repo.identity_root().unwrap()); - SignedRefsAt { - sigrefs: refs.signed(self.signer()).unwrap().verified(repo).unwrap(), - at, - } + pub fn signed_refs_at(&self, root: Oid) -> SignedRefsAt { + arbitrary::with_gen(8, |g| { + refs::arbitrary::signed_refs_at(g, root, self.signer()) + }) } pub fn connect_from(&mut self, peer: &Self) { diff --git a/crates/radicle-node/src/tests.rs b/crates/radicle-node/src/tests.rs index d0e9ac61..503fc7f9 100644 --- a/crates/radicle-node/src/tests.rs +++ b/crates/radicle-node/src/tests.rs @@ -8,6 +8,7 @@ use std::sync::Arc; use std::sync::LazyLock; use std::time; +use radicle::storage::ReadRepository; use test_log::test; use radicle::cob; @@ -909,20 +910,19 @@ fn test_refs_announcement_followed() { let node_id = alice.id; let repo = alice.storage_mut().repo_mut(&rid); + let root = repo.identity_root().unwrap(); + let sigrefs_at = bob.signed_refs_at(root); - repo.remotes.insert( - node_id, - bob.signed_refs_at(arbitrary::gen::(8), arbitrary::oid(), repo), - ); + repo.remotes.insert(node_id, sigrefs_at); // Generate some refs for Bob under their own node_id. - let sigrefs = bob.signed_refs_at(arbitrary::gen::(8), arbitrary::oid(), repo); + let sigrefs_at = bob.signed_refs_at(root); let node_id = bob.id; bob.init(); bob.storage_mut() .repo_mut(&rid) .remotes - .insert(node_id, sigrefs); + .insert(node_id, sigrefs_at); // Alice uses Scope::Followed, and did not track Bob yet. alice.connect_to(&bob); @@ -1582,10 +1582,8 @@ fn test_queued_fetch_from_ann_same_rid() { // Finish the 1st fetch. // Ensure the ref is in the storage and cache. let repo = alice.storage_mut().repo_mut(&rid); - repo.remotes.insert( - carol.id(), - carol.signed_refs_at(arbitrary::gen::(1), oid, repo), - ); + let sigrefs_at = carol.signed_refs_at(repo.identity_root().unwrap()); + repo.remotes.insert(carol.id(), sigrefs_at); alice .database_mut() .refs_mut()