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