@@ -36,6 +36,7 @@ use apollo_mempool_types::errors::MempoolError;
3636use apollo_mempool_types:: mempool_types:: { AccountState , AddTransactionArgs , ValidationArgs } ;
3737use apollo_metrics:: metrics:: HistogramValue ;
3838use apollo_network_types:: network_types:: BroadcastedMessageMetadata ;
39+ use apollo_proof_manager_types:: MockProofManagerClient ;
3940use apollo_test_utils:: { get_rng, GetTestInstance } ;
4041use blockifier:: blockifier:: config:: ContractClassManagerConfig ;
4142use blockifier:: context:: ChainInfo ;
@@ -53,6 +54,7 @@ use starknet_api::executable_transaction::AccountTransaction;
5354use starknet_api:: rpc_transaction:: {
5455 InternalRpcTransaction ,
5556 RpcDeclareTransaction ,
57+ RpcInvokeTransaction ,
5658 RpcTransaction ,
5759 RpcTransactionLabelValue ,
5860} ;
@@ -136,13 +138,15 @@ fn mock_dependencies() -> MockDependencies {
136138 let mock_transaction_converter = MockTransactionConverterTrait :: new ( ) ;
137139 let mock_stateless_transaction_validator = mock_stateless_transaction_validator ( ) ;
138140 let mock_proof_archive_writer = MockProofArchiveWriterTrait :: new ( ) ;
141+ let mock_proof_manager_client = MockProofManagerClient :: new ( ) ;
139142 MockDependencies {
140143 config,
141144 state_reader_factory,
142145 mock_mempool_client,
143146 mock_transaction_converter,
144147 mock_stateless_transaction_validator,
145148 mock_proof_archive_writer,
149+ mock_proof_manager_client,
146150 }
147151}
148152
@@ -153,6 +157,7 @@ struct MockDependencies {
153157 mock_transaction_converter : MockTransactionConverterTrait ,
154158 mock_stateless_transaction_validator : MockStatelessTransactionValidatorTrait ,
155159 mock_proof_archive_writer : MockProofArchiveWriterTrait ,
160+ mock_proof_manager_client : MockProofManagerClient ,
156161}
157162
158163impl MockDependencies {
@@ -165,6 +170,7 @@ impl MockDependencies {
165170 Arc :: new ( self . mock_transaction_converter ) ,
166171 Arc :: new ( self . mock_stateless_transaction_validator ) ,
167172 Arc :: new ( self . mock_proof_archive_writer ) ,
173+ Arc :: new ( self . mock_proof_manager_client ) ,
168174 )
169175 }
170176
@@ -175,6 +181,14 @@ impl MockDependencies {
175181 fn expect_validate_tx ( & mut self , args : ValidationArgs , result : MempoolClientResult < ( ) > ) {
176182 self . mock_mempool_client . expect_validate_tx ( ) . once ( ) . with ( eq ( args) ) . return_once ( |_| result) ;
177183 }
184+
185+ fn expect_set_proof ( & mut self , proof_facts : ProofFacts , proof : Proof ) {
186+ self . mock_proof_manager_client
187+ . expect_set_proof ( )
188+ . once ( )
189+ . with ( eq ( proof_facts) , eq ( proof) )
190+ . return_once ( |_, _| Ok ( ( ) ) ) ;
191+ }
178192}
179193
180194fn account_contract ( ) -> FeatureContract {
@@ -291,6 +305,14 @@ async fn setup_mock_state(
291305 & mut mock_dependencies. state_reader_factory . state_reader . blockifier_state_reader ,
292306 ) ;
293307
308+ // If the transaction has proof facts, expect set_proof to be called on the proof manager.
309+ if let RpcTransaction :: Invoke ( RpcInvokeTransaction :: V3 ( ref invoke_tx) ) = input_tx {
310+ if !invoke_tx. proof_facts . is_empty ( ) {
311+ mock_dependencies
312+ . expect_set_proof ( invoke_tx. proof_facts . clone ( ) , invoke_tx. proof . clone ( ) ) ;
313+ }
314+ }
315+
294316 let mempool_add_tx_args = AddTransactionArgs {
295317 tx : expected_internal_tx. clone ( ) ,
296318 account_state : AccountState { address, nonce : * input_tx. nonce ( ) } ,
@@ -580,6 +602,7 @@ async fn add_tx_returns_error_when_extract_state_nonce_and_run_validations_fails
580602 mempool_client : Arc :: new ( mock_dependencies. mock_mempool_client ) ,
581603 transaction_converter : Arc :: new ( mock_dependencies. mock_transaction_converter ) ,
582604 proof_archive_writer : Arc :: new ( mock_dependencies. mock_proof_archive_writer ) ,
605+ proof_manager_client : Arc :: new ( mock_dependencies. mock_proof_manager_client ) ,
583606 } ;
584607
585608 let result = gateway. add_tx ( tx_args. get_rpc_tx ( ) , None ) . await ;
@@ -633,6 +656,7 @@ async fn add_tx_returns_error_when_instantiating_validator_fails(
633656 mempool_client : Arc :: new ( mock_dependencies. mock_mempool_client ) ,
634657 transaction_converter : Arc :: new ( mock_dependencies. mock_transaction_converter ) ,
635658 proof_archive_writer : Arc :: new ( mock_dependencies. mock_proof_archive_writer ) ,
659+ proof_manager_client : Arc :: new ( mock_dependencies. mock_proof_manager_client ) ,
636660 } ;
637661
638662 let result = gateway. add_tx ( tx_args. get_rpc_tx ( ) , None ) . await ;
0 commit comments