pub mod accounts_request;
pub mod single_account_request;
pub mod response;
pub(crate) static ACCOUNTS_PATH: &str = "accounts";
pub mod prelude {
pub use super::accounts_request::*;
pub use super::response::*;
pub use super::single_account_request::*;
}
#[cfg(test)]
pub mod test {
use super::prelude::*;
use crate::horizon_client::HorizonClient;
static ACCOUNT_ID: &str = "GDIGRW2H37U3O5WPMQFWGN35DDVZAYYTIMGLYVQI4XTATZBW4FXEATRE";
static LAST_MODIFIED_TIME: &str = "2024-06-12T17:21:23Z";
static SEQUENCE: &str = "5471788335106";
static SUBENTRY_COUNT: &u32 = &0;
static LAST_MODIFIED_LEDGER: u64 = 14055;
static LOW_THRESHOLD: &u32 = &0;
static MID_THRESOLD: &u32 = &0;
static HIGH_THRESOLD: &u32 = &0;
static AUTH_REQUIRED: &bool = &true;
static AUTH_REVOCABLE: &bool = &true;
static AUTH_IMMUTABLE: &bool = &false;
static AUTH_CLAWBACK_ENABLED: &bool = &false;
static BALANCE: &str = "4.9999600";
static ASSET_TYPE: &str = "native";
static BUYING_LIABILITY: &str = "0.0000000";
static SELLING_LIABILITY: &str = "0.0000000";
static WEIGHT: &u32 = &1;
static SIGNER_TYPE: &str = "ed25519_public_key";
static NUM_SPONSORING: &u32 = &0;
static NUM_SPONSORED: &u32 = &0;
#[tokio::test]
async fn test_get_account_list() {
let horizon_client = HorizonClient::new("https://horizon-testnet.stellar.org").unwrap();
let accounts_request = AccountsRequest::new()
.set_signer_filter(ACCOUNT_ID)
.unwrap()
.set_limit(10)
.unwrap();
let accounts_response: Result<AccountsResponse, String> =
horizon_client.get_account_list(&accounts_request).await;
assert!(accounts_response.is_ok());
let binding = accounts_response.unwrap();
let response = &binding.embedded().records()[0];
assert_eq!(response.account_id(), ACCOUNT_ID);
assert_eq!(response.id(), ACCOUNT_ID);
assert_eq!(response.sequence(), SEQUENCE);
assert_eq!(response.subentry_count(), SUBENTRY_COUNT);
assert_eq!(response.last_modified_ledger(), &LAST_MODIFIED_LEDGER);
assert_eq!(response.last_modified_time(), LAST_MODIFIED_TIME);
assert_eq!(response.thresholds().low_threshold(), LOW_THRESHOLD);
assert_eq!(response.thresholds().med_threshold(), MID_THRESOLD);
assert_eq!(response.thresholds().high_threshold(), HIGH_THRESOLD);
assert_eq!(response.flags().auth_required(), AUTH_REQUIRED);
assert_eq!(response.flags().auth_revocable(), AUTH_REVOCABLE);
assert_eq!(response.flags().auth_immutable(), AUTH_IMMUTABLE);
assert_eq!(
response.flags().auth_clawback_enabled(),
AUTH_CLAWBACK_ENABLED
);
assert_eq!(response.balances()[0].balance(), BALANCE);
assert_eq!(response.balances()[0].asset_type(), ASSET_TYPE);
assert_eq!(
response.balances()[0].buying_liabilities(),
BUYING_LIABILITY
);
assert_eq!(
response.balances()[0].selling_liabilities(),
SELLING_LIABILITY
);
assert_eq!(response.signers()[0].key(), ACCOUNT_ID);
assert_eq!(response.signers()[0].weight(), WEIGHT);
assert_eq!(response.signers()[0].singer_type(), SIGNER_TYPE);
assert_eq!(response.num_sponsoring(), NUM_SPONSORING);
assert_eq!(response.num_sponsored(), NUM_SPONSORED);
assert_eq!(response.paging_token(), ACCOUNT_ID);
}
#[tokio::test]
async fn test_get_single_account() {
let horizon_client = HorizonClient::new("https://horizon-testnet.stellar.org").unwrap();
let single_account_request = SingleAccountRequest::new()
.set_account_id(ACCOUNT_ID)
.unwrap();
let single_account_response = horizon_client
.get_single_account(&single_account_request)
.await;
assert!(single_account_response.is_ok());
let response = single_account_response.unwrap();
assert_eq!(response.account_id().to_string(), ACCOUNT_ID);
assert_eq!(response.sequence().to_string(), SEQUENCE);
assert_eq!(response.subentry_count(), SUBENTRY_COUNT);
assert_eq!(response.last_modified_ledger(), &LAST_MODIFIED_LEDGER);
assert_eq!(response.last_modified_time(), LAST_MODIFIED_TIME);
assert_eq!(response.thresholds().low_threshold(), LOW_THRESHOLD);
assert_eq!(response.thresholds().med_threshold(), MID_THRESOLD);
assert_eq!(response.thresholds().high_threshold(), HIGH_THRESOLD);
assert_eq!(response.flags().auth_required(), AUTH_REQUIRED);
assert_eq!(response.flags().auth_revocable(), AUTH_REVOCABLE);
assert_eq!(response.flags().auth_immutable(), AUTH_IMMUTABLE);
assert_eq!(
response.flags().auth_clawback_enabled(),
AUTH_CLAWBACK_ENABLED
);
assert_eq!(response.balances()[0].balance(), BALANCE);
assert_eq!(response.balances()[0].asset_type(), ASSET_TYPE);
assert_eq!(
response.balances()[0].buying_liabilities(),
BUYING_LIABILITY
);
assert_eq!(
response.balances()[0].selling_liabilities(),
SELLING_LIABILITY
);
assert_eq!(response.signers()[0].key(), ACCOUNT_ID);
assert_eq!(response.signers()[0].weight(), WEIGHT);
assert_eq!(response.signers()[0].singer_type(), SIGNER_TYPE);
assert_eq!(response.num_sponsoring(), NUM_SPONSORING);
assert_eq!(response.num_sponsored(), NUM_SPONSORED);
assert_eq!(response.paging_token(), ACCOUNT_ID);
}
}