github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/command/server_members_test.go (about) 1 package command 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/mitchellh/cli" 8 ) 9 10 func TestServerMembersCommand_Implements(t *testing.T) { 11 t.Parallel() 12 var _ cli.Command = &ServerMembersCommand{} 13 } 14 15 func TestServerMembersCommand_Run(t *testing.T) { 16 t.Parallel() 17 srv, client, url := testServer(t, false, nil) 18 defer srv.Shutdown() 19 20 ui := new(cli.MockUi) 21 cmd := &ServerMembersCommand{Meta: Meta{Ui: ui}} 22 23 // Get our own node name 24 name, err := client.Agent().NodeName() 25 if err != nil { 26 t.Fatalf("err: %s", err) 27 } 28 29 // Query the members 30 if code := cmd.Run([]string{"-address=" + url}); code != 0 { 31 t.Fatalf("expected exit 0, got: %d", code) 32 } 33 if out := ui.OutputWriter.String(); !strings.Contains(out, name) { 34 t.Fatalf("expected %q in output, got: %s", name, out) 35 } 36 ui.OutputWriter.Reset() 37 38 // Query members with detailed output 39 if code := cmd.Run([]string{"-address=" + url, "-detailed"}); code != 0 { 40 t.Fatalf("expected exit 0, got: %d", code) 41 } 42 if out := ui.OutputWriter.String(); !strings.Contains(out, "Tags") { 43 t.Fatalf("expected tags in output, got: %s", out) 44 } 45 } 46 47 func TestMembersCommand_Fails(t *testing.T) { 48 t.Parallel() 49 ui := new(cli.MockUi) 50 cmd := &ServerMembersCommand{Meta: Meta{Ui: ui}} 51 52 // Fails on misuse 53 if code := cmd.Run([]string{"some", "bad", "args"}); code != 1 { 54 t.Fatalf("expected exit code 1, got: %d", code) 55 } 56 if out := ui.ErrorWriter.String(); !strings.Contains(out, cmd.Help()) { 57 t.Fatalf("expected help output, got: %s", out) 58 } 59 ui.ErrorWriter.Reset() 60 61 // Fails on connection failure 62 if code := cmd.Run([]string{"-address=nope"}); code != 1 { 63 t.Fatalf("expected exit code 1, got: %d", code) 64 } 65 if out := ui.ErrorWriter.String(); !strings.Contains(out, "Error querying servers") { 66 t.Fatalf("expected failed query error, got: %s", out) 67 } 68 }