aboutsummaryrefslogtreecommitdiffstats
path: root/signer/rules
diff options
context:
space:
mode:
authorMartin Holst Swende <martin@swende.se>2019-02-13 00:38:46 +0800
committerGitHub <noreply@github.com>2019-02-13 00:38:46 +0800
commitb5d471a73905247406dcbe5ffac6087f80896374 (patch)
tree4ab7f61bfbf3cacb183ddeb95465f19dd13bba7c /signer/rules
parent75d292bcf673e1b10ac883f8767d092d2f45fd9a (diff)
downloadgo-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.go9
-rw-r--r--signer/rules/rules_test.go12
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) {
}