package wire import ( "bytes" "net" "testing" "github.com/CityOfZion/neo-go/pkg/wire/payload" "github.com/CityOfZion/neo-go/pkg/wire/protocol" "github.com/stretchr/testify/assert" ) // This is quite hard to test because the message uses time.Now() // TODO: Test each field expect time.Now(), just make sure it is a uint32 func TestWriteMessageLen(t *testing.T) { expectedIP := "127.0.0.1" expectedPort := 8333 tcpAddrMe := &net.TCPAddr{IP: net.ParseIP(expectedIP), Port: expectedPort} message, err := payload.NewVersionMessage(tcpAddrMe, 0, true, protocol.DefaultVersion, protocol.UserAgent, 100, protocol.NodePeerService) if err != nil { assert.Fail(t, err.Error()) } buf := new(bytes.Buffer) if err := WriteMessage(buf, protocol.MainNet, message); err != nil { assert.Fail(t, err.Error()) } assert.Equal(t, 60, len(buf.Bytes())) } func TestReadMessage(t *testing.T) { expectedIP := "127.0.0.1" expectedPort := 8333 tcpAddrMe := &net.TCPAddr{IP: net.ParseIP(expectedIP), Port: expectedPort} message, err := payload.NewVersionMessage(tcpAddrMe, 23, true, protocol.DefaultVersion, protocol.UserAgent, 100, protocol.NodePeerService) if err != nil { assert.Fail(t, err.Error()) } buf := new(bytes.Buffer) if err := WriteMessage(buf, protocol.MainNet, message); err != nil { assert.Fail(t, err.Error()) } readmsg, err := ReadMessage(buf, protocol.MainNet) if err != nil { assert.Fail(t, err.Error()) } version := readmsg.(*payload.VersionMessage) assert.Equal(t, 23, int(version.StartHeight)) // If MessageReading was unsuccessfull it will return a nil object }