diff options
author | Martin Holst Swende <martin@swende.se> | 2019-02-13 00:38:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-13 00:38:46 +0800 |
commit | b5d471a73905247406dcbe5ffac6087f80896374 (patch) | |
tree | 4ab7f61bfbf3cacb183ddeb95465f19dd13bba7c /signer/rules | |
parent | 75d292bcf673e1b10ac883f8767d092d2f45fd9a (diff) | |
download | go-tangerine-b5d471a73905247406dcbe5ffac6087f80896374.tar go-tangerine-b5d471a73905247406dcbe5ffac6087f80896374.tar.gz go-tangerine-b5d471a73905247406dcbe5ffac6087f80896374.tar.bz2 go-tangerine-b5d471a73905247406dcbe5ffac6087f80896374.tar.lz go-tangerine-b5d471a73905247406dcbe5ffac6087f80896374.tar.xz go-tangerine-b5d471a73905247406dcbe5ffac6087f80896374.tar.zst go-tangerine-b5d471a73905247406dcbe5ffac6087f80896374.zip |
clef: bidirectional communication with UI (#19018)
* clef: initial implementation of bidirectional RPC communication for the UI
* signer: fix tests to pass + formatting
* clef: fix unused import + formatting
* signer: gosimple nitpicks
Diffstat (limited to 'signer/rules')
-rw-r--r-- | signer/rules/rules.go | 9 | ||||
-rw-r--r-- | signer/rules/rules_test.go | 12 |
2 files changed, 16 insertions, 5 deletions
diff --git a/signer/rules/rules.go b/signer/rules/rules.go index 07c34db22..1f81e21bd 100644 --- a/signer/rules/rules.go +++ b/signer/rules/rules.go @@ -46,16 +46,16 @@ func consoleOutput(call otto.FunctionCall) otto.Value { return otto.Value{} } -// rulesetUI provides an implementation of SignerUI that evaluates a javascript +// rulesetUI provides an implementation of UIClientAPI that evaluates a javascript // file for each defined UI-method type rulesetUI struct { - next core.SignerUI // The next handler, for manual processing + next core.UIClientAPI // The next handler, for manual processing storage storage.Storage credentials storage.Storage jsRules string // The rules to use } -func NewRuleEvaluator(next core.SignerUI, jsbackend, credentialsBackend storage.Storage) (*rulesetUI, error) { +func NewRuleEvaluator(next core.UIClientAPI, jsbackend, credentialsBackend storage.Storage) (*rulesetUI, error) { c := &rulesetUI{ next: next, storage: jsbackend, @@ -65,6 +65,9 @@ func NewRuleEvaluator(next core.SignerUI, jsbackend, credentialsBackend storage. return c, nil } +func (r *rulesetUI) RegisterUIServer(api *core.UIServerAPI) { + // TODO, make it possible to query from js +} func (r *rulesetUI) Init(javascriptRules string) error { r.jsRules = javascriptRules diff --git a/signer/rules/rules_test.go b/signer/rules/rules_test.go index d3b2edd55..826d1ee33 100644 --- a/signer/rules/rules_test.go +++ b/signer/rules/rules_test.go @@ -77,6 +77,8 @@ type alwaysDenyUI struct{} func (alwaysDenyUI) OnInputRequired(info core.UserInputRequest) (core.UserInputResponse, error) { return core.UserInputResponse{}, nil } +func (alwaysDenyUI) RegisterUIServer(api *core.UIServerAPI) { +} func (alwaysDenyUI) OnSignerStartup(info core.StartupInfo) { } @@ -133,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)}, } @@ -208,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 @@ -531,6 +537,8 @@ 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 *core.UIServerAPI) { +} func (d *dontCallMe) OnSignerStartup(info core.StartupInfo) { } |