@@ -414,6 +414,22 @@ func (s *TestSuite) TestSendRawTransaction() {
414414 }
415415}
416416
417+ func (s * TestSuite ) registerMock (bz []byte , expectedRequest * evmtypes.EthCallRequest , shouldError bool ) func () {
418+ return func () {
419+ client := s .backend .ClientCtx .Client .(* mocks.Client )
420+ QueryClient := s .backend .QueryClient .QueryClient .(* mocks.EVMQueryClient )
421+ height := int64 (1 )
422+ RegisterHeader (client , & height , bz )
423+ // Register precompile for any address that might be called
424+ RegisterPrecompile (QueryClient , "" )
425+ if shouldError {
426+ RegisterEthCallError (QueryClient , expectedRequest )
427+ } else {
428+ RegisterEthCall (QueryClient , expectedRequest )
429+ }
430+ }
431+ }
432+
417433func (s * TestSuite ) TestDoCall () {
418434 _ , bz := s .buildEthereumTx ()
419435 gasPrice := (* hexutil .Big )(big .NewInt (1 ))
@@ -432,10 +448,12 @@ func (s *TestSuite) TestDoCall() {
432448 AccessList : nil ,
433449 ChainID : evmChainID ,
434450 }
451+
452+ var err error
435453 argsBz , err := json .Marshal (callArgs )
436454 s .Require ().NoError (err )
437455
438- overrides := json .RawMessage (`{
456+ evmOverrides := json .RawMessage (`{
439457 "` + toAddr .Hex () + `": {
440458 "balance": "0x1000000000000000000",
441459 "nonce": "0x1",
@@ -445,8 +463,17 @@ func (s *TestSuite) TestDoCall() {
445463 }
446464 }
447465 }` )
466+ evmOverridesParsed , _ , err := rpctypes .ParseOverrides (& evmOverrides , false )
467+ s .Require ().NoError (err )
468+ var bzOverrides []byte
469+ if evmOverridesParsed != nil {
470+ bzOverrides , err = json .Marshal (evmOverridesParsed )
471+ s .Require ().NoError (err )
472+ }
473+
448474 invalidOverrides := json .RawMessage (`{"invalid": json}` )
449475 emptyOverrides := json .RawMessage (`{}` )
476+ baseRequest := & evmtypes.EthCallRequest {Args : argsBz , ChainId : s .backend .EvmChainID .Int64 ()}
450477 testCases := []struct {
451478 name string
452479 registerMock func ()
@@ -458,13 +485,7 @@ func (s *TestSuite) TestDoCall() {
458485 }{
459486 {
460487 "fail - Invalid request" ,
461- func () {
462- client := s .backend .ClientCtx .Client .(* mocks.Client )
463- QueryClient := s .backend .QueryClient .QueryClient .(* mocks.EVMQueryClient )
464- height := int64 (1 )
465- RegisterHeader (client , & height , bz )
466- RegisterEthCallError (QueryClient , & evmtypes.EthCallRequest {Args : argsBz , ChainId : s .backend .EvmChainID .Int64 ()})
467- },
488+ s .registerMock (bz , baseRequest , true ),
468489 rpctypes .BlockNumber (1 ),
469490 callArgs ,
470491 nil ,
@@ -473,36 +494,29 @@ func (s *TestSuite) TestDoCall() {
473494 },
474495 {
475496 "pass - Returned transaction response" ,
476- func () {
477- client := s .backend .ClientCtx .Client .(* mocks.Client )
478- QueryClient := s .backend .QueryClient .QueryClient .(* mocks.EVMQueryClient )
479- height := int64 (1 )
480- RegisterHeader (client , & height , bz )
481- RegisterEthCall (QueryClient , & evmtypes.EthCallRequest {Args : argsBz , ChainId : s .backend .EvmChainID .Int64 ()})
482- },
497+ s .registerMock (bz , baseRequest , false ),
483498 rpctypes .BlockNumber (1 ),
484499 callArgs ,
485500 nil ,
486501 & evmtypes.MsgEthereumTxResponse {},
487502 true ,
488503 },
489504 {
490- "pass - With state overrides" ,
505+ "pass - With EVM state overrides" ,
491506 func () {
492- client := s .backend .ClientCtx .Client .(* mocks.Client )
493- QueryClient := s .backend .QueryClient .QueryClient .(* mocks.EVMQueryClient )
494- height := int64 (1 )
495- RegisterHeader (client , & height , bz )
496- expected := & evmtypes.EthCallRequest {
497- Args : argsBz ,
498- ChainId : s .backend .EvmChainID .Int64 (),
499- Overrides : overrides ,
507+ _ , expectedCosmosOverrides , err := rpctypes .ParseOverrides (& evmOverrides , false )
508+ s .Require ().NoError (err )
509+ expectedRequest := & evmtypes.EthCallRequest {
510+ Args : argsBz ,
511+ ChainId : s .backend .EvmChainID .Int64 (),
512+ Overrides : bzOverrides ,
513+ StateOverrides : expectedCosmosOverrides ,
500514 }
501- RegisterEthCall ( QueryClient , expected )
515+ s . registerMock ( bz , expectedRequest , false )( )
502516 },
503517 rpctypes .BlockNumber (1 ),
504518 callArgs ,
505- & overrides ,
519+ & evmOverrides ,
506520 & evmtypes.MsgEthereumTxResponse {},
507521 true ,
508522 },
@@ -513,12 +527,7 @@ func (s *TestSuite) TestDoCall() {
513527 QueryClient := s .backend .QueryClient .QueryClient .(* mocks.EVMQueryClient )
514528 height := int64 (1 )
515529 RegisterHeader (client , & height , bz )
516- expected := & evmtypes.EthCallRequest {
517- Args : argsBz ,
518- ChainId : s .backend .EvmChainID .Int64 (),
519- Overrides : invalidOverrides ,
520- }
521- RegisterEthCallError (QueryClient , expected )
530+ RegisterPrecompile (QueryClient , "" )
522531 },
523532 rpctypes .BlockNumber (1 ),
524533 callArgs ,
@@ -529,16 +538,15 @@ func (s *TestSuite) TestDoCall() {
529538 {
530539 "pass - Empty state overrides" ,
531540 func () {
532- client := s .backend .ClientCtx .Client .(* mocks.Client )
533- QueryClient := s .backend .QueryClient .QueryClient .(* mocks.EVMQueryClient )
534- height := int64 (1 )
535- RegisterHeader (client , & height , bz )
536- expected := & evmtypes.EthCallRequest {
537- Args : argsBz ,
538- ChainId : s .backend .EvmChainID .Int64 (),
539- Overrides : emptyOverrides ,
541+ _ , expectedCosmosOverrides , err := rpctypes .ParseOverrides (& emptyOverrides , false )
542+ s .Require ().NoError (err )
543+ expectedRequest := & evmtypes.EthCallRequest {
544+ Args : argsBz ,
545+ ChainId : s .backend .EvmChainID .Int64 (),
546+ Overrides : nil ,
547+ StateOverrides : expectedCosmosOverrides ,
540548 }
541- RegisterEthCall ( QueryClient , expected )
549+ s . registerMock ( bz , expectedRequest , false )( )
542550 },
543551 rpctypes .BlockNumber (1 ),
544552 callArgs ,
0 commit comments