github.com/evdatsion/aphelion-dpos-bft@v0.32.1/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  	cmn "github.com/evdatsion/aphelion-dpos-bft/libs/common"
    13  )
    14  
    15  func TestMarshalJSON(t *testing.T) {
    16  	b, err := json.Marshal(&ResponseDeliverTx{})
    17  	assert.Nil(t, err)
    18  	// Do not include empty fields.
    19  	assert.False(t, strings.Contains(string(b), "code"))
    20  
    21  	r1 := ResponseCheckTx{
    22  		Code:      1,
    23  		Data:      []byte("hello"),
    24  		GasWanted: 43,
    25  		Events: []Event{
    26  			{
    27  				Type: "testEvent",
    28  				Attributes: []cmn.KVPair{
    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  		&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(RequestEcho)
    56  		err = ReadMessage(buf, msg)
    57  		assert.Nil(t, err)
    58  
    59  		assert.Equal(t, c, msg)
    60  	}
    61  }
    62  
    63  func TestWriteReadMessage(t *testing.T) {
    64  	cases := []proto.Message{
    65  		&Header{
    66  			NumTxs: 4,
    67  		},
    68  		// TODO: add the rest
    69  	}
    70  
    71  	for _, c := range cases {
    72  		buf := new(bytes.Buffer)
    73  		err := WriteMessage(c, buf)
    74  		assert.Nil(t, err)
    75  
    76  		msg := new(Header)
    77  		err = ReadMessage(buf, msg)
    78  		assert.Nil(t, err)
    79  
    80  		assert.Equal(t, c, msg)
    81  	}
    82  }
    83  
    84  func TestWriteReadMessage2(t *testing.T) {
    85  	phrase := "hello-world"
    86  	cases := []proto.Message{
    87  		&ResponseCheckTx{
    88  			Data:      []byte(phrase),
    89  			Log:       phrase,
    90  			GasWanted: 10,
    91  			Events: []Event{
    92  				{
    93  					Type: "testEvent",
    94  					Attributes: []cmn.KVPair{
    95  						{Key: []byte("abc"), Value: []byte("def")},
    96  					},
    97  				},
    98  			},
    99  		},
   100  		// TODO: add the rest
   101  	}
   102  
   103  	for _, c := range cases {
   104  		buf := new(bytes.Buffer)
   105  		err := WriteMessage(c, buf)
   106  		assert.Nil(t, err)
   107  
   108  		msg := new(ResponseCheckTx)
   109  		err = ReadMessage(buf, msg)
   110  		assert.Nil(t, err)
   111  
   112  		assert.Equal(t, c, msg)
   113  	}
   114  }