github.com/ava-labs/avalanchego@v1.11.11/vms/avm/wallet_service_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package avm 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/ava-labs/avalanchego/api" 12 "github.com/ava-labs/avalanchego/ids" 13 "github.com/ava-labs/avalanchego/upgrade/upgradetest" 14 "github.com/ava-labs/avalanchego/utils/linked" 15 "github.com/ava-labs/avalanchego/vms/avm/txs" 16 ) 17 18 func TestWalletService_SendMultiple(t *testing.T) { 19 require := require.New(t) 20 21 for _, tc := range testCases { 22 t.Run(tc.name, func(t *testing.T) { 23 env := setup(t, &envConfig{ 24 fork: upgradetest.Latest, 25 isCustomFeeAsset: !tc.avaxAsset, 26 keystoreUsers: []*user{{ 27 username: username, 28 password: password, 29 initialKeys: keys, 30 }}, 31 }) 32 env.vm.ctx.Lock.Unlock() 33 34 walletService := &WalletService{ 35 vm: env.vm, 36 pendingTxs: linked.NewHashmap[ids.ID, *txs.Tx](), 37 } 38 39 assetID := env.genesisTx.ID() 40 addr := keys[0].PublicKey().Address() 41 42 addrStr, err := env.vm.FormatLocalAddress(addr) 43 require.NoError(err) 44 changeAddrStr, err := env.vm.FormatLocalAddress(testChangeAddr) 45 require.NoError(err) 46 _, fromAddrsStr := sampleAddrs(t, env.vm.AddressManager, addrs) 47 48 args := &SendMultipleArgs{ 49 JSONSpendHeader: api.JSONSpendHeader{ 50 UserPass: api.UserPass{ 51 Username: username, 52 Password: password, 53 }, 54 JSONFromAddrs: api.JSONFromAddrs{From: fromAddrsStr}, 55 JSONChangeAddr: api.JSONChangeAddr{ChangeAddr: changeAddrStr}, 56 }, 57 Outputs: []SendOutput{ 58 { 59 Amount: 500, 60 AssetID: assetID.String(), 61 To: addrStr, 62 }, 63 { 64 Amount: 1000, 65 AssetID: assetID.String(), 66 To: addrStr, 67 }, 68 }, 69 } 70 reply := &api.JSONTxIDChangeAddr{} 71 require.NoError(walletService.SendMultiple(nil, args, reply)) 72 require.Equal(changeAddrStr, reply.ChangeAddr) 73 74 buildAndAccept(require, env.vm, env.issuer, reply.TxID) 75 76 env.vm.ctx.Lock.Lock() 77 _, err = env.vm.state.GetTx(reply.TxID) 78 env.vm.ctx.Lock.Unlock() 79 require.NoError(err) 80 }) 81 } 82 }