1// +build pro ent
2
3package command
4
5import (
6	"strings"
7	"testing"
8
9	"github.com/mitchellh/cli"
10)
11
12func TestNamespaceListCommand_Implements(t *testing.T) {
13	t.Parallel()
14	var _ cli.Command = &NamespaceListCommand{}
15}
16
17func TestNamespaceListCommand_Fails(t *testing.T) {
18	t.Parallel()
19	ui := new(cli.MockUi)
20	cmd := &NamespaceListCommand{Meta: Meta{Ui: ui}}
21
22	// Fails on misuse
23	if code := cmd.Run([]string{"some", "bad", "args"}); code != 1 {
24		t.Fatalf("expected exit code 1, got: %d", code)
25	}
26	if out := ui.ErrorWriter.String(); !strings.Contains(out, commandErrorText(cmd)) {
27		t.Fatalf("expected help output, got: %s", out)
28	}
29	ui.ErrorWriter.Reset()
30
31	if code := cmd.Run([]string{"-address=nope"}); code != 1 {
32		t.Fatalf("expected exit code 1, got: %d", code)
33	}
34	if out := ui.ErrorWriter.String(); !strings.Contains(out, "Error retrieving namespaces") {
35		t.Fatalf("expected failed query error, got: %s", out)
36	}
37	ui.ErrorWriter.Reset()
38}
39
40func TestNamespaceListCommand_List(t *testing.T) {
41	t.Parallel()
42
43	// Create a server
44	srv, _, url := testServer(t, true, nil)
45	defer srv.Shutdown()
46
47	ui := new(cli.MockUi)
48	cmd := &NamespaceListCommand{Meta: Meta{Ui: ui}}
49
50	// List should contain default deployment
51	if code := cmd.Run([]string{"-address=" + url}); code != 0 {
52		t.Fatalf("expected exit 0, got: %d; %v", code, ui.ErrorWriter.String())
53	}
54	out := ui.OutputWriter.String()
55	if !strings.Contains(out, "default") || !strings.Contains(out, "Default shared namespace") {
56		t.Fatalf("expected default namespace, got: %s", out)
57	}
58	ui.OutputWriter.Reset()
59
60	// List json
61	if code := cmd.Run([]string{"-address=" + url, "-json"}); code != 0 {
62		t.Fatalf("expected exit 0, got: %d; %v", code, ui.ErrorWriter.String())
63	}
64	out = ui.OutputWriter.String()
65	if !strings.Contains(out, "CreateIndex") {
66		t.Fatalf("expected json output, got: %s", out)
67	}
68	ui.OutputWriter.Reset()
69}
70