2026-06-01 14:31:15 +08:00

59 lines
1.4 KiB
Go

package main
import (
"bytes"
"encoding/binary"
"encoding/json"
"testing"
)
func TestParsePingCommand(t *testing.T) {
req, err := parseCommand([]string{"ping"})
if err != nil {
t.Fatalf("parseCommand returned error: %v", err)
}
if req.Method != "ping" {
t.Fatalf("method = %q, want ping", req.Method)
}
if req.Params != nil {
t.Fatalf("params = %#v, want nil", req.Params)
}
}
func TestParseAddClientCommand(t *testing.T) {
req, err := parseCommand([]string{"add-client", "--uuid", "abcdefg", "--token", "token1234"})
if err != nil {
t.Fatalf("parseCommand returned error: %v", err)
}
if req.Method != "add_client" {
t.Fatalf("method = %q, want add_client", req.Method)
}
if req.Params["uuid"] != "abcdefg" || req.Params["token"] != "token1234" {
t.Fatalf("params = %#v", req.Params)
}
}
func TestPacket2RoundTrip(t *testing.T) {
req := request{Method: "ping"}
body, err := json.Marshal(req)
if err != nil {
t.Fatalf("json.Marshal returned error: %v", err)
}
var buf bytes.Buffer
if err := writePacket(&buf, body); err != nil {
t.Fatalf("writePacket returned error: %v", err)
}
if got, want := binary.BigEndian.Uint16(buf.Bytes()[:2]), uint16(len(body)); got != want {
t.Fatalf("packet size = %d, want %d", got, want)
}
got, err := readPacket(&buf)
if err != nil {
t.Fatalf("readPacket returned error: %v", err)
}
if !bytes.Equal(got, body) {
t.Fatalf("packet body = %q, want %q", got, body)
}
}