croc/src/message/message_test.go

76 lines
1.8 KiB
Go
Raw Normal View History

2019-04-30 02:03:19 +02:00
package message
import (
2019-09-07 19:31:18 +02:00
"crypto/rand"
2019-04-30 02:03:19 +02:00
"fmt"
2019-09-07 19:31:18 +02:00
"net"
2019-04-30 02:03:19 +02:00
"testing"
2019-09-07 19:31:18 +02:00
"time"
2019-04-30 02:03:19 +02:00
2019-09-07 19:31:18 +02:00
"github.com/schollz/croc/v6/src/comm"
2019-04-30 02:03:19 +02:00
"github.com/schollz/croc/v6/src/crypt"
2019-09-07 19:31:18 +02:00
log "github.com/schollz/logger"
2019-04-30 02:03:19 +02:00
"github.com/stretchr/testify/assert"
)
func TestMessage(t *testing.T) {
m := Message{Type: "message", Message: "hello, world"}
2019-04-30 04:50:01 +02:00
e, err := crypt.New(nil, nil)
2019-04-30 02:03:19 +02:00
assert.Nil(t, err)
fmt.Println(e.Salt())
2019-04-30 04:50:01 +02:00
b, err := Encode(e, m)
2019-04-30 02:03:19 +02:00
assert.Nil(t, err)
fmt.Printf("%x\n", b)
2019-04-30 04:50:01 +02:00
m2, err := Decode(e, b)
2019-04-30 02:03:19 +02:00
assert.Nil(t, err)
assert.Equal(t, m, m2)
2019-09-07 19:31:18 +02:00
assert.Equal(t, `{"t":"message","m":"hello, world"}`, m.String())
}
func TestSend(t *testing.T) {
token := make([]byte, 40000000)
rand.Read(token)
port := "8801"
go func() {
log.Debugf("starting TCP server on " + port)
server, err := net.Listen("tcp", "0.0.0.0:"+port)
if err != nil {
log.Error(err)
}
defer server.Close()
// spawn a new goroutine whenever a client connects
for {
connection, err := server.Accept()
if err != nil {
log.Error(err)
}
log.Debugf("client %s connected", connection.RemoteAddr().String())
go func(port string, connection net.Conn) {
c := comm.New(connection)
err = c.Send([]byte("hello, world"))
assert.Nil(t, err)
data, err := c.Receive()
assert.Nil(t, err)
assert.Equal(t, []byte("hello, computer"), data)
data, err = c.Receive()
assert.Nil(t, err)
assert.Equal(t, []byte{'\x00'}, data)
data, err = c.Receive()
assert.Nil(t, err)
assert.Equal(t, token, data)
}(port, connection)
}
}()
time.Sleep(300 * time.Millisecond)
a, err := comm.NewConnection("localhost:"+port, 10*time.Minute)
assert.Nil(t, err)
m := Message{Type: "message", Message: "hello, world"}
e, err := crypt.New(nil, nil)
assert.Nil(t, err)
assert.Nil(t, Send(a, e, m))
2019-04-30 02:03:19 +02:00
}