mirror of
https://github.com/bettercap/bettercap
synced 2025-07-16 10:03:39 -07:00
64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package vhost
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"net"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestHeaderPreserved(t *testing.T) {
|
|
var msg string = "TestHeaderPreserved message! Hello world!"
|
|
var headerLen int = 15
|
|
|
|
l, err := net.Listen("tcp", "127.0.0.1:12345")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer l.Close()
|
|
|
|
go func() {
|
|
conn, err := net.Dial("tcp", "127.0.0.1:12345")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
if _, err := conn.Write([]byte(msg)); err != nil {
|
|
panic(err)
|
|
}
|
|
if err = conn.Close(); err != nil {
|
|
panic(err)
|
|
}
|
|
}()
|
|
|
|
conn, err := l.Accept()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// create a shared connection object
|
|
c, rd := newShared(conn)
|
|
|
|
// read out a "header"
|
|
p := make([]byte, headerLen)
|
|
_, err = io.ReadFull(rd, p)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// make sure we got the header
|
|
expectedHeader := []byte(msg[:headerLen])
|
|
if !reflect.DeepEqual(p, expectedHeader) {
|
|
t.Errorf("Read header bytes %s, expected %s", p, expectedHeader)
|
|
return
|
|
}
|
|
|
|
// read out the entire connection. make sure it includes the header
|
|
buf := bytes.NewBuffer([]byte{})
|
|
io.Copy(buf, c)
|
|
|
|
expected := []byte(msg)
|
|
if !reflect.DeepEqual(buf.Bytes(), expected) {
|
|
t.Errorf("Read full connection bytes %s, expected %s", buf.Bytes(), expected)
|
|
}
|
|
}
|