status-go/services/connector/commands/test_helpers.go

89 lines
2.0 KiB
Go

package commands
import (
"database/sql"
"encoding/json"
"testing"
"github.com/stretchr/testify/require"
"github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/params"
persistence "github.com/status-im/status-go/services/connector/database"
"github.com/status-im/status-go/signal"
"github.com/status-im/status-go/t/helpers"
"github.com/status-im/status-go/walletdatabase"
)
var testDAppData = signal.ConnectorDApp{
URL: "http://testDAppURL",
Name: "testDAppName",
IconURL: "http://testDAppIconUrl",
}
type RPCClientMock struct {
response string
}
type NetworkManagerMock struct {
networks []*params.Network
}
type EventType struct {
Type string `json:"type"`
Event json.RawMessage `json:"event"`
}
func (c *RPCClientMock) CallRaw(request string) string {
return c.response
}
func (c *RPCClientMock) SetResponse(response string) {
c.response = response
}
func (nm *NetworkManagerMock) GetActiveNetworks() ([]*params.Network, error) {
return nm.networks, nil
}
func (nm *NetworkManagerMock) SetNetworks(networks []*params.Network) {
nm.networks = networks
}
func SetupTestDB(t *testing.T) (db *sql.DB, close func()) {
db, err := helpers.SetupTestMemorySQLDB(walletdatabase.DbInitializer{})
require.NoError(t, err)
return db, func() {
require.NoError(t, db.Close())
}
}
func PersistDAppData(db *sql.DB, dApp signal.ConnectorDApp, sharedAccount types.Address, chainID uint64) error {
dAppDb := persistence.DApp{
URL: dApp.URL,
Name: dApp.Name,
IconURL: dApp.IconURL,
SharedAccount: sharedAccount,
ChainID: chainID,
}
return persistence.UpsertDApp(db, &dAppDb)
}
func ConstructRPCRequest(method string, params []interface{}, dApp *signal.ConnectorDApp) (RPCRequest, error) {
request := RPCRequest{
JSONRPC: "2.0",
ID: 1,
Method: method,
Params: params,
}
if dApp != nil {
request.URL = dApp.URL
request.Name = dApp.Name
request.IconURL = dApp.IconURL
}
return request, nil
}