github.com/status-im/status-go@v1.1.0/services/connector/api_test.go (about) 1 package connector 2 3 import ( 4 "database/sql" 5 "testing" 6 7 "github.com/golang/mock/gomock" 8 "github.com/stretchr/testify/require" 9 10 gethrpc "github.com/ethereum/go-ethereum/rpc" 11 12 "github.com/status-im/status-go/params" 13 statusRPC "github.com/status-im/status-go/rpc" 14 "github.com/status-im/status-go/services/connector/commands" 15 "github.com/status-im/status-go/t/helpers" 16 "github.com/status-im/status-go/transactions/fake" 17 "github.com/status-im/status-go/walletdatabase" 18 ) 19 20 func createDB(t *testing.T) (*sql.DB, func()) { 21 db, cleanup, err := helpers.SetupTestSQLDB(walletdatabase.DbInitializer{}, "provider-tests-") 22 require.NoError(t, err) 23 return db, func() { require.NoError(t, cleanup()) } 24 } 25 26 func setupTestAPI(t *testing.T) (*API, func()) { 27 db, cancel := createDB(t) 28 29 txServiceMockCtrl := gomock.NewController(t) 30 server, _ := fake.NewTestServer(txServiceMockCtrl) 31 32 // Creating a dummy status node to simulate what it's done in get_status_node.go 33 upstreamConfig := params.UpstreamRPCConfig{ 34 URL: "https://mainnet.infura.io/v3/fake", 35 Enabled: true, 36 } 37 38 client := gethrpc.DialInProc(server) 39 rpcClient, err := statusRPC.NewClient(client, 1, upstreamConfig, nil, db, nil) 40 require.NoError(t, err) 41 42 service := NewService(db, rpcClient, nil) 43 44 return NewAPI(service), cancel 45 } 46 47 func TestCallRPC(t *testing.T) { 48 api, cancel := setupTestAPI(t) 49 defer cancel() 50 51 tests := []struct { 52 request string 53 expectError error 54 }{ 55 { 56 request: "{\"method\": \"eth_chainId\", \"params\": []}", 57 expectError: commands.ErrRequestMissingDAppData, 58 }, 59 { 60 request: "{\"method\": \"eth_accounts\", \"params\": []}", 61 expectError: commands.ErrRequestMissingDAppData, 62 }, 63 { 64 request: "{\"method\": \"eth_requestAccounts\", \"params\": []}", 65 expectError: commands.ErrRequestMissingDAppData, 66 }, 67 { 68 request: "{\"method\": \"eth_sendTransaction\", \"params\": []}", 69 expectError: commands.ErrRequestMissingDAppData, 70 }, 71 { 72 request: "{\"method\": \"wallet_switchEthereumChain\", \"params\": []}", 73 expectError: commands.ErrRequestMissingDAppData, 74 }, 75 } 76 77 for _, tt := range tests { 78 t.Run(tt.request, func(t *testing.T) { 79 _, err := api.CallRPC(tt.request) 80 require.Error(t, err) 81 require.Equal(t, tt.expectError, err) 82 }) 83 } 84 }