test: Synchronization of new transport as primary between devices

This reproduces the bug when a new transport doesn't become primary on the 2nd device because I/O
isn't restarted when a new transport is added from a sync message, so INBOX from the new transport
isn't fetched.
This commit is contained in:
iequidoo
2025-12-21 06:57:18 -03:00
parent 6a293aebe2
commit 21025fa7f4
2 changed files with 24 additions and 0 deletions

View File

@@ -207,6 +207,29 @@ def test_transport_synchronization(acfactory, log) -> None:
assert ac1_clone.wait_for_incoming_msg().get_snapshot().text == "Hello!"
def test_transport_sync_new_as_primary(acfactory, log) -> None:
"""Test synchronization of new transport as primary between devices."""
ac1 = acfactory.get_online_account()
ac1_clone = ac1.clone()
ac1_clone.bring_online()
qr = acfactory.get_account_qr()
ac1.add_transport_from_qr(qr)
ac1_transports = ac1.list_transports()
assert len(ac1_transports) == 2
[transport1, transport2] = ac1_transports
ac1_clone.wait_for_event(EventType.TRANSPORTS_MODIFIED)
assert len(ac1_clone.list_transports()) == 2
assert ac1_clone.get_config("configured_addr") == transport1["addr"]
log.section("ac1 changes the primary transport")
ac1.set_config("configured_addr", transport2["addr"])
ac1_clone.wait_for_event(EventType.TRANSPORTS_MODIFIED)
assert ac1_clone.get_config("configured_addr") == transport2["addr"]
def test_recognize_self_address(acfactory) -> None:
alice, bob = acfactory.get_online_accounts(2)

View File

@@ -753,6 +753,7 @@ pub(crate) async fn sync_transports(
.await?;
context.emit_event(EventType::TransportsModified);
// context.scheduler.restart(context).await;
Ok(())
}