github.com/line/ostracon@v1.0.10-0.20230328032236-7f20145f065d/abci/types/messages_test.go (about) 1 package types 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "strings" 7 "testing" 8 9 "github.com/gogo/protobuf/proto" 10 "github.com/stretchr/testify/assert" 11 12 "github.com/tendermint/tendermint/abci/types" 13 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 14 ) 15 16 func TestMarshalJSON(t *testing.T) { 17 b, err := json.Marshal(&types.ResponseDeliverTx{}) 18 assert.Nil(t, err) 19 // include empty fields. 20 assert.True(t, strings.Contains(string(b), "code")) 21 r1 := ResponseCheckTx{ 22 Code: 1, 23 Data: []byte("hello"), 24 GasWanted: 43, 25 Events: []types.Event{ 26 { 27 Type: "testEvent", 28 Attributes: []types.EventAttribute{ 29 {Key: []byte("pho"), Value: []byte("bo")}, 30 }, 31 }, 32 }, 33 } 34 b, err = json.Marshal(&r1) 35 assert.Nil(t, err) 36 37 var r2 ResponseCheckTx 38 err = json.Unmarshal(b, &r2) 39 assert.Nil(t, err) 40 assert.Equal(t, r1, r2) 41 } 42 43 func TestWriteReadMessageSimple(t *testing.T) { 44 cases := []proto.Message{ 45 &types.RequestEcho{ 46 Message: "Hello", 47 }, 48 } 49 50 for _, c := range cases { 51 buf := new(bytes.Buffer) 52 err := WriteMessage(c, buf) 53 assert.Nil(t, err) 54 55 msg := new(types.RequestEcho) 56 err = ReadMessage(buf, msg) 57 assert.Nil(t, err) 58 59 assert.True(t, proto.Equal(c, msg)) 60 } 61 } 62 63 func TestWriteReadMessage(t *testing.T) { 64 cases := []proto.Message{ 65 &tmproto.Header{ 66 Height: 4, 67 ChainID: "test", 68 }, 69 // TODO: add the rest 70 } 71 72 for _, c := range cases { 73 buf := new(bytes.Buffer) 74 err := WriteMessage(c, buf) 75 assert.Nil(t, err) 76 77 msg := new(tmproto.Header) 78 err = ReadMessage(buf, msg) 79 assert.Nil(t, err) 80 81 assert.True(t, proto.Equal(c, msg)) 82 } 83 } 84 85 func TestWriteReadMessage2(t *testing.T) { 86 phrase := "hello-world" 87 cases := []proto.Message{ 88 &ResponseCheckTx{ 89 Data: []byte(phrase), 90 Log: phrase, 91 GasWanted: 10, 92 Events: []types.Event{ 93 { 94 Type: "testEvent", 95 Attributes: []types.EventAttribute{ 96 {Key: []byte("abc"), Value: []byte("def")}, 97 }, 98 }, 99 }, 100 }, 101 // TODO: add the rest 102 } 103 104 for _, c := range cases { 105 buf := new(bytes.Buffer) 106 err := WriteMessage(c, buf) 107 assert.Nil(t, err) 108 109 msg := new(ResponseCheckTx) 110 err = ReadMessage(buf, msg) 111 assert.Nil(t, err) 112 113 assert.True(t, proto.Equal(c, msg)) 114 } 115 }