open-consul/command/members/members_test.go
Matt Keeler a34f8c751e
Pass a testing.T into NewTestAgent and TestAgent.Start (#5342)
This way we can avoid unnecessary panics which cause other tests not to run.

This doesn't remove all the possibilities for panics causing other tests not to run, it just fixes the TestAgent
2019-02-14 10:59:14 -05:00

123 lines
2.5 KiB
Go

package members
import (
"fmt"
"strings"
"testing"
"github.com/hashicorp/consul/agent"
"github.com/mitchellh/cli"
)
func TestMembersCommand_noTabs(t *testing.T) {
t.Parallel()
if strings.ContainsRune(New(cli.NewMockUi()).Help(), '\t') {
t.Fatal("help has tabs")
}
}
func TestMembersCommand(t *testing.T) {
t.Parallel()
a := agent.NewTestAgent(t, t.Name(), ``)
defer a.Shutdown()
ui := cli.NewMockUi()
c := New(ui)
c.flags.SetOutput(ui.ErrorWriter)
args := []string{"-http-addr=" + a.HTTPAddr()}
code := c.Run(args)
if code != 0 {
t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String())
}
// Name
if !strings.Contains(ui.OutputWriter.String(), a.Config.NodeName) {
t.Fatalf("bad: %#v", ui.OutputWriter.String())
}
// Agent type
if !strings.Contains(ui.OutputWriter.String(), "server") {
t.Fatalf("bad: %#v", ui.OutputWriter.String())
}
// Datacenter
if !strings.Contains(ui.OutputWriter.String(), "dc1") {
t.Fatalf("bad: %#v", ui.OutputWriter.String())
}
}
func TestMembersCommand_WAN(t *testing.T) {
t.Parallel()
a := agent.NewTestAgent(t, t.Name(), ``)
defer a.Shutdown()
ui := cli.NewMockUi()
c := New(ui)
c.flags.SetOutput(ui.ErrorWriter)
args := []string{"-http-addr=" + a.HTTPAddr(), "-wan"}
code := c.Run(args)
if code != 0 {
t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String())
}
if !strings.Contains(ui.OutputWriter.String(), fmt.Sprintf("%d", a.Config.SerfPortWAN)) {
t.Fatalf("bad: %#v", ui.OutputWriter.String())
}
}
func TestMembersCommand_statusFilter(t *testing.T) {
t.Parallel()
a := agent.NewTestAgent(t, t.Name(), ``)
defer a.Shutdown()
ui := cli.NewMockUi()
c := New(ui)
c.flags.SetOutput(ui.ErrorWriter)
args := []string{
"-http-addr=" + a.HTTPAddr(),
"-status=a.*e",
}
code := c.Run(args)
if code != 0 {
t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String())
}
if !strings.Contains(ui.OutputWriter.String(), a.Config.NodeName) {
t.Fatalf("bad: %#v", ui.OutputWriter.String())
}
}
func TestMembersCommand_statusFilter_failed(t *testing.T) {
t.Parallel()
a := agent.NewTestAgent(t, t.Name(), ``)
defer a.Shutdown()
ui := cli.NewMockUi()
c := New(ui)
c.flags.SetOutput(ui.ErrorWriter)
args := []string{
"-http-addr=" + a.HTTPAddr(),
"-status=(fail|left)",
}
code := c.Run(args)
if code == 1 {
t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String())
}
if strings.Contains(ui.OutputWriter.String(), a.Config.NodeName) {
t.Fatalf("bad: %#v", ui.OutputWriter.String())
}
if code != 2 {
t.Fatalf("bad: %d", code)
}
}