github.com/kisexp/xdchain@v0.0.0-20211206025815-490d6b732aa7/accounts/pluggable/backend_test.go (about) 1 package pluggable 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/kisexp/xdchain/accounts" 8 "github.com/kisexp/xdchain/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 }