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