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 }