mirror of
https://github.com/logos-messaging/libchat.git
synced 2026-08-25 07:01:08 +00:00
Every steward mints a commit over the same batch and broadcasts it, and every member applies the best of the candidates it holds once its freeze window closes, with no retry and no minimum. Two commits over one batch are not interchangeable, since each carries its committer's key material, so a member that never receives one of them applies a different commit and its MLS state diverges from the group's for good: no layer retransmits the frame, the delivery node keeps no history to replay, and a ConversationSync carries the steward list rather than MLS state. The test grows a group of four and loses one candidate on its way to one member, each member taking its turn. It is red on purpose: every client reports the same five members while the one that lost a candidate sits on its own branch, unable to read anything the group posts. A test client can now be given an inbound filter, and the frames it rejects are discarded unread. It recognises a candidate the way its receiver does, so the de-mls pin moves to the workspace manifest for the test crate to share.
This crate is dedicated to backend integration tests.
Tests can be built using any supplied service implementation.
Various implementations are available in the Extensions/components crate.
Running Tests
Integration tests are executed when running cargo test from the workspace folder.
Alternatively they can be executed from any crate, using
cargo test --package integration_tests_core