signer/core add tests to make sure new db keystore works well

This commit is contained in:
Huiyi Li 2020-01-26 14:40:55 -08:00
parent f7f9d1701e
commit 0f9539fe59
2 changed files with 43 additions and 9 deletions

View file

@ -119,17 +119,18 @@ func tmpDirName(t *testing.T) string {
return d return d
} }
func setup(t *testing.T) (*core.SignerAPI, *headlessUi) { func setup(ksLoc string, t *testing.T) (*core.SignerAPI, *headlessUi) {
db, err := fourbyte.New() db, err := fourbyte.New()
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())
} }
ui := &headlessUi{make(chan string, 20), make(chan string, 20)} ui := &headlessUi{make(chan string, 20), make(chan string, 20)}
am := core.StartClefAccountManager(tmpDirName(t), true, true, "") am := core.StartClefAccountManager(ksLoc, true, true, "")
api := core.NewSignerAPI(am, 1337, true, ui, db, true, &storage.NoStorage{}) api := core.NewSignerAPI(am, 1337, true, ui, db, true, &storage.NoStorage{})
return api, ui return api, ui
} }
func createAccount(ui *headlessUi, api *core.SignerAPI, t *testing.T) { func createAccount(ui *headlessUi, api *core.SignerAPI, t *testing.T) {
ui.approveCh <- "Y" ui.approveCh <- "Y"
ui.inputCh <- "a_long_password" ui.inputCh <- "a_long_password"
@ -175,8 +176,7 @@ func list(ui *headlessUi, api *core.SignerAPI, t *testing.T) ([]common.Address,
} }
func TestNewAcc(t *testing.T) { func testNewAcc(api *core.SignerAPI, control *headlessUi, t *testing.T) {
api, control := setup(t)
verifyNum := func(num int) { verifyNum := func(num int) {
list, err := list(control, api, t) list, err := list(control, api, t)
if err != nil { if err != nil {
@ -223,6 +223,18 @@ func TestNewAcc(t *testing.T) {
} }
} }
func TestNewAcc(t *testing.T) {
// test filesystem keystore
tmpDir := tmpDirName(t)
api, control := setup(tmpDir, t)
testNewAcc(api, control, t)
// test db keystore
ksLoc := "sqlite3#" + filepath.Join(tmpDir, "test_new_account.db")
api, control = setup(ksLoc, t)
testNewAcc(api, control, t)
}
func mkTestTx(from common.MixedcaseAddress) core.SendTxArgs { func mkTestTx(from common.MixedcaseAddress) core.SendTxArgs {
to := common.NewMixedcaseAddress(common.HexToAddress("0x1337")) to := common.NewMixedcaseAddress(common.HexToAddress("0x1337"))
gas := hexutil.Uint64(21000) gas := hexutil.Uint64(21000)
@ -241,14 +253,13 @@ func mkTestTx(from common.MixedcaseAddress) core.SendTxArgs {
return tx return tx
} }
func TestSignTx(t *testing.T) { func testSignTx(api *core.SignerAPI, control *headlessUi, t *testing.T) {
var ( var (
list []common.Address list []common.Address
res, res2 *ethapi.SignTransactionResult res, res2 *ethapi.SignTransactionResult
err error err error
) )
api, control := setup(t)
createAccount(control, api, t) createAccount(control, api, t)
control.approveCh <- "A" control.approveCh <- "A"
list, err = api.List(context.Background()) list, err = api.List(context.Background())
@ -321,5 +332,16 @@ func TestSignTx(t *testing.T) {
if bytes.Equal(res.Raw, res2.Raw) { if bytes.Equal(res.Raw, res2.Raw) {
t.Error("Expected tx to be modified by UI") t.Error("Expected tx to be modified by UI")
} }
}
func TestSignTx(t *testing.T) {
// test filesystem keystore
tmpDir := tmpDirName(t)
api, control := setup(tmpDir, t)
testSignTx(api, control, t)
// test db keystore
ksLoc := "sqlite3#" + filepath.Join(tmpDir, "test_sign_tx.db")
api, control = setup(ksLoc, t)
testSignTx(api, control, t)
} }

View file

@ -22,6 +22,7 @@ import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"path" "path"
"path/filepath"
"strings" "strings"
"testing" "testing"
@ -179,8 +180,7 @@ var typedData = core.TypedData{
Message: messageStandard, Message: messageStandard,
} }
func TestSignData(t *testing.T) { func testSignData(api *core.SignerAPI, control *headlessUi, t *testing.T) {
api, control := setup(t)
//Create two accounts //Create two accounts
createAccount(control, api, t) createAccount(control, api, t)
createAccount(control, api, t) createAccount(control, api, t)
@ -230,6 +230,18 @@ func TestSignData(t *testing.T) {
} }
} }
func TestSignData(t *testing.T) {
// test filesystem keystore
tmpDir := tmpDirName(t)
api, control := setup(tmpDir, t)
testSignData(api, control, t)
// test db keystore
ksLoc := "sqlite3#" + filepath.Join(tmpDir, "test_new_account.db")
api, control = setup(ksLoc, t)
testSignData(api, control, t)
}
func TestDomainChainId(t *testing.T) { func TestDomainChainId(t *testing.T) {
withoutChainID := core.TypedData{ withoutChainID := core.TypedData{
Types: core.Types{ Types: core.Types{