Skip to content

Commit 06f94f6

Browse files
committed
chore: fix tests
1 parent 3c5989b commit 06f94f6

File tree

14 files changed

+171
-240
lines changed

14 files changed

+171
-240
lines changed

node/status_node_services.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"github.com/status-im/status-go/services/updates"
3535
"github.com/status-im/status-go/services/wakuv2ext"
3636
"github.com/status-im/status-go/services/wallet"
37+
"github.com/status-im/status-go/services/wallet/router/fees"
3738
"github.com/status-im/status-go/services/wallet/thirdparty"
3839
"github.com/status-im/status-go/timesource"
3940
)
@@ -162,6 +163,7 @@ func (b *StatusNode) connectorService() *connector.Service {
162163
b.logger.Named("connector"),
163164
b.walletDB,
164165
b.rpcClient,
166+
&fees.FeeManager{RPCClient: b.rpcClient},
165167
b.rpcClient.GetNetworkManager(),
166168
&connector.Config{
167169
WSHost: b.config.WSHost,

rpc/chain/blockchain_health_test.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"testing"
99
"time"
1010

11+
sdkethclient "github.com/status-im/go-wallet-sdk/pkg/ethclient"
12+
1113
"github.com/status-im/status-go/healthmanager"
1214
"github.com/status-im/status-go/healthmanager/rpcstatus"
1315
mockEthclient "github.com/status-im/status-go/rpc/chain/ethclient/mock/client/ethclient"
@@ -16,7 +18,6 @@ import (
1618
"github.com/stretchr/testify/suite"
1719

1820
"github.com/ethereum/go-ethereum/common"
19-
"github.com/ethereum/go-ethereum/core/types"
2021

2122
"go.uber.org/mock/gomock"
2223

@@ -78,13 +79,13 @@ func (s *BlockchainHealthSuite) simulateChainStatus(chainID uint64, up bool) {
7879
hash := common.HexToHash("0x1234")
7980

8081
if up {
81-
block := &types.Block{}
82-
mockEthClient.EXPECT().BlockByHash(ctx, hash).Return(block, nil).Times(1)
83-
_, err := client.BlockByHash(ctx, hash)
82+
block := &sdkethclient.BlockWithTxHashes{}
83+
mockEthClient.EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(block, nil).Times(1)
84+
_, err := client.EthGetBlockByHashWithTxHashes(ctx, hash)
8485
require.NoError(s.T(), err)
8586
} else {
86-
mockEthClient.EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
87-
_, err := client.BlockByHash(ctx, hash)
87+
mockEthClient.EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
88+
_, err := client.EthGetBlockByHashWithTxHashes(ctx, hash)
8889
require.Error(s.T(), err)
8990
}
9091
}

rpc/chain/client_health_test.go

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
"go.uber.org/mock/gomock"
1414

1515
"github.com/ethereum/go-ethereum/common"
16-
"github.com/ethereum/go-ethereum/core/types"
16+
17+
sdkethclient "github.com/status-im/go-wallet-sdk/pkg/ethclient"
18+
1719
healthManager "github.com/status-im/status-go/healthmanager"
1820
"github.com/status-im/status-go/healthmanager/rpcstatus"
1921
"github.com/status-im/status-go/rpc/chain/ethclient"
@@ -63,13 +65,13 @@ func (s *ClientWithFallbackSuite) TestSingleClientSuccess() {
6365
s.setupClients(1)
6466
ctx := context.Background()
6567
hash := common.HexToHash("0x1234")
66-
block := &types.Block{}
68+
block := &sdkethclient.BlockWithTxHashes{}
6769

6870
// GIVEN
69-
s.mockEthClients[0].EXPECT().BlockByHash(ctx, hash).Return(block, nil).Times(1)
71+
s.mockEthClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(block, nil).Times(1)
7072

7173
// WHEN
72-
result, err := s.client.BlockByHash(ctx, hash)
74+
result, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
7375
require.NoError(s.T(), err)
7476
require.Equal(s.T(), block, result)
7577

@@ -87,10 +89,10 @@ func (s *ClientWithFallbackSuite) TestSingleClientConnectionError() {
8789
hash := common.HexToHash("0x1234")
8890

8991
// GIVEN
90-
s.mockEthClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("connection error")).Times(1)
92+
s.mockEthClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("connection error")).Times(1)
9193

9294
// WHEN
93-
_, err := s.client.BlockByHash(ctx, hash)
95+
_, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
9496
require.Error(s.T(), err)
9597

9698
// THEN
@@ -108,9 +110,9 @@ func (s *ClientWithFallbackSuite) TestRPSLimitErrorDoesNotMarkChainDown() {
108110
hash := common.HexToHash("0x1234")
109111

110112
// WHEN
111-
s.mockEthClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, rpclimiter.ErrRequestsOverLimit).Times(1)
113+
s.mockEthClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, rpclimiter.ErrRequestsOverLimit).Times(1)
112114

113-
_, err := s.client.BlockByHash(ctx, hash)
115+
_, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
114116
require.Error(s.T(), err)
115117

116118
// THEN
@@ -132,7 +134,7 @@ func (s *ClientWithFallbackSuite) TestContextCanceledDoesNotMarkChainDown() {
132134
hash := common.HexToHash("0x1234")
133135

134136
// WHEN
135-
_, err := s.client.BlockByHash(ctx, hash)
137+
_, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
136138
require.Error(s.T(), err)
137139
require.True(s.T(), errors.Is(err, context.Canceled))
138140

@@ -151,10 +153,10 @@ func (s *ClientWithFallbackSuite) TestVMErrorDoesNotMarkChainDown() {
151153
vmError := vm.ErrOutOfGas
152154

153155
// GIVEN
154-
s.mockEthClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, vmError).Times(1)
156+
s.mockEthClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, vmError).Times(1)
155157

156158
// WHEN
157-
_, err := s.client.BlockByHash(ctx, hash)
159+
_, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
158160
require.Error(s.T(), err)
159161
require.True(s.T(), errors.Is(err, vm.ErrOutOfGas))
160162

@@ -173,7 +175,7 @@ func (s *ClientWithFallbackSuite) TestNoClientsChainDown() {
173175
hash := common.HexToHash("0x1234")
174176

175177
// WHEN
176-
_, err := s.client.BlockByHash(ctx, hash)
178+
_, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
177179
require.Error(s.T(), err)
178180

179181
// THEN
@@ -187,12 +189,12 @@ func (s *ClientWithFallbackSuite) TestAllClientsDifferentErrors() {
187189
hash := common.HexToHash("0x1234")
188190

189191
// GIVEN
190-
s.mockEthClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
191-
s.mockEthClients[1].EXPECT().BlockByHash(ctx, hash).Return(nil, rpclimiter.ErrRequestsOverLimit).Times(1)
192-
s.mockEthClients[2].EXPECT().BlockByHash(ctx, hash).Return(nil, vm.ErrOutOfGas).Times(1)
192+
s.mockEthClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
193+
s.mockEthClients[1].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, rpclimiter.ErrRequestsOverLimit).Times(1)
194+
s.mockEthClients[2].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, vm.ErrOutOfGas).Times(1)
193195

194196
// WHEN
195-
_, err := s.client.BlockByHash(ctx, hash)
197+
_, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
196198
require.Error(s.T(), err)
197199

198200
// THEN
@@ -213,12 +215,12 @@ func (s *ClientWithFallbackSuite) TestAllClientsNetworkErrors() {
213215
hash := common.HexToHash("0x1234")
214216

215217
// GIVEN
216-
s.mockEthClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
217-
s.mockEthClients[1].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
218-
s.mockEthClients[2].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
218+
s.mockEthClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
219+
s.mockEthClients[1].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
220+
s.mockEthClients[2].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("no such host")).Times(1)
219221

220222
// WHEN
221-
_, err := s.client.BlockByHash(ctx, hash)
223+
_, err := s.client.EthGetBlockByHashWithTxHashes(ctx, hash)
222224
require.Error(s.T(), err)
223225

224226
// THEN

rpc/chain/client_test.go

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import (
1010
"testing"
1111

1212
"github.com/ethereum/go-ethereum/common"
13-
"github.com/ethereum/go-ethereum/core/types"
13+
14+
sdkethclient "github.com/status-im/go-wallet-sdk/pkg/ethclient"
1415

1516
"github.com/status-im/status-go/rpc/chain/ethclient"
1617
mock_ethclient "github.com/status-im/status-go/rpc/chain/ethclient/mock/client/ethclient"
@@ -54,34 +55,34 @@ func TestClient_Fallbacks(t *testing.T) {
5455

5556
ctx := context.Background()
5657
hash := common.HexToHash("0x1234")
57-
block := &types.Block{}
58+
block := &sdkethclient.BlockWithTxHashes{}
5859

5960
// Expect the first client to be called, others should not be called, should succeed
60-
ethClients[0].EXPECT().BlockByHash(ctx, hash).Return(block, nil).Times(1)
61-
ethClients[1].EXPECT().BlockByHash(ctx, hash).Return(nil, nil).Times(0)
62-
ethClients[2].EXPECT().BlockByHash(ctx, hash).Return(nil, nil).Times(0)
63-
_, err := client.BlockByHash(ctx, hash)
61+
ethClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(block, nil).Times(1)
62+
ethClients[1].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, nil).Times(0)
63+
ethClients[2].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, nil).Times(0)
64+
_, err := client.EthGetBlockByHashWithTxHashes(ctx, hash)
6465
require.NoError(t, err)
6566

6667
// Expect the first and second client to be called, others should not be called, should succeed
67-
ethClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("some error")).Times(1)
68-
ethClients[1].EXPECT().BlockByHash(ctx, hash).Return(block, nil).Times(1)
69-
ethClients[2].EXPECT().BlockByHash(ctx, hash).Return(nil, nil).Times(0)
70-
_, err = client.BlockByHash(ctx, hash)
68+
ethClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("some error")).Times(1)
69+
ethClients[1].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(block, nil).Times(1)
70+
ethClients[2].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, nil).Times(0)
71+
_, err = client.EthGetBlockByHashWithTxHashes(ctx, hash)
7172
require.NoError(t, err)
7273

7374
// Expect the all client to be called, should succeed
74-
ethClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("some error")).Times(1)
75-
ethClients[1].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("some other error")).Times(1)
76-
ethClients[2].EXPECT().BlockByHash(ctx, hash).Return(block, nil).Times(1)
77-
_, err = client.BlockByHash(ctx, hash)
75+
ethClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("some error")).Times(1)
76+
ethClients[1].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("some other error")).Times(1)
77+
ethClients[2].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(block, nil).Times(1)
78+
_, err = client.EthGetBlockByHashWithTxHashes(ctx, hash)
7879
require.NoError(t, err)
7980

8081
// Expect the all client to be called, should fail
81-
ethClients[0].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("some error")).Times(1)
82-
ethClients[1].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("some other error")).Times(1)
83-
ethClients[2].EXPECT().BlockByHash(ctx, hash).Return(nil, errors.New("some other other error")).Times(1)
84-
_, err = client.BlockByHash(ctx, hash)
82+
ethClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("some error")).Times(1)
83+
ethClients[1].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("some other error")).Times(1)
84+
ethClients[2].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).Return(nil, errors.New("some other other error")).Times(1)
85+
_, err = client.EthGetBlockByHashWithTxHashes(ctx, hash)
8586
require.Error(t, err)
8687
}
8788

@@ -243,8 +244,8 @@ func TestClientWithFallback_CloseStopsMultipleOperations(t *testing.T) {
243244
}).Times(1)
244245

245246
// Set up the mock responses for operation 3
246-
ethClients[0].EXPECT().BlockByHash(ctx, hash).DoAndReturn(
247-
func(ctx context.Context, hash common.Hash) (*types.Block, error) {
247+
ethClients[0].EXPECT().EthGetBlockByHashWithTxHashes(ctx, hash).DoAndReturn(
248+
func(ctx context.Context, hash common.Hash) (*sdkethclient.BlockWithTxHashes, error) {
248249
err := createOperationHandler(operation3Started)(ctx)
249250
return nil, err
250251
}).Times(1)
@@ -273,7 +274,7 @@ func TestClientWithFallback_CloseStopsMultipleOperations(t *testing.T) {
273274
// Start operation 3 in a goroutine
274275
go func() {
275276
defer close(operation3Done)
276-
_, err := client.BlockByHash(ctx, hash)
277+
_, err := client.EthGetBlockByHashWithTxHashes(ctx, hash)
277278
require.Error(t, err)
278279
require.Contains(t, err.Error(), "context canceled")
279280
}()

services/connector/api.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ func NewAPI(s *Service) *API {
2525

2626
// Transactions and signing
2727
r.Register("eth_sendTransaction", &commands.SendTransactionCommand{
28-
RpcClient: s.rpc,
29-
Db: s.db,
30-
ClientHandler: c,
28+
EthClientGetter: s.ethClientGetter,
29+
FeeManager: s.feeManager,
30+
Db: s.db,
31+
ClientHandler: c,
3132
})
3233
r.Register("personal_sign", &commands.SignCommand{
3334
Db: s.db,
@@ -80,7 +81,7 @@ func (api *API) forwardRPC(ctx context.Context, URL string, request commands.RPC
8081
return "", commands.ErrDAppIsNotPermittedByUser
8182
}
8283

83-
rpcClient, err := api.s.rpc.EthClient(dApp.ChainID)
84+
rpcClient, err := api.s.ethClientGetter.EthClient(dApp.ChainID)
8485
if err != nil {
8586
return "", err
8687
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package chainutils
2+
3+
//go:generate go tool mockgen -source=interfaces.go -destination=mock/interfaces.go -package=mock_chainutils
4+
5+
import (
6+
"context"
7+
8+
"github.com/ethereum/go-ethereum/common"
9+
10+
"github.com/status-im/status-go/rpc/chain"
11+
"github.com/status-im/status-go/services/wallet/router/fees"
12+
)
13+
14+
type FeeManager interface {
15+
SuggestedFees(ctx context.Context, chainID uint64, address common.Address) (suggestedFees *fees.SuggestedFees, noBaseFee bool, noPriorityFee bool, err error)
16+
}
17+
18+
type EthClientGetter interface {
19+
EthClient(chainID uint64) (chain.ClientInterface, error)
20+
}

services/connector/commands/send_transaction.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package commands
22

3+
//go:generate go tool mockgen -source=send_transaction.go -destination=mock/send_transaction.go -package=mock_commands
4+
35
import (
46
"context"
57
"database/sql"
@@ -10,7 +12,7 @@ import (
1012

1113
"github.com/ethereum/go-ethereum/common"
1214
"github.com/ethereum/go-ethereum/common/hexutil"
13-
"github.com/status-im/status-go/rpc"
15+
"github.com/status-im/status-go/services/connector/chainutils"
1416
persistence "github.com/status-im/status-go/services/connector/database"
1517
"github.com/status-im/status-go/services/wallet/router/fees"
1618
"github.com/status-im/status-go/services/wallet/wallettypes"
@@ -24,9 +26,10 @@ var (
2426
)
2527

2628
type SendTransactionCommand struct {
27-
RpcClient rpc.ClientInterface
28-
Db *sql.DB
29-
ClientHandler ClientSideHandlerInterface
29+
EthClientGetter chainutils.EthClientGetter
30+
FeeManager chainutils.FeeManager
31+
Db *sql.DB
32+
ClientHandler ClientSideHandlerInterface
3033
}
3134

3235
func (r *RPCRequest) getSendTransactionParams() (*wallettypes.SendTxArgs, error) {
@@ -86,10 +89,7 @@ func (c *SendTransactionCommand) Execute(ctx context.Context, request RPCRequest
8689
}
8790

8891
if params.GasPrice == nil || (params.MaxFeePerGas == nil && params.MaxPriorityFeePerGas == nil) {
89-
feeManager := &fees.FeeManager{
90-
RPCClient: c.RpcClient,
91-
}
92-
fetchedFees, _, _, err := feeManager.SuggestedFees(ctx, dApp.ChainID, common.Address(dApp.SharedAccount))
92+
fetchedFees, _, _, err := c.FeeManager.SuggestedFees(ctx, dApp.ChainID, common.Address(dApp.SharedAccount))
9393
if err != nil {
9494
return "", err
9595
}
@@ -107,7 +107,7 @@ func (c *SendTransactionCommand) Execute(ctx context.Context, request RPCRequest
107107
}
108108

109109
if params.Nonce == nil {
110-
ethClient, err := c.RpcClient.EthClient(dApp.ChainID)
110+
ethClient, err := c.EthClientGetter.EthClient(dApp.ChainID)
111111
if err != nil {
112112
return "", err
113113
}

0 commit comments

Comments
 (0)