@@ -5,16 +5,19 @@ import (
5
5
"math/big"
6
6
"testing"
7
7
8
+ "github.com/multiversx/mx-chain-core-go/core"
8
9
"github.com/multiversx/mx-chain-core-go/data"
9
10
"github.com/multiversx/mx-chain-core-go/data/transaction"
10
11
"github.com/multiversx/mx-chain-go/process"
11
12
"github.com/multiversx/mx-chain-go/process/coordinator"
12
13
"github.com/multiversx/mx-chain-go/process/mock"
13
14
txproc "github.com/multiversx/mx-chain-go/process/transaction"
15
+ "github.com/multiversx/mx-chain-go/sharding"
14
16
"github.com/multiversx/mx-chain-go/state"
15
17
"github.com/multiversx/mx-chain-go/testscommon"
16
18
"github.com/multiversx/mx-chain-go/testscommon/hashingMocks"
17
19
stateMock "github.com/multiversx/mx-chain-go/testscommon/state"
20
+ "github.com/multiversx/mx-chain-go/vm"
18
21
vmcommon "github.com/multiversx/mx-chain-vm-common-go"
19
22
"github.com/multiversx/mx-chain-vm-common-go/builtInFunctions"
20
23
"github.com/multiversx/mx-chain-vm-common-go/parsers"
@@ -446,3 +449,42 @@ func TestMetaTxProcessor_ProcessTransactionBuiltInCallTxShouldWork(t *testing.T)
446
449
assert .True (t , builtInCalled )
447
450
assert .Equal (t , 0 , saveAccountCalled )
448
451
}
452
+
453
+ func TestMetaTxProcessor_ProcessTransactionWithInvalidUsernameShouldNotError (t * testing.T ) {
454
+ t .Parallel ()
455
+
456
+ tx := & transaction.Transaction {}
457
+ tx .Nonce = 0
458
+ tx .SndAddr = bytes .Repeat ([]byte {1 }, 32 )
459
+ tx .RcvAddr = vm .GovernanceSCAddress
460
+ tx .RcvUserName = []byte ("username" )
461
+ tx .Value = big .NewInt (45 )
462
+ tx .GasPrice = 1
463
+ tx .GasLimit = 1
464
+
465
+ acntDst , err := state .NewUserAccount (tx .RcvAddr )
466
+ assert .Nil (t , err )
467
+
468
+ called := false
469
+ adb := createAccountStub (tx .SndAddr , tx .RcvAddr , acntDst , acntDst )
470
+ scProcessor := & testscommon.SCProcessorMock {
471
+ ProcessIfErrorCalled : func (acntSnd state.UserAccountHandler , txHash []byte , tx data.TransactionHandler , returnCode string , returnMessage []byte , snapshot int , gasLocked uint64 ) error {
472
+ called = true
473
+ return nil
474
+ },
475
+ }
476
+
477
+ args := createMockNewMetaTxArgs ()
478
+ args .Accounts = adb
479
+ args .ScProcessor = scProcessor
480
+ args .ShardCoordinator , _ = sharding .NewMultiShardCoordinator (3 , core .MetachainShardId )
481
+ txProc , _ := txproc .NewMetaTxProcessor (args )
482
+
483
+ err = txProc .VerifyTransaction (tx )
484
+ assert .Equal (t , err , process .ErrUserNameDoesNotMatchInCrossShardTx )
485
+
486
+ returnCode , err := txProc .ProcessTransaction (tx )
487
+ assert .Nil (t , err )
488
+ assert .Equal (t , vmcommon .UserError , returnCode )
489
+ assert .True (t , called )
490
+ }
0 commit comments