2018-01-26 18:04:13 +00:00
|
|
|
package network
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"testing"
|
2018-01-27 15:00:28 +00:00
|
|
|
|
2018-02-01 18:54:23 +00:00
|
|
|
"github.com/CityOfZion/neo-go/pkg/network/payload"
|
2018-03-09 15:55:25 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
2018-01-26 18:04:13 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestMessageEncodeDecode(t *testing.T) {
|
2018-03-09 15:55:25 +00:00
|
|
|
m := NewMessage(ModeTestNet, CMDVersion, nil)
|
2018-01-26 18:04:13 +00:00
|
|
|
|
|
|
|
buf := &bytes.Buffer{}
|
|
|
|
if err := m.encode(buf); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
2018-03-09 15:55:25 +00:00
|
|
|
assert.Equal(t, len(buf.Bytes()), minMessageSize)
|
2018-01-26 20:43:07 +00:00
|
|
|
|
2018-01-26 18:04:13 +00:00
|
|
|
md := &Message{}
|
|
|
|
if err := md.decode(buf); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
2018-03-09 15:55:25 +00:00
|
|
|
assert.Equal(t, m, md)
|
2018-01-26 18:04:13 +00:00
|
|
|
}
|
|
|
|
|
2018-01-27 15:00:28 +00:00
|
|
|
func TestMessageEncodeDecodeWithVersion(t *testing.T) {
|
2018-03-09 15:55:25 +00:00
|
|
|
var (
|
|
|
|
p = payload.NewVersion(12227, 2000, "/neo:2.6.0/", 0, true)
|
|
|
|
m = NewMessage(ModeTestNet, CMDVersion, p)
|
|
|
|
)
|
2018-01-26 18:04:13 +00:00
|
|
|
|
2018-01-29 07:42:49 +00:00
|
|
|
buf := new(bytes.Buffer)
|
2018-01-26 18:04:13 +00:00
|
|
|
if err := m.encode(buf); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2018-01-29 07:42:49 +00:00
|
|
|
mDecode := &Message{}
|
|
|
|
if err := mDecode.decode(buf); err != nil {
|
2018-01-26 18:04:13 +00:00
|
|
|
t.Fatal(err)
|
|
|
|
}
|
2018-03-09 15:55:25 +00:00
|
|
|
assert.Equal(t, m, mDecode)
|
2018-01-26 18:04:13 +00:00
|
|
|
}
|
2018-01-27 15:00:28 +00:00
|
|
|
|
2018-01-27 15:47:43 +00:00
|
|
|
func TestMessageInvalidChecksum(t *testing.T) {
|
2018-03-09 15:55:25 +00:00
|
|
|
var (
|
|
|
|
p = payload.NewVersion(1111, 3000, "/NEO:2.6.0/", 0, true)
|
|
|
|
m = NewMessage(ModeTestNet, CMDVersion, p)
|
|
|
|
)
|
2018-01-27 15:47:43 +00:00
|
|
|
m.Checksum = 1337
|
2018-01-27 15:00:28 +00:00
|
|
|
|
2018-01-29 07:42:49 +00:00
|
|
|
buf := new(bytes.Buffer)
|
2018-01-27 15:47:43 +00:00
|
|
|
if err := m.encode(buf); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
2018-01-27 15:00:28 +00:00
|
|
|
|
2018-01-27 15:47:43 +00:00
|
|
|
md := &Message{}
|
2018-01-29 07:42:49 +00:00
|
|
|
if err := md.decode(buf); err == nil && err != errChecksumMismatch {
|
|
|
|
t.Fatalf("decode should fail with %s", errChecksumMismatch)
|
2018-01-27 15:47:43 +00:00
|
|
|
}
|
|
|
|
}
|