diff --git a/radicle-node/src/tests/e2e.rs b/radicle-node/src/tests/e2e.rs index 42011068..5e4f1c0d 100644 --- a/radicle-node/src/tests/e2e.rs +++ b/radicle-node/src/tests/e2e.rs @@ -416,6 +416,35 @@ fn test_fetch_trusted_remotes() { assert!(bob_remotes.contains(&alice.id)); } +#[test] +fn test_missing_remote() { + logger::init(log::Level::Debug); + + let tmp = tempfile::tempdir().unwrap(); + let mut alice = Node::init(tmp.path()); + let bob = Node::init(tmp.path()); + let acme = alice.project("acme", ""); + + let mut alice = alice.spawn(service::Config::default()); + let mut bob = bob.spawn(service::Config::default()); + let carol = MockSigner::default(); + + alice.connect(&bob); + converge([&alice, &bob]); + + assert!(bob.handle.track_repo(acme, Scope::Trusted).unwrap()); + assert!(bob.handle.track_node(*carol.public_key(), None).unwrap()); + let result = bob.handle.fetch(acme, alice.id).unwrap(); + assert!(result.is_success()); + log::debug!(target: "test", "Fetch complete with {}", bob.id); + rad::fork_remote(acme, &alice.id, &carol, &bob.storage).unwrap(); + + alice.issue(acme, "Missing Remote", "Fixing the missing remote issue"); + let result = bob.handle.fetch(acme, alice.id).unwrap(); + assert!(result.is_success()); + log::debug!(target: "test", "Fetch complete with {}", bob.id); +} + #[test] fn test_fetch_preserve_owned_refs() { logger::init(log::Level::Debug);