Skip to content

Commit fa4bb87

Browse files
committed
chore(sdk): status tests
1 parent e409956 commit fa4bb87

3 files changed

Lines changed: 61 additions & 4 deletions

File tree

packages/rs-sdk/src/platform/types/evonode.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use dapi_grpc::mock::Mockable;
55
use dapi_grpc::platform::v0::get_status_request::GetStatusRequestV0;
66
use dapi_grpc::platform::v0::{self as proto, get_status_request, GetStatusRequest};
77
use dapi_grpc::tonic::IntoRequest;
8+
pub use drive_proof_verifier::types::EvonodeStatus;
89
use futures::future::BoxFuture;
910
use futures::{FutureExt, TryFutureExt};
1011
use rs_dapi_client::transport::{
@@ -18,19 +19,28 @@ use std::fmt::Debug;
1819
///
1920
/// ## Example
2021
///
21-
/// ```rust
22-
/// use dash_sdk::{platform::query::EvoNode, Sdk};
22+
/// ```rust,no_run
23+
/// use dash_sdk::{platform::types::evonode::EvoNode,platform::FetchUnproved, Sdk};
24+
/// use drive_proof_verifier::types::EvonodeStatus;
2325
/// use futures::executor::block_on;
2426
///
2527
/// let sdk = Sdk::new_mock();
26-
/// let node = EvoNode::new("https://44.232.196.6:443".parse().unwrap());
27-
/// let status = block_on(node.get_status(&sdk)).unwrap();
28+
/// let uri: http::Uri = "http://127.0.0.1:1".parse().unwrap();
29+
/// let node = EvoNode::new(uri.into());
30+
/// let status = block_on(EvonodeStatus::fetch_unproved(&sdk, node)).unwrap();
2831
/// ```
2932
3033
#[derive(Debug, Clone)]
3134
#[cfg_attr(feature = "mocks", derive(Serialize, Deserialize))]
3235
pub struct EvoNode(Address);
3336

37+
impl EvoNode {
38+
/// Creates a new `EvoNode` with the given address.
39+
pub fn new(address: Address) -> Self {
40+
Self(address)
41+
}
42+
}
43+
3444
#[cfg(feature = "mocks")]
3545
impl Mockable for EvoNode {
3646
fn mock_deserialize(data: &[u8]) -> Option<Self> {
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//! Test evo node status and other node-related functionality.
2+
3+
use dash_sdk::platform::{types::evonode::EvoNode, FetchUnproved};
4+
use drive_proof_verifier::types::EvonodeStatus;
5+
use http::Uri;
6+
7+
use super::{common::setup_logs, config::Config};
8+
9+
/// Given some existing evonode URIs, WHEN we connect to them, THEN we get status.
10+
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
11+
async fn test_evonode_status() {
12+
setup_logs();
13+
14+
let cfg = Config::new();
15+
let sdk = cfg.setup_api("test_evonode_status").await;
16+
17+
let addresses = sdk.address_list().unwrap();
18+
19+
for address in addresses.addresses() {
20+
let node = EvoNode::new(address.clone());
21+
let status = EvonodeStatus::fetch_unproved(&sdk, node)
22+
.await
23+
.expect("fetch evonode status")
24+
.expect("found evonode status");
25+
26+
tracing::debug!(?status, ?address, "evonode status");
27+
}
28+
}
29+
30+
/// Given invalid evonode URI, when we request status, we get error.
31+
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
32+
async fn test_evonode_status_refused() {
33+
setup_logs();
34+
35+
let cfg = Config::new();
36+
let sdk = cfg.setup_api("test_evonode_status_refused").await;
37+
38+
let uri: Uri = "http://127.0.0.1:1".parse().unwrap();
39+
40+
let node = EvoNode::new(uri.clone().into());
41+
let result = EvonodeStatus::fetch_unproved(&sdk, node).await;
42+
43+
assert!(result.is_err());
44+
45+
tracing::debug!(?result, ?uri, "evonode status");
46+
}

packages/rs-sdk/tests/fetch/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ mod contested_resource_voters;
1717
mod data_contract;
1818
mod document;
1919
mod epoch;
20+
mod evonode;
2021
mod identity;
2122
mod identity_contract_nonce;
2223
mod mock_fetch;

0 commit comments

Comments
 (0)