added basic checksum test. + fix travis build

This commit is contained in:
anthdm 2018-01-29 08:42:49 +01:00
parent cf1a57aa83
commit 6f08d967ba
3 changed files with 23 additions and 46 deletions

View file

@ -10,6 +10,12 @@
Node and SDK for the <b>NEO</b> blockchain written in the <b>Go</b> language. Node and SDK for the <b>NEO</b> blockchain written in the <b>Go</b> language.
</p> </p>
<p align="center">
<a href="https://travis-ci.org/anthdm/neo-go">
<img src="https://travis-ci.org/anthdm/neo-go.svg?branch=master">
</a>
</p>
# Overview # Overview
### Long term project goals ### Long term project goals
Full port of the original C# [NEO project](https://github.com/neo-project). A complete toolkit for the NEO blockchain. Full port of the original C# [NEO project](https://github.com/neo-project). A complete toolkit for the NEO blockchain.

View file

@ -17,6 +17,10 @@ const (
cmdSize = 12 cmdSize = 12
) )
var (
errChecksumMismatch = errors.New("checksum mismatch")
)
// NetMode type that is compatible with netModes below. // NetMode type that is compatible with netModes below.
type NetMode uint32 type NetMode uint32
@ -166,7 +170,7 @@ func (m *Message) decodePayload(r io.Reader) error {
// Compare the checksum of the payload. // Compare the checksum of the payload.
if !compareChecksum(m.Checksum, pbuf) { if !compareChecksum(m.Checksum, pbuf) {
return errors.New("checksum mismatch error") return errChecksumMismatch
} }
r = bytes.NewReader(pbuf) r = bytes.NewReader(pbuf)

View file

@ -8,23 +8,6 @@ import (
"github.com/anthdm/neo-go/pkg/network/payload" "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) { func TestMessageEncodeDecode(t *testing.T) {
m := newMessage(ModeTestNet, cmdVersion, nil) m := newMessage(ModeTestNet, cmdVersion, nil)
@ -50,52 +33,36 @@ func TestMessageEncodeDecode(t *testing.T) {
} }
func TestMessageEncodeDecodeWithVersion(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) m := newMessage(ModeTestNet, cmdVersion, p)
buf := &bytes.Buffer{} buf := new(bytes.Buffer)
if err := m.encode(buf); err != nil { if err := m.encode(buf); err != nil {
t.Error(err) t.Error(err)
} }
t.Log(buf.Len())
m1 := &Message{} mDecode := &Message{}
if err := m1.decode(buf); err != nil { if err := mDecode.decode(buf); err != nil {
t.Fatal(err) 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) { 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 m.Checksum = 1337
buf := &bytes.Buffer{} buf := new(bytes.Buffer)
if err := m.encode(buf); err != nil { if err := m.encode(buf); err != nil {
t.Error(err) t.Error(err)
} }
md := &Message{} md := &Message{}
if err := md.decode(buf); err == nil { if err := md.decode(buf); err == nil && err != errChecksumMismatch {
t.Error("decode should failed with checkum mismatch error") 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)
// }
// }