60 lines
1.4 KiB
Go
60 lines
1.4 KiB
Go
package terminal
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestClientMsgRoundTrip(t *testing.T) {
|
|
in := clientMsg{
|
|
Ch: chTerminal,
|
|
ID: "sess-1",
|
|
Type: msgData,
|
|
Data: base64.StdEncoding.EncodeToString([]byte("ls -la\n")),
|
|
Cols: 80,
|
|
Rows: 24,
|
|
}
|
|
raw, err := json.Marshal(in)
|
|
if err != nil {
|
|
t.Fatalf("marshal: %v", err)
|
|
}
|
|
var out clientMsg
|
|
if err := json.Unmarshal(raw, &out); err != nil {
|
|
t.Fatalf("unmarshal: %v", err)
|
|
}
|
|
if out != in {
|
|
t.Fatalf("round-trip mismatch:\n got %+v\nwant %+v", out, in)
|
|
}
|
|
}
|
|
|
|
func TestServerMsgSessionFrameWireShape(t *testing.T) {
|
|
msg := serverMsg{
|
|
Ch: chSessions,
|
|
Type: msgSnapshot,
|
|
Session: &sessionUpdate{
|
|
Seq: 7, ProjectID: "p1", SessionID: "s1", EventType: "session_updated",
|
|
},
|
|
}
|
|
raw, err := json.Marshal(msg)
|
|
if err != nil {
|
|
t.Fatalf("marshal: %v", err)
|
|
}
|
|
// Golden wire shape the client depends on.
|
|
want := `{"ch":"sessions","type":"snapshot","session":{"seq":7,"projectId":"p1","sessionId":"s1","eventType":"session_updated"}}`
|
|
if string(raw) != want {
|
|
t.Fatalf("wire shape:\n got %s\nwant %s", raw, want)
|
|
}
|
|
}
|
|
|
|
func TestServerMsgOmitsEmptyOptionalFields(t *testing.T) {
|
|
raw, err := json.Marshal(serverMsg{Ch: chTerminal, ID: "t1", Type: msgOpened})
|
|
if err != nil {
|
|
t.Fatalf("marshal: %v", err)
|
|
}
|
|
want := `{"ch":"terminal","id":"t1","type":"opened"}`
|
|
if string(raw) != want {
|
|
t.Fatalf("wire shape:\n got %s\nwant %s", raw, want)
|
|
}
|
|
}
|