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 }