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  }