use crate::client::MessengerClient;
use crate::error::{EnigmaProtocolError, Result};
use crate::transport::in_memory_duplex_pair;
use crate::types::{InitiatorOrResponder, SessionBootstrap};
use enigma_identity::LocalIdentity;
pub mod attachment_flow_tests;
pub mod encrypt_decrypt_tests;
pub mod negative_tests;
pub mod session_tests;
pub struct ClientPair {
pub alice: MessengerClient,
pub bob: MessengerClient,
}
pub fn setup_clients() -> Result<ClientPair> {
let alice_identity = LocalIdentity::new("alice").map_err(|_| EnigmaProtocolError::Crypto)?;
let bob_identity = LocalIdentity::new("bob").map_err(|_| EnigmaProtocolError::Crypto)?;
let (transport_a, transport_b) = in_memory_duplex_pair(64);
let mut alice = MessengerClient::new(alice_identity, transport_a);
let mut bob = MessengerClient::new(bob_identity, transport_b);
let secret = [7u8; 32];
alice.ensure_session_with(
"bob",
SessionBootstrap::PreSharedSecret {
secret32: secret,
role: InitiatorOrResponder::Initiator,
remote_dh_pub: None,
},
)?;
bob.ensure_session_with(
"alice",
SessionBootstrap::PreSharedSecret {
secret32: secret,
role: InitiatorOrResponder::Responder,
remote_dh_pub: None,
},
)?;
Ok(ClientPair { alice, bob })
}