123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package msg
- import (
- "bytes"
- "encoding/binary"
- "reflect"
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/fatedier/frp/utils/errors"
- )
- type TestStruct struct{}
- func TestPack(t *testing.T) {
- assert := assert.New(t)
- var (
- msg Message
- buffer []byte
- err error
- )
-
- msg = &TestStruct{}
- buffer, err = Pack(msg)
- assert.Error(err, errors.ErrMsgType.Error())
-
- msg = &Ping{}
- buffer, err = Pack(msg)
- assert.NoError(err)
- b := bytes.NewBuffer(nil)
- b.WriteByte(TypePing)
- binary.Write(b, binary.BigEndian, int64(2))
- b.WriteString("{}")
- assert.True(bytes.Equal(b.Bytes(), buffer))
- }
- func TestUnPack(t *testing.T) {
- assert := assert.New(t)
- var (
- msg Message
- err error
- )
-
- msg, err = UnPack('-', []byte("{}"))
- assert.Error(err)
-
- msg, err = UnPack(TypePong, []byte("{}"))
- assert.NoError(err)
- assert.Equal(reflect.TypeOf(msg).Elem(), reflect.TypeOf(Pong{}))
- }
- func TestUnPackInto(t *testing.T) {
- assert := assert.New(t)
- var err error
-
- pongMsg := &Pong{}
- err = UnPackInto([]byte("{}"), pongMsg)
- assert.NoError(err)
-
- loginMsg := &Login{}
- err = UnPackInto([]byte(`{"version": 123}`), loginMsg)
- assert.Error(err)
- }
|