Skip to content

Commit

Permalink
[test] refs #279 - Add and test util helpers for PubKeyFromBytes an…
Browse files Browse the repository at this point in the history
…d `SecKeyFromBytes`
  • Loading branch information
e1Ru1o committed Jan 21, 2020
1 parent 9f73803 commit 068f1ef
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/util/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package util

import (
"errors"

"github.com/fibercrypto/fibercryptowallet/src/core"
local "github.com/fibercrypto/fibercryptowallet/src/main"
)

func PubKeyFromBytes(ticker string, bytes []byte) (core.PubKey, error) {
if plugin, isRegistered := local.LoadAltcoinManager().LookupAltcoinPlugin(ticker); isRegistered {
return plugin.PubKeyFromBytes(bytes)
}
return nil, errors.New(ticker + " <Unregistered>")
}

func SecKeyFromBytes(ticker string, bytes []byte) (core.PubKey, error) {
if plugin, isRegistered := local.LoadAltcoinManager().LookupAltcoinPlugin(ticker); isRegistered {
return plugin.SecKeyFromBytes(bytes)
}
return nil, errors.New(ticker + " <Unregistered>")
}
70 changes: 70 additions & 0 deletions src/util/main_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package util

import (
"testing"

"github.com/fibercrypto/fibercryptowallet/src/coin/mocks"
"github.com/fibercrypto/fibercryptowallet/src/core"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
)

func TestPubKeyFromBytes(t *testing.T) {
fakeTicker := "MOCKSCOIN"
fakeDesc := "Fake coin"
fakeExp := 3
fakeMeta := core.AltcoinMetadata{
Name: fakeDesc,
Ticker: fakeTicker,
Family: fakeTicker,
HasBip44: false,
Bip44CoinType: 0,
Accuracy: int32(fakeExp),
}
mockPlugin := new(mocks.AltcoinPlugin)
mockPlugin.On("RegisterTo", mock.Anything).Return().Run(func(args mock.Arguments) {
manager := args.Get(0).(core.AltcoinManager)
manager.RegisterAltcoin(fakeMeta, mockPlugin)
})
bytes := []byte{1, 0, 1}
mockPubKey := new(mocks.PubKey)
mockPlugin.On("PubKeyFromBytes", bytes).Return(mockPubKey, nil)
RegisterAltcoin(mockPlugin)

pubKey, err := PubKeyFromBytes(fakeTicker, bytes)
require.Nil(t, err)
require.Equal(t, pubKey, mockPubKey)

pubKey, err = PubKeyFromBytes(`CUSTOMTICKER`, bytes)
require.NotNil(t, err)
}

func TestSecKeyFromBytes(t *testing.T) {
fakeTicker := "MOCKSCOIN"
fakeDesc := "Fake coin"
fakeExp := 3
fakeMeta := core.AltcoinMetadata{
Name: fakeDesc,
Ticker: fakeTicker,
Family: fakeTicker,
HasBip44: false,
Bip44CoinType: 0,
Accuracy: int32(fakeExp),
}
mockPlugin := new(mocks.AltcoinPlugin)
mockPlugin.On("RegisterTo", mock.Anything).Return().Run(func(args mock.Arguments) {
manager := args.Get(0).(core.AltcoinManager)
manager.RegisterAltcoin(fakeMeta, mockPlugin)
})
bytes := []byte{1, 0, 1}
mockSecKey := new(mocks.SecKey)
mockPlugin.On("SecKeyFromBytes", bytes).Return(mockSecKey, nil)
RegisterAltcoin(mockPlugin)

pubKey, err := SecKeyFromBytes(fakeTicker, bytes)
require.Nil(t, err)
require.Equal(t, pubKey, mockSecKey)

pubKey, err = SecKeyFromBytes(`CUSTOMTICKER`, bytes)
require.NotNil(t, err)
}

0 comments on commit 068f1ef

Please sign in to comment.