Skip to content

Commit a594cf9

Browse files
blockifier: add a client side proving test state
1 parent 07a97a2 commit a594cf9

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

crates/blockifier/src/test_utils/initial_test_state.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::state::state_reader_and_contract_manager::{
1818
};
1919
use crate::test_utils::contracts::FeatureContractData;
2020
use crate::test_utils::dict_state_reader::DictStateReader;
21+
use crate::test_utils::generate_block_hash_storage_updates;
2122

2223
/// Utility to fund an account.
2324
pub fn fund_account(
@@ -104,13 +105,16 @@ pub fn test_state(
104105
.iter()
105106
.map(|(feature_contract, i)| ((*feature_contract).into(), *i))
106107
.collect();
107-
test_state_inner(
108+
let mut state = test_state_inner(
108109
chain_info,
109110
initial_balances,
110111
&contract_instances_vec[..],
111112
&HashVersion::V2,
112113
erc20_version,
113-
)
114+
);
115+
let block_hash_mapping = generate_block_hash_storage_updates();
116+
state.state.storage_view.extend(block_hash_mapping.storage);
117+
state
114118
}
115119

116120
pub fn test_state_with_contract_manager(

crates/blockifier/src/transaction/account_transactions_test.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ use starknet_api::transaction::fields::{
5555
ContractAddressSalt,
5656
Fee,
5757
GasVectorComputationMode,
58+
ProofFacts,
5859
Resource,
5960
ResourceBounds,
6061
ValidResourceBounds,
@@ -2191,3 +2192,31 @@ fn test_missing_validate_entrypoint_rejects(
21912192
if ret == retdata![Felt::from_hex(ENTRYPOINT_NOT_FOUND_ERROR).unwrap()]
21922193
);
21932194
}
2195+
2196+
#[rstest]
2197+
fn test_invoke_tx_with_proof_facts(
2198+
block_context: BlockContext,
2199+
default_all_resource_bounds: ValidResourceBounds,
2200+
) {
2201+
let TestInitData { mut state, account_address, contract_address, mut nonce_manager } =
2202+
create_test_init_data(
2203+
&block_context.chain_info,
2204+
CairoVersion::Cairo1(RunnableCairo1::Casm),
2205+
);
2206+
2207+
// Create an invoke transaction with valid proof facts.
2208+
let tx_execution_info = run_invoke_tx(
2209+
&mut state,
2210+
&block_context,
2211+
invoke_tx_args! {
2212+
sender_address: account_address,
2213+
calldata: create_trivial_calldata(contract_address),
2214+
resource_bounds: default_all_resource_bounds,
2215+
nonce: nonce_manager.next(account_address),
2216+
proof_facts: ProofFacts::snos_proof_facts_for_testing(),
2217+
},
2218+
)
2219+
.unwrap();
2220+
2221+
assert!(!tx_execution_info.is_reverted());
2222+
}

0 commit comments

Comments
 (0)