Phase8
This commit is contained in:
59
apps/edge-gateway/internal/mc/handshake_test.go
Normal file
59
apps/edge-gateway/internal/mc/handshake_test.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package mc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestExtractSlug(t *testing.T) {
|
||||
if got := ExtractSlug("abc.play.example.net", "play.example.net"); got != "abc" {
|
||||
t.Fatalf("got %q want abc", got)
|
||||
}
|
||||
if got := ExtractSlug("other.net", "play.example.net"); got != "" {
|
||||
t.Fatalf("expected empty slug")
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadHandshake(t *testing.T) {
|
||||
var payload bytes.Buffer
|
||||
writeVarInt(&payload, 0)
|
||||
writeVarInt(&payload, 763)
|
||||
writeString(&payload, "demo.play.example.net")
|
||||
payload.WriteByte(0x63)
|
||||
payload.WriteByte(0xdd)
|
||||
writeVarInt(&payload, 2)
|
||||
|
||||
var packet bytes.Buffer
|
||||
writeVarInt(&packet, int32(payload.Len()))
|
||||
packet.Write(payload.Bytes())
|
||||
|
||||
hs, err := ReadHandshake(&packet)
|
||||
if err != nil {
|
||||
t.Fatalf("read handshake: %v", err)
|
||||
}
|
||||
if hs.ServerAddress != "demo.play.example.net" {
|
||||
t.Fatalf("address %q", hs.ServerAddress)
|
||||
}
|
||||
if hs.ServerPort != 25565 {
|
||||
t.Fatalf("port %d", hs.ServerPort)
|
||||
}
|
||||
}
|
||||
|
||||
func writeVarInt(buf *bytes.Buffer, value int32) {
|
||||
for {
|
||||
temp := byte(value & 0x7F)
|
||||
value >>= 7
|
||||
if value != 0 {
|
||||
temp |= 0x80
|
||||
}
|
||||
buf.WriteByte(temp)
|
||||
if value == 0 {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func writeString(buf *bytes.Buffer, value string) {
|
||||
writeVarInt(buf, int32(len(value)))
|
||||
buf.WriteString(value)
|
||||
}
|
||||
Reference in New Issue
Block a user