mithril_aggregator/services/signature_consumer/
noop.rs1use std::future;
2
3use async_trait::async_trait;
4
5use mithril_common::{
6 entities::{SignedEntityType, SingleSignature},
7 StdResult,
8};
9
10use super::SignatureConsumer;
11
12pub struct SignatureConsumerNoop;
14
15#[async_trait]
16impl SignatureConsumer for SignatureConsumerNoop {
17 async fn get_signatures(&self) -> StdResult<Vec<(SingleSignature, SignedEntityType)>> {
18 future::pending().await
19 }
20
21 fn get_origin_tag(&self) -> String {
22 "NOOP".to_string()
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use anyhow::anyhow;
29 use tokio::time::{sleep, Duration};
30
31 use super::*;
32
33 #[tokio::test]
34 async fn signature_consumer_noop_never_returns() {
35 let consumer = SignatureConsumerNoop;
36
37 let result = tokio::select!(
38 _res = sleep(Duration::from_millis(100)) => {Err(anyhow!("Timeout"))},
39 _res = consumer.get_signatures() => {Ok(())},
40 );
41
42 result.expect_err("Should have timed out");
43 }
44}