Skip to content

Commit 4a717d2

Browse files
committed
test(oracle): verify ledger object lifecycle
1 parent 599810f commit 4a717d2

3 files changed

Lines changed: 75 additions & 1 deletion

File tree

src/models/requests/account_objects.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ pub enum AccountObjectType {
1717
DepositPreauth,
1818
Escrow,
1919
Offer,
20+
Oracle,
2021
PaymentChannel,
2122
SignerList,
2223
State,
@@ -43,7 +44,7 @@ pub struct AccountObjects<'a> {
4344
pub ledger_lookup: Option<LookupByLedgerRequest<'a>>,
4445
/// If included, filter results to include only this type
4546
/// of ledger object. The valid types are: check, deposit_preauth,
46-
/// escrow, offer, payment_channel, signer_list, ticket,
47+
/// escrow, offer, oracle, payment_channel, signer_list, ticket,
4748
/// and state (trust line).
4849
pub r#type: Option<AccountObjectType>,
4950
/// If true, the response only includes objects that would block

tests/transactions/oracle_delete.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
use crate::common::{
1111
generate_funded_wallet, get_ledger_close_time, test_transaction, with_blockchain_lock,
1212
};
13+
use xrpl::asynch::clients::XRPLAsyncClient;
14+
use xrpl::models::requests::account_objects::{AccountObjectType, AccountObjects};
15+
use xrpl::models::requests::LedgerIndex;
16+
use xrpl::models::results::account_objects::AccountObjects as AccountObjectsResult;
1317
use xrpl::models::transactions::oracle_delete::OracleDelete;
1418
use xrpl::models::transactions::oracle_set::OracleSet;
1519
use xrpl::models::transactions::{CommonFields, PriceData, TransactionType};
@@ -102,6 +106,31 @@ async fn test_oracle_delete_submit() {
102106
oracle_document_id,
103107
);
104108
test_transaction(&mut oracle_delete, &wallet).await;
109+
110+
let client = crate::common::get_client().await;
111+
let response = client
112+
.request(
113+
AccountObjects::new(
114+
None,
115+
wallet.classic_address.clone().into(),
116+
None,
117+
Some(LedgerIndex::Str("validated".into())),
118+
Some(AccountObjectType::Oracle),
119+
None,
120+
None,
121+
None,
122+
)
123+
.into(),
124+
)
125+
.await
126+
.expect("account_objects oracle request failed");
127+
let result: AccountObjectsResult = response
128+
.try_into()
129+
.expect("failed to parse account_objects result");
130+
assert!(
131+
result.account_objects.is_empty(),
132+
"Oracle object should be deleted"
133+
);
105134
})
106135
.await;
107136
}

tests/transactions/oracle_set.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
use crate::common::{
1111
generate_funded_wallet, get_ledger_close_time, test_transaction, with_blockchain_lock,
1212
};
13+
use xrpl::asynch::clients::XRPLAsyncClient;
14+
use xrpl::models::requests::account_objects::{AccountObjectType, AccountObjects};
15+
use xrpl::models::requests::LedgerIndex;
16+
use xrpl::models::results::account_objects::AccountObjects as AccountObjectsResult;
1317
use xrpl::models::transactions::oracle_set::OracleSet;
1418
use xrpl::models::transactions::{CommonFields, PriceData, TransactionType};
1519

@@ -108,6 +112,46 @@ async fn test_oracle_set_submit() {
108112
);
109113

110114
test_transaction(&mut oracle_set, &wallet).await;
115+
116+
let client = crate::common::get_client().await;
117+
let response = client
118+
.request(
119+
AccountObjects::new(
120+
None,
121+
wallet.classic_address.clone().into(),
122+
None,
123+
Some(LedgerIndex::Str("validated".into())),
124+
Some(AccountObjectType::Oracle),
125+
None,
126+
None,
127+
None,
128+
)
129+
.into(),
130+
)
131+
.await
132+
.expect("account_objects oracle request failed");
133+
let result: AccountObjectsResult = response
134+
.try_into()
135+
.expect("failed to parse account_objects result");
136+
assert_eq!(result.account_objects.len(), 1);
137+
let oracle = &result.account_objects[0];
138+
assert_eq!(oracle["LedgerEntryType"], "Oracle");
139+
assert_eq!(oracle["Owner"], wallet.classic_address);
140+
assert_eq!(oracle["Provider"], "636861696E6C696E6B");
141+
assert_eq!(oracle["AssetClass"], "63757272656E6379");
142+
assert_eq!(
143+
oracle["PriceDataSeries"][0]["PriceData"]["BaseAsset"],
144+
"XRP"
145+
);
146+
assert_eq!(
147+
oracle["PriceDataSeries"][0]["PriceData"]["QuoteAsset"],
148+
"USD"
149+
);
150+
assert_eq!(
151+
oracle["PriceDataSeries"][0]["PriceData"]["AssetPrice"],
152+
"2e4"
153+
);
154+
assert_eq!(oracle["PriceDataSeries"][0]["PriceData"]["Scale"], 1);
111155
})
112156
.await;
113157
}

0 commit comments

Comments
 (0)