Skip to content

Commit 976dce6

Browse files
Add integration test
1 parent f90e750 commit 976dce6

2 files changed

Lines changed: 88 additions & 0 deletions

File tree

  • cmd
    • crates/soroban-test/tests/it/integration/tx
    • soroban-cli/src/commands/tx/fetch

cmd/crates/soroban-test/tests/it/integration/tx/fetch.rs

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use soroban_cli::{
2+
commands::tx::fetch::GetTransactionEvents,
23
commands::tx::fetch::fee::FeeTable,
34
utils::transaction_hash,
45
xdr::{
@@ -284,6 +285,92 @@ async fn tx_fetch_fee() {
284285
);
285286
}
286287

288+
#[tokio::test]
289+
async fn tx_fetch_events() {
290+
let sandbox = &TestEnv::new();
291+
let test_account_alias = "test";
292+
let contract_id = deploy_contract(
293+
sandbox,
294+
HELLO_WORLD,
295+
DeployOptions {
296+
deployer: Some(test_account_alias.to_string()),
297+
..Default::default()
298+
},
299+
)
300+
.await;
301+
302+
let tx_xdr = sandbox
303+
.new_assert_cmd("contract")
304+
.arg("invoke")
305+
.arg("--build-only")
306+
.arg("--id")
307+
.arg(contract_id.clone())
308+
.arg("--network")
309+
.arg("local")
310+
.arg("--")
311+
.arg("log")
312+
.arg("--str")
313+
.arg("hi")
314+
.assert()
315+
.success()
316+
.stdout_as_str();
317+
318+
let tx_simulated = sandbox
319+
.new_assert_cmd("tx")
320+
.arg("simulate")
321+
.write_stdin(tx_xdr.as_bytes())
322+
.assert()
323+
.success()
324+
.stdout_as_str();
325+
326+
let signed = sandbox
327+
.new_assert_cmd("tx")
328+
.arg("sign")
329+
.arg("--sign-with-key")
330+
.arg("test")
331+
.write_stdin(tx_simulated.as_bytes())
332+
.assert()
333+
.success()
334+
.stdout_as_str();
335+
336+
sandbox
337+
.new_assert_cmd("tx")
338+
.arg("send")
339+
.write_stdin(signed.as_bytes())
340+
.assert()
341+
.success()
342+
.stdout_as_str();
343+
344+
let tx_env = TransactionEnvelope::from_xdr_base64(signed.clone(), Limits::none()).unwrap();
345+
let tx = if let TransactionEnvelope::Tx(env) = tx_env {
346+
env.tx
347+
} else {
348+
panic!("Expected TransactionEnvelope::Tx, got something else");
349+
};
350+
351+
let tx_hash = hex::encode(transaction_hash(&tx, &sandbox.network.network_passphrase).unwrap());
352+
353+
// fetch the tx events
354+
let output = sandbox
355+
.new_assert_cmd("tx")
356+
.arg("fetch")
357+
.arg("events")
358+
.arg("--hash")
359+
.arg(&tx_hash)
360+
.arg("--network")
361+
.arg("local")
362+
.arg("--output")
363+
.arg("json")
364+
.assert()
365+
.success()
366+
.stdout_as_str();
367+
368+
let parsed: GetTransactionEvents = serde_json::from_str(&output).unwrap();
369+
assert!(parsed.diagnostic_events.is_empty());
370+
assert_eq!(parsed.contract_events.len(), 1);
371+
assert_eq!(parsed.transaction_events.len(), 2);
372+
}
373+
287374
async fn add_account_data(
288375
sandbox: &TestEnv,
289376
account_alias: &str,

cmd/soroban-cli/src/commands/tx/fetch/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::{commands::global, config::network, xdr::Hash};
22
use clap::{command, Subcommand};
3+
pub use soroban_rpc::GetTransactionEvents;
34
use std::fmt::Debug;
45

56
mod args;

0 commit comments

Comments
 (0)