github.com/status-im/status-go@v1.1.0/services/connector/commands/chain_id_test.go (about) 1 package commands 2 3 import ( 4 "database/sql" 5 "fmt" 6 "strconv" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 11 "github.com/status-im/status-go/eth-node/types" 12 "github.com/status-im/status-go/params" 13 "github.com/status-im/status-go/services/connector/chainutils" 14 walletCommon "github.com/status-im/status-go/services/wallet/common" 15 ) 16 17 func setupNetworks(db *sql.DB) *ChainIDCommand { 18 nm := NetworkManagerMock{} 19 nm.SetNetworks([]*params.Network{ 20 { 21 ChainID: walletCommon.EthereumMainnet, 22 }, 23 { 24 ChainID: walletCommon.EthereumGoerli, 25 }, 26 }) 27 cmd := &ChainIDCommand{ 28 Db: db, 29 NetworkManager: &nm, 30 } 31 32 return cmd 33 } 34 35 func TestFailToGetChainIdWithMissingDAppFields(t *testing.T) { 36 db, close := SetupTestDB(t) 37 defer close() 38 39 cmd := setupNetworks(db) 40 41 // Missing DApp fields 42 request, err := ConstructRPCRequest("eth_chainId", []interface{}{}, nil) 43 assert.NoError(t, err) 44 45 result, err := cmd.Execute(request) 46 assert.Equal(t, ErrRequestMissingDAppData, err) 47 assert.Empty(t, result) 48 } 49 50 func TestGetDefaultChainIdForUnpermittedDApp(t *testing.T) { 51 db, close := SetupTestDB(t) 52 defer close() 53 54 cmd := setupNetworks(db) 55 56 request, err := ConstructRPCRequest("eth_chainId", []interface{}{}, &testDAppData) 57 assert.NoError(t, err) 58 59 result, err := cmd.Execute(request) 60 assert.NoError(t, err) 61 chainId, err := chainutils.GetHexChainID(strconv.FormatUint(walletCommon.EthereumMainnet, 16)) 62 assert.NoError(t, err) 63 assert.Equal(t, result, chainId) 64 } 65 66 func TestGetChainIdForPermittedDApp(t *testing.T) { 67 db, close := SetupTestDB(t) 68 defer close() 69 70 cmd := setupNetworks(db) 71 72 sharedAccount := types.HexToAddress("0x6d0aa2a774b74bb1d36f97700315adf962c69fcg") 73 chainID := uint64(0x123) 74 75 err := PersistDAppData(db, testDAppData, sharedAccount, chainID) 76 assert.NoError(t, err) 77 78 request, err := ConstructRPCRequest("eth_chainId", []interface{}{}, &testDAppData) 79 assert.NoError(t, err) 80 81 response, err := cmd.Execute(request) 82 assert.NoError(t, err) 83 chainId := fmt.Sprintf(`0x%s`, strconv.FormatUint(chainID, 16)) 84 assert.Equal(t, chainId, response) 85 }