From 178204f065743cb7d21e343c77421bd48f212311 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Fri, 8 Feb 2019 11:06:43 +0100 Subject: [PATCH] signer: fix tests to pass + formatting --- cmd/clef/main.go | 33 +-------------------------------- signer/core/api.go | 31 +++++++++++++++++++++++++++++++ signer/core/api_test.go | 23 +++++++++-------------- signer/core/stdioui.go | 2 +- signer/rules/rules.go | 2 +- signer/rules/rules_test.go | 12 ++++++++---- 6 files changed, 51 insertions(+), 52 deletions(-) diff --git a/cmd/clef/main.go b/cmd/clef/main.go index ee077964b0..df93508590 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -341,37 +341,6 @@ func initialize(c *cli.Context) error { return nil } -func startAccountManager(ksLocation string, nousb, lightKDF bool) *accounts.Manager { - var ( - backends []accounts.Backend - n, p = keystore.StandardScryptN, keystore.StandardScryptP - ) - if lightKDF { - n, p = keystore.LightScryptN, keystore.LightScryptP - } - // support password based accounts - if len(ksLocation) > 0 { - backends = append(backends, keystore.NewKeyStore(ksLocation, n, p)) - } - if !nousb { - // Start a USB hub for Ledger hardware wallets - if ledgerhub, err := usbwallet.NewLedgerHub(); err != nil { - log.Warn(fmt.Sprintf("Failed to start Ledger hub, disabling: %v", err)) - } else { - backends = append(backends, ledgerhub) - log.Debug("Ledger support enabled") - } - // Start a USB hub for Trezor hardware wallets - if trezorhub, err := usbwallet.NewTrezorHub(); err != nil { - log.Warn(fmt.Sprintf("Failed to start Trezor hub, disabling: %v", err)) - } else { - backends = append(backends, trezorhub) - log.Debug("Trezor support enabled") - } - } - return accounts.NewManager(backends...) -} - func signer(c *cli.Context) error { if err := initialize(c); err != nil { return err @@ -450,7 +419,7 @@ func signer(c *cli.Context) error { ) log.Info("Starting signer", "chainid", chainId, "keystore", ksLoc, "light-kdf", lightKdf, "advanced", advanced) - am := startAccountManager(ksLoc, nousb, lightKdf) + am := core.StartClefAccountManager(ksLoc, nousb, lightKdf) apiImpl := core.NewSignerAPI(am, chainId, nousb, ui, db, advanced) // Establish the bidirectional communication, by creating a new UI backend and registering diff --git a/signer/core/api.go b/signer/core/api.go index 9732202df3..c8e5b86e1e 100644 --- a/signer/core/api.go +++ b/signer/core/api.go @@ -112,6 +112,37 @@ type Metadata struct { Origin string `json:"Origin"` } +func StartClefAccountManager(ksLocation string, nousb, lightKDF bool) *accounts.Manager { + var ( + backends []accounts.Backend + n, p = keystore.StandardScryptN, keystore.StandardScryptP + ) + if lightKDF { + n, p = keystore.LightScryptN, keystore.LightScryptP + } + // support password based accounts + if len(ksLocation) > 0 { + backends = append(backends, keystore.NewKeyStore(ksLocation, n, p)) + } + if !nousb { + // Start a USB hub for Ledger hardware wallets + if ledgerhub, err := usbwallet.NewLedgerHub(); err != nil { + log.Warn(fmt.Sprintf("Failed to start Ledger hub, disabling: %v", err)) + } else { + backends = append(backends, ledgerhub) + log.Debug("Ledger support enabled") + } + // Start a USB hub for Trezor hardware wallets + if trezorhub, err := usbwallet.NewTrezorHub(); err != nil { + log.Warn(fmt.Sprintf("Failed to start Trezor hub, disabling: %v", err)) + } else { + backends = append(backends, trezorhub) + log.Debug("Trezor support enabled") + } + } + return accounts.NewManager(backends...) +} + // MetadataFromContext extracts Metadata from a given context.Context func MetadataFromContext(ctx context.Context) Metadata { m := Metadata{"NA", "NA", "NA", "", ""} // batman diff --git a/signer/core/api_test.go b/signer/core/api_test.go index a4be12ea51..bf4e91eb95 100644 --- a/signer/core/api_test.go +++ b/signer/core/api_test.go @@ -28,6 +28,7 @@ import ( "testing" "time" + "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -47,10 +48,9 @@ func (ui *HeadlessUI) OnInputRequired(info UserInputRequest) (UserInputResponse, func (ui *HeadlessUI) OnSignerStartup(info StartupInfo) { } -func (ui *HeadlessUI) RegisterUIServer(api *UIServerAPI){ +func (ui *HeadlessUI) RegisterUIServer(api *UIServerAPI) { } - func (ui *HeadlessUI) OnApprovedTx(tx ethapi.SignTransactionResult) { fmt.Printf("OnApproved()\n") } @@ -94,7 +94,7 @@ func (ui *HeadlessUI) ApproveListing(request *ListRequest) (ListResponse, error) case "A": return ListResponse{request.Accounts}, nil case "1": - l := make([]Account, 1) + l := make([]accounts.Account, 1) l[0] = request.Accounts[1] return ListResponse{l}, nil default: @@ -141,13 +141,8 @@ func setup(t *testing.T) (*SignerAPI, chan string) { } var ( ui = &HeadlessUI{controller} - api = NewSignerAPI( - 1, - tmpDirName(t), - true, - ui, - db, - true, true) + am = StartClefAccountManager(tmpDirName(t), true, true) + api = NewSignerAPI(am, 1337, true, ui, db, true) ) return api, controller } @@ -172,22 +167,22 @@ func failCreateAccountWithPassword(control chan string, api *SignerAPI, password control <- "Y" control <- password - acc, err := api.New(context.Background()) + addr, err := api.New(context.Background()) if err == nil { t.Fatal("Should have returned an error") } - if acc.Address != (common.Address{}) { + if addr != (common.Address{}) { t.Fatal("Empty address should be returned") } } func failCreateAccount(control chan string, api *SignerAPI, t *testing.T) { control <- "N" - acc, err := api.New(context.Background()) + addr, err := api.New(context.Background()) if err != ErrRequestDenied { t.Fatal(err) } - if acc.Address != (common.Address{}) { + if addr != (common.Address{}) { t.Fatal("Empty address should be returned") } } diff --git a/signer/core/stdioui.go b/signer/core/stdioui.go index dedcce094f..cb25bc2d00 100644 --- a/signer/core/stdioui.go +++ b/signer/core/stdioui.go @@ -40,7 +40,7 @@ func NewStdIOUI() *StdIOUI { return ui } -func (ui *StdIOUI) RegisterUIServer(api *UIServerAPI){ +func (ui *StdIOUI) RegisterUIServer(api *UIServerAPI) { ui.client.RegisterName("clef", api) } diff --git a/signer/rules/rules.go b/signer/rules/rules.go index 835d41cfb2..1f81e21bd0 100644 --- a/signer/rules/rules.go +++ b/signer/rules/rules.go @@ -65,7 +65,7 @@ func NewRuleEvaluator(next core.UIClientAPI, jsbackend, credentialsBackend stora return c, nil } -func (r *rulesetUI) RegisterUIServer(api *core.UIServerAPI){ +func (r *rulesetUI) RegisterUIServer(api *core.UIServerAPI) { // TODO, make it possible to query from js } diff --git a/signer/rules/rules_test.go b/signer/rules/rules_test.go index 0f25708c0b..826d1ee334 100644 --- a/signer/rules/rules_test.go +++ b/signer/rules/rules_test.go @@ -77,7 +77,7 @@ type alwaysDenyUI struct{} func (alwaysDenyUI) OnInputRequired(info core.UserInputRequest) (core.UserInputResponse, error) { return core.UserInputResponse{}, nil } -func (alwaysDenyUI) RegisterUIServer(api *UIServerAPI) { +func (alwaysDenyUI) RegisterUIServer(api *core.UIServerAPI) { } func (alwaysDenyUI) OnSignerStartup(info core.StartupInfo) { @@ -135,11 +135,11 @@ func initRuleEngine(js string) (*rulesetUI, error) { } func TestListRequest(t *testing.T) { - accs := make([]core.Account, 5) + accs := make([]accounts.Account, 5) for i := range accs { addr := fmt.Sprintf("000000000000000000000000000000000000000%x", i) - acc := core.Account{ + acc := accounts.Account{ Address: common.BytesToAddress(common.Hex2Bytes(addr)), URL: accounts.URL{Scheme: "test", Path: fmt.Sprintf("acc-%d", i)}, } @@ -210,6 +210,10 @@ type dummyUI struct { calls []string } +func (d *dummyUI) RegisterUIServer(api *core.UIServerAPI) { + panic("implement me") +} + func (d *dummyUI) OnInputRequired(info core.UserInputRequest) (core.UserInputResponse, error) { d.calls = append(d.calls, "OnInputRequired") return core.UserInputResponse{}, nil @@ -533,7 +537,7 @@ func (d *dontCallMe) OnInputRequired(info core.UserInputRequest) (core.UserInput d.t.Fatalf("Did not expect next-handler to be called") return core.UserInputResponse{}, nil } -func (d *dontCallMe) RegisterUIServer(api *UIServerAPI) { +func (d *dontCallMe) RegisterUIServer(api *core.UIServerAPI) { } func (d *dontCallMe) OnSignerStartup(info core.StartupInfo) {