52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package protocol
|
|
|
|
import "testing"
|
|
|
|
func TestLoopbackUsesFramePayload(t *testing.T) {
|
|
client, daemon := NewLoopbackPair()
|
|
defer client.Close()
|
|
defer daemon.Close()
|
|
|
|
sent, err := NewFrame(FrameInput, Input{PaneID: "p_123456", Bytes: []byte("hello")})
|
|
if err != nil {
|
|
t.Fatalf("NewFrame: %v", err)
|
|
}
|
|
if err := client.Send(sent); err != nil {
|
|
t.Fatalf("Send: %v", err)
|
|
}
|
|
got, err := daemon.Recv()
|
|
if err != nil {
|
|
t.Fatalf("Recv: %v", err)
|
|
}
|
|
if got.Type != FrameInput {
|
|
t.Fatalf("type = %q, want %q", got.Type, FrameInput)
|
|
}
|
|
payload, err := Decode[Input](got)
|
|
if err != nil {
|
|
t.Fatalf("Decode: %v", err)
|
|
}
|
|
if payload.PaneID != "p_123456" || string(payload.Bytes) != "hello" {
|
|
t.Fatalf("payload = %#v", payload)
|
|
}
|
|
}
|
|
|
|
func TestLoopbackCopiesPayloadOnSend(t *testing.T) {
|
|
client, daemon := NewLoopbackPair()
|
|
defer client.Close()
|
|
defer daemon.Close()
|
|
|
|
f := Frame{Type: FramePaneChunk, Payload: []byte(`{"pane_id":"p","bytes":"aGVsbG8="}`)}
|
|
if err := client.Send(f); err != nil {
|
|
t.Fatalf("Send: %v", err)
|
|
}
|
|
f.Payload[0] = 'x'
|
|
|
|
got, err := daemon.Recv()
|
|
if err != nil {
|
|
t.Fatalf("Recv: %v", err)
|
|
}
|
|
if got.Payload[0] != '{' {
|
|
t.Fatalf("payload was retained instead of copied: %q", string(got.Payload))
|
|
}
|
|
}
|