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