@@ -130,11 +130,13 @@ fn mock_dependencies() -> MockDependencies {
130
130
local_test_state_reader_factory ( CairoVersion :: Cairo1 ( RunnableCairo1 :: Casm ) , true ) ;
131
131
let mock_mempool_client = MockMempoolClient :: new ( ) ;
132
132
let mock_transaction_converter = MockTransactionConverterTrait :: new ( ) ;
133
+ let mock_stateless_transaction_validator = mock_stateless_transaction_validator ( ) ;
133
134
MockDependencies {
134
135
config,
135
136
state_reader_factory,
136
137
mock_mempool_client,
137
138
mock_transaction_converter,
139
+ mock_stateless_transaction_validator,
138
140
}
139
141
}
140
142
@@ -143,6 +145,7 @@ struct MockDependencies {
143
145
state_reader_factory : TestStateReaderFactory ,
144
146
mock_mempool_client : MockMempoolClient ,
145
147
mock_transaction_converter : MockTransactionConverterTrait ,
148
+ mock_stateless_transaction_validator : MockStatelessTransactionValidatorTrait ,
146
149
}
147
150
148
151
impl MockDependencies {
@@ -153,6 +156,7 @@ impl MockDependencies {
153
156
Arc :: new ( self . state_reader_factory ) ,
154
157
Arc :: new ( self . mock_mempool_client ) ,
155
158
Arc :: new ( self . mock_transaction_converter ) ,
159
+ Arc :: new ( self . mock_stateless_transaction_validator ) ,
156
160
)
157
161
}
158
162
@@ -309,28 +313,13 @@ async fn run_add_tx_and_extract_metrics(
309
313
AddTxResults { result, metric_handle_for_queries, metrics }
310
314
}
311
315
312
- #[ derive( Default ) ]
313
- pub struct ProcessTxOverrides {
314
- pub mock_stateful_transaction_validator_factory :
315
- Option < MockStatefulTransactionValidatorFactoryTrait > ,
316
- pub mock_stateless_transaction_validator : Option < MockStatelessTransactionValidatorTrait > ,
317
- }
318
-
319
- fn process_tx_task ( overrides : ProcessTxOverrides ) -> ProcessTxBlockingTask {
320
- let mock_validator_factory = overrides
321
- . mock_stateful_transaction_validator_factory
322
- . unwrap_or_else ( mock_stateful_transaction_validator_factory) ;
323
-
324
- let mock_stateless_transaction_validator = overrides
325
- . mock_stateless_transaction_validator
326
- . unwrap_or_else ( mock_stateless_transaction_validator) ;
327
-
316
+ fn process_tx_task (
317
+ stateful_transaction_validator_factory : MockStatefulTransactionValidatorFactoryTrait ,
318
+ ) -> ProcessTxBlockingTask {
328
319
ProcessTxBlockingTask {
329
- stateless_tx_validator : Arc :: new ( mock_stateless_transaction_validator) ,
330
- stateful_tx_validator_factory : Arc :: new ( mock_validator_factory) ,
320
+ stateful_tx_validator_factory : Arc :: new ( stateful_transaction_validator_factory) ,
331
321
state_reader_factory : Arc :: new ( MockStateReaderFactory :: new ( ) ) ,
332
322
mempool_client : Arc :: new ( MockMempoolClient :: new ( ) ) ,
333
- tx : invoke_args ( ) . get_rpc_tx ( ) ,
334
323
internal_tx : invoke_args ( ) . get_internal_tx ( ) ,
335
324
executable_tx : executable_invoke_tx ( invoke_args ( ) ) ,
336
325
runtime : tokio:: runtime:: Handle :: current ( ) ,
@@ -577,13 +566,7 @@ async fn process_tx_returns_error_when_extract_state_nonce_and_run_validations_f
577
566
. expect_instantiate_validator ( )
578
567
. return_once ( |_| Ok ( Box :: new ( mock_stateful_transaction_validator) ) ) ;
579
568
580
- let overrides = ProcessTxOverrides {
581
- mock_stateful_transaction_validator_factory : Some (
582
- mock_stateful_transaction_validator_factory,
583
- ) ,
584
- ..Default :: default ( )
585
- } ;
586
- let process_tx_task = process_tx_task ( overrides) ;
569
+ let process_tx_task = process_tx_task ( mock_stateful_transaction_validator_factory) ;
587
570
588
571
let result = tokio:: task:: spawn_blocking ( move || process_tx_task. process_tx ( ) ) . await . unwrap ( ) ;
589
572
@@ -593,27 +576,20 @@ async fn process_tx_returns_error_when_extract_state_nonce_and_run_validations_f
593
576
594
577
#[ rstest]
595
578
#[ tokio:: test]
596
- async fn process_tx_returns_error_for_one_stateless_error_variant ( ) {
579
+ async fn stateless_transaction_validator_error ( mut mock_dependencies : MockDependencies ) {
597
580
let arbitrary_validation_error = Err ( StatelessTransactionValidatorError :: SignatureTooLong {
598
581
signature_length : 5001 ,
599
582
max_signature_length : 4000 ,
600
583
} ) ;
601
584
let error_code =
602
585
StarknetErrorCode :: UnknownErrorCode ( "StarknetErrorCode.SIGNATURE_TOO_LONG" . into ( ) ) ;
603
-
604
586
let mut mock_stateless_transaction_validator = MockStatelessTransactionValidatorTrait :: new ( ) ;
605
587
mock_stateless_transaction_validator
606
588
. expect_validate ( )
607
589
. return_once ( |_| arbitrary_validation_error) ;
608
-
609
- let overrides = ProcessTxOverrides {
610
- mock_stateless_transaction_validator : Some ( mock_stateless_transaction_validator) ,
611
- ..Default :: default ( )
612
- } ;
613
- let task = process_tx_task ( overrides) ;
614
-
615
- let result: Result < AddTransactionArgs , StarknetError > =
616
- tokio:: task:: spawn_blocking ( move || task. process_tx ( ) ) . await . unwrap ( ) ;
590
+ mock_dependencies. mock_stateless_transaction_validator = mock_stateless_transaction_validator;
591
+ let gateway = mock_dependencies. gateway ( ) ;
592
+ let result = gateway. add_tx ( invoke_args ( ) . get_rpc_tx ( ) , None ) . await ;
617
593
618
594
assert ! ( result. is_err( ) ) ;
619
595
assert_eq ! ( result. unwrap_err( ) . code, error_code) ;
@@ -633,13 +609,7 @@ async fn process_tx_returns_error_when_instantiating_validator_fails(
633
609
. expect_instantiate_validator ( )
634
610
. return_once ( |_| Err ( expected_error) ) ;
635
611
636
- let overrides = ProcessTxOverrides {
637
- mock_stateful_transaction_validator_factory : Some (
638
- mock_stateful_transaction_validator_factory,
639
- ) ,
640
- ..Default :: default ( )
641
- } ;
642
- let process_tx_task = process_tx_task ( overrides) ;
612
+ let process_tx_task = process_tx_task ( mock_stateful_transaction_validator_factory) ;
643
613
644
614
let result = tokio:: task:: spawn_blocking ( move || process_tx_task. process_tx ( ) ) . await . unwrap ( ) ;
645
615
0 commit comments