59 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|