github.com/status-im/status-go@v1.1.0/api/test_helpers.go (about)

     1  package api
     2  
     3  import (
     4  	"encoding/json"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/status-im/status-go/eth-node/types"
     9  	"github.com/status-im/status-go/multiaccounts"
    10  	"github.com/status-im/status-go/multiaccounts/accounts"
    11  	"github.com/status-im/status-go/multiaccounts/settings"
    12  	"github.com/status-im/status-go/params"
    13  	"github.com/status-im/status-go/protocol/requests"
    14  
    15  	"github.com/stretchr/testify/require"
    16  )
    17  
    18  func setupWalletTest(t *testing.T, password string) (backend *GethStatusBackend, defersFunc func(), err error) {
    19  	tmpdir := t.TempDir()
    20  
    21  	defers := make([]func(), 0)
    22  	defersFunc = func() {
    23  		for _, f := range defers {
    24  			f()
    25  		}
    26  	}
    27  	if err != nil {
    28  		return
    29  	}
    30  
    31  	backend = NewGethStatusBackend()
    32  	backend.UpdateRootDataDir(tmpdir)
    33  
    34  	err = backend.AccountManager().InitKeystore(filepath.Join(tmpdir, "keystore"))
    35  
    36  	if err != nil {
    37  		return
    38  	}
    39  
    40  	// Create master account
    41  	const pathWalletRoot = "m/44'/60'/0'/0"
    42  	accs, err := backend.AccountManager().
    43  		AccountsGenerator().
    44  		GenerateAndDeriveAddresses(12, 1, "", []string{pathWalletRoot})
    45  	if err != nil {
    46  		return
    47  	}
    48  
    49  	masterAccInfo := accs[0]
    50  
    51  	_, err = backend.AccountManager().AccountsGenerator().StoreDerivedAccounts(masterAccInfo.ID, password, []string{pathWalletRoot})
    52  
    53  	if err != nil {
    54  		return
    55  	}
    56  
    57  	account := multiaccounts.Account{
    58  		Name:           "foo",
    59  		Timestamp:      1,
    60  		KeycardPairing: "pairing",
    61  		KeyUID:         masterAccInfo.KeyUID,
    62  	}
    63  
    64  	err = backend.ensureDBsOpened(account, password)
    65  	require.NoError(t, err)
    66  
    67  	walletRootAddress := masterAccInfo.Derived[pathWalletRoot].Address
    68  
    69  	config, err := params.NewNodeConfig(tmpdir, 178733)
    70  	require.NoError(t, err)
    71  	networks := json.RawMessage("{}")
    72  	s := settings.Settings{
    73  		Address:           types.HexToAddress(walletRootAddress),
    74  		DisplayName:       "UserDisplayName",
    75  		CurrentNetwork:    "mainnet_rpc",
    76  		DappsAddress:      types.HexToAddress(walletRootAddress),
    77  		EIP1581Address:    types.HexToAddress(walletRootAddress),
    78  		InstallationID:    "d3efcff6-cffa-560e-a547-21d3858cbc51",
    79  		KeyUID:            account.KeyUID,
    80  		LatestDerivedPath: 0,
    81  		Name:              "Jittery Cornflowerblue Kingbird",
    82  		Networks:          &networks,
    83  		PhotoPath:         "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAjklEQVR4nOzXwQmFMBAAUZXUYh32ZB32ZB02sxYQQSZGsod55/91WFgSS0RM+SyjA56ZRZhFmEWYRRT6h+M6G16zrxv6fdJpmUWYRbxsYr13dKfanpN0WmYRZhGzXz6AWYRZRIfbaX26fT9Jk07LLMIsosPt9I/dTDotswizCG+nhFmEWYRZhFnEHQAA///z1CFkYamgfQAAAABJRU5ErkJggg==",
    84  		PreviewPrivacy:    false,
    85  		PublicKey:         masterAccInfo.PublicKey,
    86  		SigningPhrase:     "yurt joey vibe",
    87  		WalletRootAddress: types.HexToAddress(walletRootAddress)}
    88  
    89  	err = backend.saveAccountsAndSettings(s, config, nil)
    90  	require.Error(t, err)
    91  	require.True(t, err == accounts.ErrKeypairWithoutAccounts)
    92  
    93  	// this is for StatusNode().Config() call inside of the getVerifiedWalletAccount
    94  	err = backend.StartNode(config)
    95  	require.NoError(t, err)
    96  
    97  	defers = append(defers, func() {
    98  		require.NoError(t, backend.StopNode())
    99  	})
   100  
   101  	return
   102  }
   103  
   104  // Only for tests
   105  func overrideApiConfigTest(nodeConfig *params.NodeConfig, config *requests.APIConfig) {
   106  	overrideApiConfigProd(nodeConfig, config)
   107  	nodeConfig.HTTPVirtualHosts = config.HTTPVirtualHosts
   108  }
   109  
   110  func OverrideApiConfigTest() {
   111  	overrideApiConfig = overrideApiConfigTest
   112  }