@@ -4,8 +4,8 @@ use blockifier_reexecution::state_reader::rpc_objects::BlockId;
44use blockifier_test_utils:: calldata:: create_calldata;
55use rstest:: rstest;
66use starknet_api:: core:: ContractAddress ;
7- use starknet_api:: invoke_tx_args;
87use starknet_api:: test_utils:: invoke:: invoke_tx;
8+ use starknet_api:: { contract_address, felt, invoke_tx_args} ;
99
1010use crate :: runner:: VirtualSnosRunner ;
1111use crate :: test_utils:: {
@@ -49,3 +49,45 @@ async fn test_run_os_with_balance_of_transaction() {
4949 . await
5050 . expect ( "run_virtual_os should succeed" ) ;
5151}
52+
53+ /// Integration test for the full Runner flow with a STRK transfer transaction.
54+ ///
55+ /// # Running
56+ ///
57+ /// ```bash
58+ /// SEPOLIA_NODE_URL=https://your-rpc-node cargo test -p starknet_os_runner test_run_os_with_transfer_transaction -- --ignored
59+ /// ```
60+ #[ rstest]
61+ #[ tokio:: test( flavor = "multi_thread" ) ]
62+ #[ ignore] // Requires RPC access.
63+ async fn test_run_os_with_transfer_transaction ( ) {
64+ let strk_token = ContractAddress :: try_from ( STRK_TOKEN_ADDRESS_SEPOLIA ) . unwrap ( ) ;
65+ let account = ContractAddress :: try_from ( DUMMY_ACCOUNT_ADDRESS ) . unwrap ( ) ;
66+ let recipient = contract_address ! ( "0x123" ) ;
67+
68+ // Transfer amount: 1 wei (u256 = low + high * 2^128).
69+ let amount_low = felt ! ( "1" ) ;
70+ let amount_high = felt ! ( "0" ) ;
71+
72+ // Calldata matches dummy account's __execute__(contract_address, selector, calldata).
73+ // transfer(recipient, amount) where amount is u256 (low, high).
74+ let calldata =
75+ create_calldata ( strk_token, "transfer" , & [ recipient. into ( ) , amount_low, amount_high] ) ;
76+
77+ let resource_bounds = default_resource_bounds_for_client_side_tx ( ) ;
78+
79+ let invoke_tx = invoke_tx ( invoke_tx_args ! {
80+ sender_address: account,
81+ calldata,
82+ resource_bounds,
83+ } ) ;
84+
85+ let factory = sepolia_runner_factory ( ) ;
86+ let block_id = BlockId :: Latest ;
87+
88+ // Verify execution succeeds.
89+ factory
90+ . run_virtual_os ( block_id, vec ! [ ( invoke_tx) ] )
91+ . await
92+ . expect ( "run_virtual_os should succeed" ) ;
93+ }
0 commit comments