From e5b5a3b118012efd8656edd54b950753b0d6a4de Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Mon, 22 Nov 2021 12:46:42 +0300 Subject: [PATCH] cli: add scope check tests for invocations It doesn't trigger the problem fixed in the previous commit because here CreateTxFromScript is used with pre-calculated GAS value from InvokeFunction and thus it's not performing invocation. Still, it's a nice test extension. --- cli/contract_test.go | 12 ++++++++++-- cli/testdata/deploy/main.go | 8 ++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cli/contract_test.go b/cli/contract_test.go index d43eb8d3e..d8f1865da 100644 --- a/cli/contract_test.go +++ b/cli/contract_test.go @@ -466,9 +466,17 @@ func TestComlileAndInvokeFunction(t *testing.T) { }) t.Run("with cosigner", func(t *testing.T) { - t.Run("cosigner is sender", func(t *testing.T) { + t.Run("cosigner is sender (none)", func(t *testing.T) { e.In.WriteString("one\r") - e.Run(t, append(cmd, hVerify.StringLE(), "verify", "--", validatorAddr+":Global")...) + e.RunWithError(t, append(cmd, h.StringLE(), "checkSenderWitness", "--", validatorAddr+":None")...) + }) + t.Run("cosigner is sender (customcontract)", func(t *testing.T) { + e.In.WriteString("one\r") + e.Run(t, append(cmd, h.StringLE(), "checkSenderWitness", "--", validatorAddr+":CustomContracts:"+h.StringLE())...) + }) + t.Run("cosigner is sender (global)", func(t *testing.T) { + e.In.WriteString("one\r") + e.Run(t, append(cmd, h.StringLE(), "checkSenderWitness", "--", validatorAddr+":Global")...) }) acc, err := wallet.NewAccount() diff --git a/cli/testdata/deploy/main.go b/cli/testdata/deploy/main.go index 88a3d0f67..cd62988b6 100644 --- a/cli/testdata/deploy/main.go +++ b/cli/testdata/deploy/main.go @@ -40,6 +40,14 @@ func Fail() { panic("as expected") } +// CheckSenderWitness checks sender's witness. +func CheckSenderWitness() { + tx := runtime.GetScriptContainer() + if !runtime.CheckWitness(tx.Sender) { + panic("not witnessed") + } +} + // Update updates contract with the new one. func Update(script, manifest []byte) { ctx := storage.GetReadOnlyContext()