github.com/status-im/status-go@v1.1.0/multiaccounts/accounts/account_test.go (about)

     1  package accounts
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/status-im/status-go/multiaccounts/common"
    10  )
    11  
    12  func TestIsOwnAccount(t *testing.T) {
    13  	account := Account{Wallet: true, Type: AccountTypeGenerated}
    14  	require.True(t, account.IsWalletNonWatchOnlyAccount())
    15  
    16  	account = Account{
    17  		Type: AccountTypeGenerated,
    18  	}
    19  	require.True(t, account.IsWalletNonWatchOnlyAccount())
    20  
    21  	account = Account{
    22  		Type: AccountTypeKey,
    23  	}
    24  	require.True(t, account.IsWalletNonWatchOnlyAccount())
    25  
    26  	account = Account{
    27  		Type: AccountTypeSeed,
    28  	}
    29  	require.True(t, account.IsWalletNonWatchOnlyAccount())
    30  
    31  	account = Account{
    32  		Type: AccountTypeWatch,
    33  	}
    34  	require.False(t, account.IsWalletNonWatchOnlyAccount())
    35  
    36  	account = Account{}
    37  	require.False(t, account.IsWalletNonWatchOnlyAccount())
    38  }
    39  
    40  func TestUnmarshal(t *testing.T) {
    41  	data := `
    42  {
    43  		"key-uid": "0xbc14c321b74652e57c7f26eb30d597ea27cbdf36cba5c85d24f12748153a035e",
    44      "public-key": "0x0465f6d4f1172524fc057954c8a3f8e34f991558b3d1097189975062f67adda7835da61acb5cda3348b41d211ed0cb07aba668eb12e19e29d98745bebf68d93b61",
    45      "address": "0xf09c9f5Fb9faa22d0C6C593e7157Ceac8B2b0fe4",
    46      "colorId": "primary",
    47      "wallet": true,
    48  		"chat": true,
    49      "path": "m/44'/60'/0'/0/0",
    50      "name": "Status account",
    51  		"type": "generated",
    52  		"emoji": "some-emoji",
    53  		"hidden": true,
    54  		"clock": 1234,
    55  		"removed": true,
    56  		"operable": "fully"
    57  }
    58  `
    59  	var account Account
    60  	err := json.Unmarshal([]byte(data), &account)
    61  	require.NoError(t, err)
    62  
    63  	require.Equal(t, "0xbc14c321b74652e57c7f26eb30d597ea27cbdf36cba5c85d24f12748153a035e", account.KeyUID)
    64  	require.Equal(t, []byte("0x0465f6d4f1172524fc057954c8a3f8e34f991558b3d1097189975062f67adda7835da61acb5cda3348b41d211ed0cb07aba668eb12e19e29d98745bebf68d93b61"), account.PublicKey.Bytes())
    65  	require.Equal(t, "0xf09c9f5Fb9faa22d0C6C593e7157Ceac8B2b0fe4", account.Address.String())
    66  	require.Equal(t, common.CustomizationColorPrimary, account.ColorID)
    67  	require.Equal(t, true, account.Wallet)
    68  	require.Equal(t, true, account.Chat)
    69  	require.Equal(t, "m/44'/60'/0'/0/0", account.Path)
    70  	require.Equal(t, "Status account", account.Name)
    71  	require.Equal(t, "generated", account.Type.String())
    72  	require.Equal(t, "some-emoji", account.Emoji)
    73  	require.Equal(t, true, account.Hidden)
    74  	require.Equal(t, uint64(1234), account.Clock)
    75  	require.Equal(t, true, account.Removed)
    76  	require.Equal(t, "fully", account.Operable.String())
    77  }