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  }