iris_chat_protocol/protocol_engine/
engine_test_support.rs1use super::*;
2
3impl ProtocolEngine {
4 pub fn fork_for_test(&self) -> anyhow::Result<Self> {
5 let storage = Arc::new(crate::InMemoryStorage::new()) as Arc<dyn StorageAdapter>;
6 for key in self.storage.list("")? {
7 if let Some(value) = self.storage.get(&key)? {
8 storage.put(&key, value)?;
9 }
10 }
11 let keys = Keys::new(nostr::SecretKey::from_slice(&self.local_device_secret)?);
12 Self::load_or_create_for_local_device(storage, self.owner_pubkey, &keys)
13 }
14
15 pub fn session_manager_snapshot_for_test(&self) -> SessionManagerSnapshot {
16 self.session_manager.snapshot()
17 }
18
19 pub fn group_manager_snapshot_for_test(&self) -> GroupManagerSnapshot {
20 self.group_manager.snapshot()
21 }
22
23 pub fn pending_inbound_for_test(&self) -> Vec<ProtocolPendingInboundTestDebug> {
24 self.pending_inbound
25 .iter()
26 .map(|pending| ProtocolPendingInboundTestDebug {
27 event_id: if pending.event_id.is_empty() {
28 pending.event.id.to_string()
29 } else {
30 pending.event_id.clone()
31 },
32 sender_message_pubkey_hex: pending.sender_message_pubkey_hex.clone(),
33 claimed_owner_pubkey_hex: pending.claimed_owner_pubkey_hex.clone(),
34 has_envelope: pending.envelope.is_some(),
35 metadata_verified: pending.metadata_verified,
36 })
37 .collect()
38 }
39
40 pub fn known_message_author_cache_build_count_for_test(&self) -> u64 {
41 self.known_message_author_cache_build_count.get()
42 }
43
44 pub fn pending_decrypted_deliveries_len_for_test(&self) -> usize {
45 self.pending_decrypted_deliveries.len()
46 }
47}