mithril_dmq/test/
fake_message.rs

1//! Fake message computation for testing purposes.
2
3use std::sync::Arc;
4
5use mithril_cardano_node_chain::test::double::FakeChainObserver;
6use mithril_common::{crypto_helper::TryToBytes, test::crypto_helper::KesSignerFake};
7
8use crate::{
9    DmqMessage, DmqMessageBuilder,
10    test::{double::FakeUnixTimestampProvider, payload::DmqMessageTestPayload},
11};
12
13/// Computes a fake DMQ message for testing purposes.
14pub async fn compute_fake_msg(bytes: &[u8], test_directory: &str) -> DmqMessage {
15    let dmq_builder = DmqMessageBuilder::new(
16        {
17            let (kes_signature, operational_certificate) =
18                KesSignerFake::dummy_signature(test_directory);
19            let kes_signer =
20                KesSignerFake::new(vec![Ok((kes_signature, operational_certificate.clone()))]);
21
22            Arc::new(kes_signer)
23        },
24        Arc::new(FakeChainObserver::default()),
25    )
26    .set_ttl(100)
27    .set_timestamp_provider(Arc::new(FakeUnixTimestampProvider::max_timestamp_for_ttl(
28        100,
29    )));
30    let message = DmqMessageTestPayload::new(bytes);
31    dmq_builder.build(&message.to_bytes_vec().unwrap()).await.unwrap()
32}