The command holds no credential: it asks the local socket, which answers only the rows ask.
64 lines
1.8 KiB
Go
64 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"mesh-delivery-view/internal/view"
|
|
)
|
|
|
|
func serve(t *testing.T) string {
|
|
t.Helper()
|
|
m := view.New()
|
|
m.Apply(view.Entry{Bucket: view.AssignmentsBucket, Key: "a.x", Value: []byte(`{"node":"a","module":"x","build":"b1"}`)})
|
|
dir, err := os.MkdirTemp(os.Getenv("TMPDIR"), "c")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Cleanup(func() { os.RemoveAll(dir) })
|
|
l, err := view.ListenSocket(filepath.Join(dir, "cli.sock"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
go view.ServeSocket(ctx, l, m)
|
|
t.Cleanup(cancel)
|
|
return filepath.Join(dir, "cli.sock")
|
|
}
|
|
|
|
func TestPrintsATable(t *testing.T) { // 1134/AC6
|
|
var out, errOut bytes.Buffer
|
|
if code := run(nil, serve(t), &out, &errOut); code != 0 {
|
|
t.Fatalf("exit %d: %s", code, errOut.String())
|
|
}
|
|
if !strings.Contains(out.String(), "MODULE") || !strings.Contains(out.String(), "no have yet") {
|
|
t.Fatalf("table = %q", out.String())
|
|
}
|
|
}
|
|
|
|
func TestJSONFlag(t *testing.T) { // 1134/AC6
|
|
var out, errOut bytes.Buffer
|
|
if code := run([]string{"--json"}, serve(t), &out, &errOut); code != 0 {
|
|
t.Fatalf("exit %d: %s", code, errOut.String())
|
|
}
|
|
var s view.Snapshot
|
|
if err := json.Unmarshal(out.Bytes(), &s); err != nil || len(s.Rows) != 1 || s.Rows[0].Module != "x" {
|
|
t.Fatalf("json = %q, %v", out.String(), err)
|
|
}
|
|
}
|
|
|
|
func TestFailsLoudWhenTheViewIsNotThere(t *testing.T) { // 1134/AC6
|
|
var out, errOut bytes.Buffer
|
|
if code := run(nil, filepath.Join(os.Getenv("TMPDIR"), "none.sock"), &out, &errOut); code == 0 || errOut.Len() == 0 {
|
|
t.Fatalf("exit %d, stderr %q", code, errOut.String())
|
|
}
|
|
if code := run([]string{"--start"}, "", &out, &errOut); code != 2 {
|
|
t.Fatalf("an unknown flag must exit 2, got %d", code)
|
|
}
|
|
}
|