@@ -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
@@ -313,28 +317,13 @@ async fn run_add_tx_and_extract_metrics(
313
317
AddTxResults { result, metric_handle_for_queries, metrics }
314
318
}
315
319
316
- #[ derive( Default ) ]
317
- pub struct ProcessTxOverrides {
318
- pub mock_stateful_transaction_validator_factory :
319
- Option < MockStatefulTransactionValidatorFactoryTrait > ,
320
- pub mock_stateless_transaction_validator : Option < MockStatelessTransactionValidatorTrait > ,
321
- }
322
-
323
- fn process_tx_task ( overrides : ProcessTxOverrides ) -> ProcessTxBlockingTask {
324
- let mock_validator_factory = overrides
325
- . mock_stateful_transaction_validator_factory
326
- . unwrap_or_else ( mock_stateful_transaction_validator_factory) ;
327
-
328
- let mock_stateless_transaction_validator = overrides
329
- . mock_stateless_transaction_validator
330
- . unwrap_or_else ( mock_stateless_transaction_validator) ;
331
-
320
+ fn process_tx_task (
321
+ stateful_transaction_validator_factory : MockStatefulTransactionValidatorFactoryTrait ,
322
+ ) -> ProcessTxBlockingTask {
332
323
ProcessTxBlockingTask {
333
- stateless_tx_validator : Arc :: new ( mock_stateless_transaction_validator) ,
334
- stateful_tx_validator_factory : Arc :: new ( mock_validator_factory) ,
324
+ stateful_tx_validator_factory : Arc :: new ( stateful_transaction_validator_factory) ,
335
325
state_reader_factory : Arc :: new ( MockStateReaderFactory :: new ( ) ) ,
336
326
mempool_client : Arc :: new ( MockMempoolClient :: new ( ) ) ,
337
- tx : invoke_args ( ) . get_rpc_tx ( ) ,
338
327
internal_tx : invoke_args ( ) . get_internal_tx ( ) ,
339
328
executable_tx : executable_invoke_tx ( invoke_args ( ) ) ,
340
329
runtime : tokio:: runtime:: Handle :: current ( ) ,
@@ -581,13 +570,7 @@ async fn process_tx_returns_error_when_extract_state_nonce_and_run_validations_f
581
570
. expect_instantiate_validator ( )
582
571
. return_once ( |_| Ok ( Box :: new ( mock_stateful_transaction_validator) ) ) ;
583
572
584
- let overrides = ProcessTxOverrides {
585
- mock_stateful_transaction_validator_factory : Some (
586
- mock_stateful_transaction_validator_factory,
587
- ) ,
588
- ..Default :: default ( )
589
- } ;
590
- let process_tx_task = process_tx_task ( overrides) ;
573
+ let process_tx_task = process_tx_task ( mock_stateful_transaction_validator_factory) ;
591
574
592
575
let result = tokio:: task:: spawn_blocking ( move || process_tx_task. process_tx ( ) ) . await . unwrap ( ) ;
593
576
@@ -597,27 +580,20 @@ async fn process_tx_returns_error_when_extract_state_nonce_and_run_validations_f
597
580
598
581
#[ rstest]
599
582
#[ tokio:: test]
600
- async fn process_tx_returns_error_for_one_stateless_error_variant ( ) {
583
+ async fn stateless_transaction_validator_error ( mut mock_dependencies : MockDependencies ) {
601
584
let arbitrary_validation_error = Err ( StatelessTransactionValidatorError :: SignatureTooLong {
602
585
signature_length : 5001 ,
603
586
max_signature_length : 4000 ,
604
587
} ) ;
605
588
let error_code =
606
589
StarknetErrorCode :: UnknownErrorCode ( "StarknetErrorCode.SIGNATURE_TOO_LONG" . into ( ) ) ;
607
-
608
590
let mut mock_stateless_transaction_validator = MockStatelessTransactionValidatorTrait :: new ( ) ;
609
591
mock_stateless_transaction_validator
610
592
. expect_validate ( )
611
593
. return_once ( |_| arbitrary_validation_error) ;
612
-
613
- let overrides = ProcessTxOverrides {
614
- mock_stateless_transaction_validator : Some ( mock_stateless_transaction_validator) ,
615
- ..Default :: default ( )
616
- } ;
617
- let task = process_tx_task ( overrides) ;
618
-
619
- let result: Result < AddTransactionArgs , StarknetError > =
620
- tokio:: task:: spawn_blocking ( move || task. process_tx ( ) ) . await . unwrap ( ) ;
594
+ mock_dependencies. mock_stateless_transaction_validator = mock_stateless_transaction_validator;
595
+ let gateway = mock_dependencies. gateway ( ) ;
596
+ let result = gateway. add_tx ( invoke_args ( ) . get_rpc_tx ( ) , None ) . await ;
621
597
622
598
assert ! ( result. is_err( ) ) ;
623
599
assert_eq ! ( result. unwrap_err( ) . code, error_code) ;
@@ -637,13 +613,7 @@ async fn process_tx_returns_error_when_instantiating_validator_fails(
637
613
. expect_instantiate_validator ( )
638
614
. return_once ( |_| Err ( expected_error) ) ;
639
615
640
- let overrides = ProcessTxOverrides {
641
- mock_stateful_transaction_validator_factory : Some (
642
- mock_stateful_transaction_validator_factory,
643
- ) ,
644
- ..Default :: default ( )
645
- } ;
646
- let process_tx_task = process_tx_task ( overrides) ;
616
+ let process_tx_task = process_tx_task ( mock_stateful_transaction_validator_factory) ;
647
617
648
618
let result = tokio:: task:: spawn_blocking ( move || process_tx_task. process_tx ( ) ) . await . unwrap ( ) ;
649
619
0 commit comments