Skip to main content

iris_chat_protocol/protocol_engine/
engine_test_support.rs

1use 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}