iota_cluster_test/test_case/
fullnode_build_publish_transaction_test.rs1use async_trait::async_trait;
6use iota_core::test_utils::compile_basics_package;
7use iota_json_rpc_types::IotaTransactionBlockEffectsAPI;
8use iota_types::{base_types::ObjectID, object::Owner};
9use jsonrpsee::rpc_params;
10
11use crate::{TestCaseImpl, TestContext};
12
13pub struct FullNodeBuildPublishTransactionTest;
14
15#[async_trait]
16impl TestCaseImpl for FullNodeBuildPublishTransactionTest {
17 fn name(&self) -> &'static str {
18 "FullNodeBuildPublishTransaction"
19 }
20
21 fn description(&self) -> &'static str {
22 "Test building publish transaction via full node"
23 }
24
25 async fn run(&self, ctx: &mut TestContext) -> Result<(), anyhow::Error> {
26 let compiled_package = compile_basics_package();
27 let all_module_bytes =
28 compiled_package.get_package_base64(false);
29 let dependencies = compiled_package.get_dependency_storage_package_ids();
30
31 let params = rpc_params![
32 ctx.get_wallet_address(),
33 all_module_bytes,
34 dependencies,
35 None::<ObjectID>,
36 50_000_000.to_string()
38 ];
39
40 let data = ctx
41 .build_transaction_remotely("unsafe_publish", params)
42 .await?;
43 let response = ctx.sign_and_execute(data, "publish basics package").await;
44 response
45 .effects
46 .as_ref()
47 .unwrap()
48 .created()
49 .iter()
50 .find(|obj_ref| obj_ref.owner == Owner::Immutable)
51 .unwrap();
52
53 Ok(())
54 }
55}