From 464ea226f5604a6bb648c77b8f76e737d90f6c95 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Sun, 6 Aug 2017 22:34:27 +0200 Subject: [PATCH] Test the handlers and fix type byte for no conflicts --- modules/etc/handler_test.go | 61 +++++++++++++++++++++++++++++++++++++ modules/etc/tx.go | 4 +-- 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 modules/etc/handler_test.go diff --git a/modules/etc/handler_test.go b/modules/etc/handler_test.go new file mode 100644 index 000000000..28827dc9b --- /dev/null +++ b/modules/etc/handler_test.go @@ -0,0 +1,61 @@ +package etc + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tendermint/basecoin/stack" + "github.com/tendermint/basecoin/state" + wire "github.com/tendermint/go-wire" +) + +func TestHandler(t *testing.T) { + assert, require := assert.New(t), require.New(t) + + key := []byte("one") + val := []byte("foo") + var height uint64 = 123 + + h := NewHandler() + ctx := stack.MockContext("role-chain", height) + store := state.NewMemKVStore() + + set := SetTx{Key: key, Value: val}.Wrap() + remove := RemoveTx{Key: key}.Wrap() + invalid := SetTx{}.Wrap() + + // make sure pricing makes sense + cres, err := h.CheckTx(ctx, store, set) + require.Nil(err, "%+v", err) + require.True(cres.GasAllocated > 5, "%#v", cres) + + // set the value, no error + dres, err := h.DeliverTx(ctx, store, set) + require.Nil(err, "%+v", err) + + // get the data + var data Data + bs := store.Get(key) + require.NotEmpty(bs) + err = wire.ReadBinaryBytes(bs, &data) + require.Nil(err, "%+v", err) + assert.Equal(height, data.SetAt) + assert.EqualValues(val, data.Value) + + // make sure pricing makes sense + cres, err = h.CheckTx(ctx, store, remove) + require.Nil(err, "%+v", err) + require.True(cres.GasAllocated > 5, "%#v", cres) + + // remove the data returns the same as the above query + dres, err = h.DeliverTx(ctx, store, remove) + require.Nil(err, "%+v", err) + require.EqualValues(bs, dres.Data) + + // make sure invalid fails both ways + _, err = h.CheckTx(ctx, store, invalid) + require.NotNil(err) + _, err = h.DeliverTx(ctx, store, invalid) + require.NotNil(err) +} diff --git a/modules/etc/tx.go b/modules/etc/tx.go index cae743591..706fcf181 100644 --- a/modules/etc/tx.go +++ b/modules/etc/tx.go @@ -10,8 +10,8 @@ const ( TypeSet = Name + "/set" TypeRemove = Name + "/remove" - ByteSet = 0xF0 - ByteRemove = 0xF2 + ByteSet = 0xF4 + ByteRemove = 0xF5 ) func init() {