diff --git a/crates/interfaces/src/provider/block.rs b/crates/interfaces/src/provider/block.rs index 8d0d7cc69..4710a22c7 100644 --- a/crates/interfaces/src/provider/block.rs +++ b/crates/interfaces/src/provider/block.rs @@ -17,7 +17,7 @@ pub trait HeaderProvider: Send + Sync { fn header(&self, block_hash: &BlockHash) -> Result>; } -/// Client trait for fetching `Block` related data. +/// Api trait for fetching `Block` related data. pub trait BlockProvider: Send + Sync { /// Returns the current info for the chain. fn chain_info(&self) -> Result; diff --git a/crates/interfaces/src/provider/mod.rs b/crates/interfaces/src/provider/mod.rs index 9d1bb3078..06504fa8c 100644 --- a/crates/interfaces/src/provider/mod.rs +++ b/crates/interfaces/src/provider/mod.rs @@ -3,7 +3,7 @@ pub mod db_provider; mod error; mod storage; -pub use block::{BlockProvider, HeaderProvider}; +pub use block::{BlockProvider, ChainInfo, HeaderProvider}; pub use db_provider::{self as db, ProviderImpl}; pub use error::Error; pub use storage::{StateProvider, StateProviderFactory, StorageProvider}; diff --git a/crates/interfaces/src/test_utils/api.rs b/crates/interfaces/src/test_utils/api.rs new file mode 100644 index 000000000..fa9b6383d --- /dev/null +++ b/crates/interfaces/src/test_utils/api.rs @@ -0,0 +1,31 @@ +use crate::{provider, provider::BlockProvider}; +use reth_primitives::{rpc::BlockId, Block, BlockNumber, H256, U256}; + +/// Supports various api interfaces for testing purposes. +#[derive(Debug, Clone, Default)] +#[non_exhaustive] +pub struct TestApi; + +/// Noop implementation for testing purposes +impl BlockProvider for TestApi { + fn chain_info(&self) -> crate::Result { + Ok(provider::ChainInfo { + best_hash: Default::default(), + best_number: 0, + last_finalized: None, + safe_finalized: None, + }) + } + + fn block(&self, _id: BlockId) -> crate::Result> { + Ok(None) + } + + fn block_number(&self, _hash: H256) -> crate::Result> { + Ok(None) + } + + fn block_hash(&self, _number: U256) -> crate::Result> { + Ok(None) + } +} diff --git a/crates/interfaces/src/test_utils.rs b/crates/interfaces/src/test_utils/headers.rs similarity index 99% rename from crates/interfaces/src/test_utils.rs rename to crates/interfaces/src/test_utils/headers.rs index 32a805d8f..ddd9c0d13 100644 --- a/crates/interfaces/src/test_utils.rs +++ b/crates/interfaces/src/test_utils/headers.rs @@ -1,3 +1,4 @@ +//! Testing support for headers related interfaces. use crate::{ consensus::{self, Consensus}, p2p::headers::{ @@ -5,11 +6,9 @@ use crate::{ downloader::{DownloadError, Downloader}, }, }; -use std::{collections::HashSet, sync::Arc, time::Duration}; - use reth_primitives::{Header, SealedHeader, H256, H512, U256}; use reth_rpc_types::engine::ForkchoiceState; - +use std::{collections::HashSet, sync::Arc, time::Duration}; use tokio::sync::{broadcast, mpsc, watch}; use tokio_stream::{wrappers::BroadcastStream, StreamExt}; diff --git a/crates/interfaces/src/test_utils/mod.rs b/crates/interfaces/src/test_utils/mod.rs new file mode 100644 index 000000000..7f034b659 --- /dev/null +++ b/crates/interfaces/src/test_utils/mod.rs @@ -0,0 +1,5 @@ +mod api; +mod headers; + +pub use api::TestApi; +pub use headers::*;