From a2f012e589ae1e0696568ab2c26a6efbfa2cfb3b Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Tue, 18 Feb 2020 11:09:07 +0300 Subject: [PATCH] core: deploy new smart-contract in test blocks Also put smart-contract sources in testdata and add invocation TX with APPCALL and storage.Put. --- pkg/core/helper_test.go | 12 ++++++++++++ pkg/rpc/server_test.go | 4 ++-- pkg/rpc/testdata/test_contract.avm | Bin 38 -> 77 bytes pkg/rpc/testdata/test_contract.go | 9 +++++++++ pkg/rpc/testdata/testblocks.acc | Bin 26597 -> 27236 bytes 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 pkg/rpc/testdata/test_contract.go diff --git a/pkg/core/helper_test.go b/pkg/core/helper_test.go index 07e6ffe45..db6d97ab2 100644 --- a/pkg/core/helper_test.go +++ b/pkg/core/helper_test.go @@ -214,6 +214,18 @@ func _(t *testing.T) { t.Fatal(err) } + script = io.NewBufBinWriter() + emit.String(script.BinWriter, "testvalue") + emit.String(script.BinWriter, "testkey") + emit.Int(script.BinWriter, 2) + emit.Opcode(script.BinWriter, opcode.PACK) + emit.String(script.BinWriter, "Put") + emit.AppCall(script.BinWriter, hash.Hash160(avm), false) + + tx3 := transaction.NewInvocationTX(script.Bytes(), util.Fixed8FromFloat(100)) + b := newBlock(uint32(n+2), newMinerTX(), tx3) + require.NoError(t, bc.AddBlock(b)) + outStream, err := os.Create("../rpc/testdata/testblocks.acc") if err != nil { t.Fatal(err) diff --git a/pkg/rpc/server_test.go b/pkg/rpc/server_test.go index a0c83480a..f95ec07bc 100644 --- a/pkg/rpc/server_test.go +++ b/pkg/rpc/server_test.go @@ -75,13 +75,13 @@ var rpcTestCases = map[string][]rpcTestCase{ "getcontractstate": { { name: "positive", - params: `["6d1eeca891ee93de2b7a77eb91c26f3b3c04d6cf"]`, + params: `["5ec6b374fd13e53fe60be7901a091695123ea2f0"]`, result: func(e *executor) interface{} { return &GetContractStateResponce{} }, check: func(t *testing.T, e *executor, result interface{}) { res, ok := result.(*GetContractStateResponce) require.True(t, ok) assert.Equal(t, byte(0), res.Result.Version) - assert.Equal(t, util.Uint160{0x6d, 0x1e, 0xec, 0xa8, 0x91, 0xee, 0x93, 0xde, 0x2b, 0x7a, 0x77, 0xeb, 0x91, 0xc2, 0x6f, 0x3b, 0x3c, 0x4, 0xd6, 0xcf}, res.Result.ScriptHash) + assert.Equal(t, util.Uint160{0x5e, 0xc6, 0xb3, 0x74, 0xfd, 0x13, 0xe5, 0x3f, 0xe6, 0x0b, 0xe7, 0x90, 0x1a, 0x09, 0x16, 0x95, 0x12, 0x3e, 0xa2, 0xf0}, res.Result.ScriptHash) assert.Equal(t, "0.99", res.Result.CodeVersion) }, }, diff --git a/pkg/rpc/testdata/test_contract.avm b/pkg/rpc/testdata/test_contract.avm index 10193d3de35cf17790d7d3fdd2b3387ffb73fdb3..15e36929df2af3a05903ab204c5955efc3ed3ee6 100755 GIT binary patch literal 77 zcmWGNnw`Z^eIzTe`bdVDUuwQya7lhqVtT5cduoYueqKpxMM+{-5KuwT;jF;J3?L%# Ta8OYOKeF0@(vrl$oYFJ^)*l~j literal 38 tcmWGMn$7Exnv;{Sqfnk-l#`;E!S9!vuNPFBSCW~Vs^^oRo|sdb1^@`L4Z8pU diff --git a/pkg/rpc/testdata/test_contract.go b/pkg/rpc/testdata/test_contract.go new file mode 100644 index 000000000..f1ee83997 --- /dev/null +++ b/pkg/rpc/testdata/test_contract.go @@ -0,0 +1,9 @@ +package testdata + +import "github.com/CityOfZion/neo-go/pkg/interop/storage" + +func Main(operation string, args []interface{}) interface{} { + ctx := storage.GetContext() + storage.Put(ctx, args[0].([]byte), args[1].([]byte)) + return true +} diff --git a/pkg/rpc/testdata/testblocks.acc b/pkg/rpc/testdata/testblocks.acc index 3f63e2bdc70991b8c8c63bc741d66354ad8f239c..f0bcc1f757a5ab0ed6b9bbbb4e873edf03c8df3e 100644 GIT binary patch literal 27236 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