enigma-protocol 0.1.0

High-level orchestrator that composes the Enigma crates into a production-ready messaging protocol
Documentation
use crate::error::Result;
use crate::tests::setup_clients;
use crate::types::ClientEvent;

#[tokio::test]
async fn bidirectional_text_flow() -> Result<()> {
    let mut pair = setup_clients()?;
    let sent = pair.alice.send_text("bob", "hello secure world").await?;
    let event = pair.bob.poll_once().await?.expect("message event");
    if let ClientEvent::MessageReceived { from, message } = event {
        assert_eq!(from, "alice");
        assert_eq!(message.payload, b"hello secure world");
        assert_eq!(message.id, sent);
    } else {
        panic!("unexpected event");
    }
    pair.bob.send_text("alice", "response inbound").await?;
    let event = pair.alice.poll_once().await?.expect("message event");
    if let ClientEvent::MessageReceived { from, message } = event {
        assert_eq!(from, "bob");
        assert_eq!(message.payload, b"response inbound");
    } else {
        panic!("unexpected event");
    }
    Ok(())
}