github.com/status-im/status-go@v1.1.0/rpc/network/network_test.go (about)

     1  package network
     2  
     3  import (
     4  	"database/sql"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/status-im/status-go/appdatabase"
    10  	"github.com/status-im/status-go/params"
    11  	"github.com/status-im/status-go/t/helpers"
    12  )
    13  
    14  var initNetworks = []params.Network{
    15  	{
    16  		ChainID:                1,
    17  		ChainName:              "Ethereum Mainnet",
    18  		RPCURL:                 "https://mainnet.infura.io/nKmXgiFgc2KqtoQ8BCGJ",
    19  		BlockExplorerURL:       "https://etherscan.io/",
    20  		IconURL:                "",
    21  		NativeCurrencyName:     "Ether",
    22  		NativeCurrencySymbol:   "ETH",
    23  		NativeCurrencyDecimals: 18,
    24  		IsTest:                 false,
    25  		Layer:                  1,
    26  		Enabled:                true,
    27  		RelatedChainID:         11155111,
    28  	},
    29  	{
    30  		ChainID:                11155111,
    31  		ChainName:              "Goerli",
    32  		RPCURL:                 "http://goerli.blockscout.com/",
    33  		BlockExplorerURL:       "https://goerli.etherscan.io/",
    34  		IconURL:                "",
    35  		NativeCurrencyName:     "Ether",
    36  		NativeCurrencySymbol:   "ETH",
    37  		NativeCurrencyDecimals: 18,
    38  		IsTest:                 true,
    39  		Layer:                  1,
    40  		Enabled:                false,
    41  		RelatedChainID:         1,
    42  	},
    43  	{
    44  		ChainID:                10,
    45  		ChainName:              "Optimistic Ethereum",
    46  		RPCURL:                 "https://mainnet.infura.io/nKmXgiFgc2KqtoQ8BCGJ",
    47  		BlockExplorerURL:       "https://optimistic.etherscan.io",
    48  		IconURL:                "",
    49  		NativeCurrencyName:     "Ether",
    50  		NativeCurrencySymbol:   "ETH",
    51  		NativeCurrencyDecimals: 18,
    52  		IsTest:                 false,
    53  		Layer:                  2,
    54  		Enabled:                true,
    55  		RelatedChainID:         420,
    56  	},
    57  }
    58  
    59  func setupTestNetworkDB(t *testing.T) (*sql.DB, func()) {
    60  	db, cleanup, err := helpers.SetupTestSQLDB(appdatabase.DbInitializer{}, "wallet-network-tests")
    61  	require.NoError(t, err)
    62  	return db, func() { require.NoError(t, cleanup()) }
    63  }
    64  
    65  func TestInitNetwork(t *testing.T) {
    66  	db, stop := setupTestNetworkDB(t)
    67  	defer stop()
    68  
    69  	nm := NewManager(db)
    70  	err := nm.Init(initNetworks)
    71  	require.NoError(t, err)
    72  
    73  	network := nm.Find(1)
    74  	require.NotNil(t, network)
    75  	require.Equal(t, (uint64)(1), network.ChainID)
    76  }
    77  
    78  func TestGet(t *testing.T) {
    79  	db, stop := setupTestNetworkDB(t)
    80  	defer stop()
    81  
    82  	nm := NewManager(db)
    83  	err := nm.Init(initNetworks)
    84  	require.NoError(t, err)
    85  
    86  	networks, err := nm.Get(true)
    87  	require.Nil(t, err)
    88  	require.Equal(t, 2, len(networks))
    89  }
    90  
    91  func TestGetCombinedNetworks(t *testing.T) {
    92  	db, stop := setupTestNetworkDB(t)
    93  	defer stop()
    94  
    95  	nm := NewManager(db)
    96  	err := nm.Init(initNetworks)
    97  	require.NoError(t, err)
    98  
    99  	combinedNetworks, err := nm.GetCombinedNetworks()
   100  	require.Nil(t, err)
   101  	require.Equal(t, 2, len(combinedNetworks))
   102  	require.Equal(t, uint64(1), combinedNetworks[0].Prod.ChainID)
   103  	require.Equal(t, uint64(11155111), combinedNetworks[0].Test.ChainID)
   104  	require.Equal(t, uint64(10), combinedNetworks[1].Prod.ChainID)
   105  	require.Nil(t, combinedNetworks[1].Test)
   106  }
   107  
   108  func TestDelete(t *testing.T) {
   109  	db, stop := setupTestNetworkDB(t)
   110  	defer stop()
   111  
   112  	nm := NewManager(db)
   113  	err := nm.Init(initNetworks)
   114  	require.NoError(t, err)
   115  
   116  	err = nm.Delete(1)
   117  	require.NoError(t, err)
   118  	networks, err := nm.Get(true)
   119  	require.Nil(t, err)
   120  	require.Equal(t, 1, len(networks))
   121  }
   122  
   123  func TestUpsert(t *testing.T) {
   124  	db, stop := setupTestNetworkDB(t)
   125  	defer stop()
   126  
   127  	nm := NewManager(db)
   128  	err := nm.Init(initNetworks)
   129  	require.NoError(t, err)
   130  
   131  	network := nm.Find(1)
   132  	require.NotNil(t, network)
   133  
   134  	newName := "New Chain Name"
   135  	network.ChainName = newName
   136  	err = nm.Upsert(network)
   137  	require.Nil(t, err)
   138  
   139  	network = nm.Find(1)
   140  	require.NotNil(t, network)
   141  	require.Equal(t, newName, network.ChainName)
   142  }