github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/e2e/uniswap_test.go (about)

     1  package e2e
     2  
     3  import (
     4  	"context"
     5  	"flag"
     6  	"testing"
     7  
     8  	"github.com/0xPolygon/supernets2-node/config"
     9  	"github.com/0xPolygon/supernets2-node/state"
    10  	"github.com/0xPolygon/supernets2-node/test/contracts/bin/ERC20"
    11  	"github.com/0xPolygon/supernets2-node/test/operations"
    12  	"github.com/ethereum/go-ethereum/common"
    13  	"github.com/ethereum/go-ethereum/ethclient"
    14  	"github.com/stretchr/testify/assert"
    15  	"github.com/stretchr/testify/require"
    16  	"github.com/urfave/cli/v2"
    17  )
    18  
    19  // TestUniswap tests uniswap contracts deployment and functionality on the node.
    20  func TestUniswap(t *testing.T) {
    21  	if testing.Short() {
    22  		t.Skip()
    23  	}
    24  
    25  	defer func() {
    26  		require.NoError(t, operations.Teardown())
    27  	}()
    28  	ctx := context.Background()
    29  
    30  	// load the same config that will be used by the test
    31  	app := cli.NewApp()
    32  	var n string
    33  	flag.StringVar(&n, "network", "local", "")
    34  	cfg, err := config.Load(cli.NewContext(app, flag.CommandLine, nil))
    35  	require.NoError(t, err)
    36  
    37  	opsCfg := &operations.Config{
    38  		State: &state.Config{
    39  			MaxCumulativeGasUsed: cfg.Sequencer.MaxCumulativeGasUsed,
    40  		},
    41  		SequenceSender: &operations.SequenceSenderConfig{
    42  			SenderAddress:                            "0x617b3a3528F9cDd6630fd3301B9c8911F7Bf063D",
    43  			LastBatchVirtualizationTimeMaxWaitPeriod: "5s",
    44  			WaitPeriodSendSequence:                   "5s",
    45  			MaxBatchesForL1:                          1,
    46  			PrivateKey:                               "0x28b2b0318721be8c8339199172cd7cc8f5e273800a35616ec893083a4b32c02e",
    47  		},
    48  	}
    49  	opsman, err := operations.NewManager(ctx, opsCfg)
    50  	require.NoError(t, err)
    51  
    52  	require.NoError(t, opsman.StartNetwork())
    53  	require.NoError(t, opsman.StartNode())
    54  	require.NoError(t, opsman.InitNetwork())
    55  
    56  	client, err := ethclient.Dial("http://localhost:8123")
    57  	require.NoError(t, err)
    58  	accountAddr := common.HexToAddress("0xC949254d682D8c9ad5682521675b8F43b102aec4")
    59  
    60  	balance, err := client.BalanceAt(ctx, accountAddr, nil)
    61  	require.NoError(t, err)
    62  	assert.Equal(t, balance.String(), "10000000000000000000", "invalid ETH Balance")
    63  
    64  	require.NoError(t, opsman.DeployUniswap())
    65  
    66  	aCoinAddr := common.HexToAddress("0x3A07588DefB088956a2e6dD15C33d63F2E0A2c55")
    67  	bCoinAddr := common.HexToAddress("0x0ef3B0bC8D6313aB7dc03CF7225c872071bE1E6d")
    68  	cCoinAddr := common.HexToAddress("0xd59D09BBEE914015562D95e84a78f1CD4FC347E9")
    69  
    70  	aCoin, err := ERC20.NewERC20(aCoinAddr, client)
    71  	require.NoError(t, err)
    72  	balance, err = aCoin.BalanceOf(nil, accountAddr)
    73  	require.NoError(t, err)
    74  	assert.Equal(t, balance.String(), "989000000000000000000", "invalid A Coin Balance")
    75  
    76  	bCoin, err := ERC20.NewERC20(bCoinAddr, client)
    77  	require.NoError(t, err)
    78  	balance, err = bCoin.BalanceOf(nil, accountAddr)
    79  	require.NoError(t, err)
    80  	assert.Equal(t, balance.String(), "979906610893880149131", "invalid B Coin Balance")
    81  
    82  	cCoin, err := ERC20.NewERC20(cCoinAddr, client)
    83  	require.NoError(t, err)
    84  	balance, err = cCoin.BalanceOf(nil, accountAddr)
    85  	require.NoError(t, err)
    86  	assert.Equal(t, balance.String(), "990906610893880149131", "invalid C Coin Balance")
    87  
    88  	balance, err = client.BalanceAt(ctx, accountAddr, nil)
    89  	require.NoError(t, err)
    90  	assert.Equal(t, "9995731067000000000", balance.String(), "invalid ETH Balance after deployments and swaps")
    91  }