e2e: Introduce 3 tests for block command

1. It disconnects an active connection.
2. A blocked peer can not connect to us.
3. A blocked peer can not be fetched from.
This commit is contained in:
Adrian Duke 2026-02-17 12:51:23 +00:00 committed by Lorenz Leutgeb
parent a4806f2718
commit d88ef3fa66
1 changed files with 79 additions and 0 deletions

View File

@ -1663,3 +1663,82 @@ fn test_non_fastforward_identity_doc() {
assert_eq!(identity.current, next);
assert_eq!(identity.parent, Some(prev));
}
#[test]
fn test_block_active_connection() {
let tmp = tempfile::tempdir().unwrap();
let alice = Node::init(tmp.path(), config::relay("alice"));
let bob = Node::init(tmp.path(), config::relay("bob"));
let mut alice = alice.spawn();
let bob = bob.spawn();
alice.connect(&bob);
converge([&alice, &bob]);
let events = alice.handle.events();
assert!(alice.handle.block(bob.id).unwrap());
events
.wait(
|e| matches!(e, Event::PeerDisconnected { nid, .. } if *nid == bob.id).then_some(()),
DEFAULT_TIMEOUT,
)
.unwrap();
let sessions = alice.handle.sessions().unwrap();
assert!(sessions.iter().all(|s| s.nid != bob.id));
}
#[test]
fn test_block_prevents_connection() {
let tmp = tempfile::tempdir().unwrap();
let alice = Node::init(tmp.path(), config::relay("alice"));
let bob = Node::init(tmp.path(), config::relay("bob"));
let mut alice = alice.spawn();
let mut bob = bob.spawn();
assert!(alice.handle.block(bob.id).unwrap());
let result = alice
.handle
.connect(bob.id, bob.addr.into(), ConnectOptions::default())
.unwrap();
assert_matches!(result, ConnectResult::Disconnected { .. });
let events = alice.handle.events();
bob.connect(&alice);
// Alice receives Bob's inbound connection, but disconnects from him.
events
.wait(
|e| matches!(e, Event::PeerDisconnected { nid, .. } if *nid == bob.id).then_some(()),
time::Duration::from_secs(10),
)
.unwrap();
let sessions = alice.handle.sessions().unwrap();
assert!(sessions.iter().all(|s| s.nid != bob.id));
}
#[test]
fn test_block_prevents_fetch() {
let tmp = tempfile::tempdir().unwrap();
let alice = Node::init(tmp.path(), config::relay("alice"));
let mut bob = Node::init(tmp.path(), config::relay("bob"));
let rid = bob.project("acme", "");
let mut alice = alice.spawn();
let bob = bob.spawn();
assert!(alice.handle.block(bob.id).unwrap());
let result = alice
.handle
.fetch(rid, bob.id, time::Duration::from_secs(5))
.unwrap();
assert_matches!(result, FetchResult::Failed { .. });
}