diff --git a/README.md b/README.md index 23a4b53a7..47817401e 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,12 @@ Node and SDK for the NEO blockchain written in the Go language.

+

+ + + +

+ # Overview ### Long term project goals Full port of the original C# [NEO project](https://github.com/neo-project). A complete toolkit for the NEO blockchain. diff --git a/pkg/network/message.go b/pkg/network/message.go index 55d36d927..eeec5a59c 100644 --- a/pkg/network/message.go +++ b/pkg/network/message.go @@ -17,6 +17,10 @@ const ( cmdSize = 12 ) +var ( + errChecksumMismatch = errors.New("checksum mismatch") +) + // NetMode type that is compatible with netModes below. type NetMode uint32 @@ -166,7 +170,7 @@ func (m *Message) decodePayload(r io.Reader) error { // Compare the checksum of the payload. if !compareChecksum(m.Checksum, pbuf) { - return errors.New("checksum mismatch error") + return errChecksumMismatch } r = bytes.NewReader(pbuf) diff --git a/pkg/network/message_test.go b/pkg/network/message_test.go index 35ee154a5..ae443b149 100644 --- a/pkg/network/message_test.go +++ b/pkg/network/message_test.go @@ -8,23 +8,6 @@ import ( "github.com/anthdm/neo-go/pkg/network/payload" ) -// func TestNewMessage(t *testing.T) { -// payload := []byte{} -// m := newMessage(ModeTestNet, cmdVersion, payload) - -// if have, want := m.Length, uint32(0); want != have { -// t.Errorf("want %d have %d", want, have) -// } -// if have, want := len(m.Command), 12; want != have { -// t.Errorf("want %d have %d", want, have) -// } - -// sum := sumSHA256(sumSHA256(payload))[:4] -// sumuint32 := binary.LittleEndian.Uint32(sum) -// if have, want := m.Checksum, sumuint32; want != have { -// t.Errorf("want %d have %d", want, have) -// } -// } func TestMessageEncodeDecode(t *testing.T) { m := newMessage(ModeTestNet, cmdVersion, nil) @@ -50,52 +33,36 @@ func TestMessageEncodeDecode(t *testing.T) { } func TestMessageEncodeDecodeWithVersion(t *testing.T) { - p := payload.NewVersion(2000, "/neo/", 0, true) + p := payload.NewVersion(12227, 2000, "./neo:2.6.0/", 0, true) m := newMessage(ModeTestNet, cmdVersion, p) - buf := &bytes.Buffer{} + buf := new(bytes.Buffer) if err := m.encode(buf); err != nil { t.Error(err) } - t.Log(buf.Len()) - m1 := &Message{} - if err := m1.decode(buf); err != nil { + mDecode := &Message{} + if err := mDecode.decode(buf); err != nil { t.Fatal(err) } - p1 := m1.Payload.(*payload.Version) - t.Log(p1) + if !reflect.DeepEqual(m, mDecode) { + t.Fatalf("expected both messages to be equal %v and %v", m, mDecode) + } } func TestMessageInvalidChecksum(t *testing.T) { - m := newMessage(ModeTestNet, cmdVersion, nil) + p := payload.NewVersion(1111, 3000, "./NEO:2.6.0/", 0, true) + m := newMessage(ModeTestNet, cmdVersion, p) m.Checksum = 1337 - buf := &bytes.Buffer{} + buf := new(bytes.Buffer) if err := m.encode(buf); err != nil { t.Error(err) } md := &Message{} - if err := md.decode(buf); err == nil { - t.Error("decode should failed with checkum mismatch error") + if err := md.decode(buf); err == nil && err != errChecksumMismatch { + t.Fatalf("decode should fail with %s", errChecksumMismatch) } } - -// func TestNewVersionPayload(t *testing.T) { -// ua := "/neo/0.0.1/" -// p := newVersionPayload(3000, ua, 0, true) -// b, err := p.encode() -// if err != nil { -// t.Fatal(err) -// } - -// pd := &Version{} -// if err := pd.decode(b); err != nil { -// t.Fatal(err) -// } -// if !reflect.DeepEqual(p, pd) { -// t.Errorf("both payloads should be equal: %v != %v", p, pd) -// } -// }