github.com/ConsenSys/Quorum@v20.10.0+incompatible/accounts/pluggable/backend_test.go (about)

     1  package pluggable
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/ethereum/go-ethereum/accounts"
     8  	"github.com/ethereum/go-ethereum/accounts/pluggable/internal/testutils/mock_plugin"
     9  	"github.com/golang/mock/gomock"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestBackend_Subscribe_NoOp(t *testing.T) {
    14  	b := NewBackend()
    15  
    16  	subscriber := make(chan accounts.WalletEvent, 4)
    17  	sub := b.Subscribe(subscriber)
    18  	require.NotNil(t, sub)
    19  	require.Len(t, subscriber, 0)
    20  
    21  	sub.Unsubscribe()
    22  	require.Len(t, subscriber, 0)
    23  }
    24  
    25  func TestBackend_Wallets_ReturnsCopy(t *testing.T) {
    26  	wallets := []accounts.Wallet{
    27  		&wallet{
    28  			url: accounts.URL{
    29  				Scheme: "http",
    30  				Path:   "url1",
    31  			},
    32  		},
    33  		&wallet{
    34  			url: accounts.URL{
    35  				Scheme: "http",
    36  				Path:   "url2",
    37  			},
    38  		},
    39  	}
    40  
    41  	b := NewBackend()
    42  	b.wallets = wallets
    43  
    44  	got := b.Wallets()
    45  	got[0] = &wallet{
    46  		url: accounts.URL{
    47  			Scheme: "http",
    48  			Path:   "changedurl",
    49  		},
    50  	}
    51  	require.Equal(t, "changedurl", got[0].URL().Path)
    52  
    53  	unchanged := b.Wallets()
    54  	require.Equal(t, "url1", unchanged[0].URL().Path)
    55  }
    56  
    57  func TestBackend_TimedUnlock(t *testing.T) {
    58  	ctrl := gomock.NewController(t)
    59  	defer ctrl.Finish()
    60  
    61  	mockClient := mock_plugin.NewMockService(ctrl)
    62  	mockClient.
    63  		EXPECT().
    64  		TimedUnlock(gomock.Any(), gomock.Eq(acct1), gomock.Eq("pwd"), gomock.Eq(time.Minute)).
    65  		Return(nil)
    66  
    67  	b := NewBackend()
    68  	b.wallets[0].(*wallet).pluginService = mockClient
    69  
    70  	err := b.TimedUnlock(acct1, "pwd", time.Minute)
    71  	require.NoError(t, err)
    72  }
    73  
    74  func TestBackend_Lock(t *testing.T) {
    75  	ctrl := gomock.NewController(t)
    76  	defer ctrl.Finish()
    77  
    78  	mockClient := mock_plugin.NewMockService(ctrl)
    79  	mockClient.
    80  		EXPECT().
    81  		Lock(gomock.Any(), gomock.Eq(acct1)).
    82  		Return(nil)
    83  
    84  	b := NewBackend()
    85  	b.wallets[0].(*wallet).pluginService = mockClient
    86  
    87  	err := b.Lock(acct1)
    88  	require.NoError(t, err)
    89  }
    90  
    91  func TestBackend_NewAccount(t *testing.T) {
    92  	ctrl := gomock.NewController(t)
    93  	defer ctrl.Finish()
    94  
    95  	newAccountConfig := struct{ config string }{config: "someconfig"}
    96  	newAccount := accounts.Account{}
    97  
    98  	mockClient := mock_plugin.NewMockService(ctrl)
    99  	mockClient.
   100  		EXPECT().
   101  		NewAccount(gomock.Any(), gomock.Eq(newAccountConfig)).
   102  		Return(newAccount, nil)
   103  
   104  	b := NewBackend()
   105  	b.wallets[0].(*wallet).pluginService = mockClient
   106  
   107  	got, err := b.NewAccount(newAccountConfig)
   108  	require.NoError(t, err)
   109  	require.Equal(t, newAccount, got)
   110  }
   111  
   112  func TestBackend_ImportRawKey(t *testing.T) {
   113  	ctrl := gomock.NewController(t)
   114  	defer ctrl.Finish()
   115  
   116  	newAccountConfig := struct{ config string }{config: "someconfig"}
   117  	newAccount := accounts.Account{}
   118  
   119  	mockClient := mock_plugin.NewMockService(ctrl)
   120  	mockClient.
   121  		EXPECT().
   122  		ImportRawKey(gomock.Any(), gomock.Eq("rawkey"), gomock.Eq(newAccountConfig)).
   123  		Return(newAccount, nil)
   124  
   125  	b := NewBackend()
   126  	b.wallets[0].(*wallet).pluginService = mockClient
   127  
   128  	got, err := b.ImportRawKey("rawkey", newAccountConfig)
   129  	require.NoError(t, err)
   130  	require.Equal(t, newAccount, got)
   131  }