github.com/rohankumardubey/nomad@v0.11.8/command/namespace_delete_test.go (about)

     1  // +build pro ent
     2  
     3  package command
     4  
     5  import (
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/hashicorp/nomad/api"
    10  	"github.com/mitchellh/cli"
    11  	"github.com/posener/complete"
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func TestNamespaceDeleteCommand_Implements(t *testing.T) {
    16  	t.Parallel()
    17  	var _ cli.Command = &NamespaceDeleteCommand{}
    18  }
    19  
    20  func TestNamespaceDeleteCommand_Fails(t *testing.T) {
    21  	t.Parallel()
    22  	ui := new(cli.MockUi)
    23  	cmd := &NamespaceDeleteCommand{Meta: Meta{Ui: ui}}
    24  
    25  	// Fails on misuse
    26  	if code := cmd.Run([]string{"some", "bad", "args"}); code != 1 {
    27  		t.Fatalf("expected exit code 1, got: %d", code)
    28  	}
    29  	if out := ui.ErrorWriter.String(); !strings.Contains(out, commandErrorText(cmd)) {
    30  		t.Fatalf("expected help output, got: %s", out)
    31  	}
    32  	ui.ErrorWriter.Reset()
    33  
    34  	if code := cmd.Run([]string{"-address=nope", "foo"}); code != 1 {
    35  		t.Fatalf("expected exit code 1, got: %d", code)
    36  	}
    37  	if out := ui.ErrorWriter.String(); !strings.Contains(out, "deleting namespace") {
    38  		t.Fatalf("connection error, got: %s", out)
    39  	}
    40  	ui.ErrorWriter.Reset()
    41  }
    42  
    43  func TestNamespaceDeleteCommand_Good(t *testing.T) {
    44  	t.Parallel()
    45  
    46  	// Create a server
    47  	srv, client, url := testServer(t, true, nil)
    48  	defer srv.Shutdown()
    49  
    50  	ui := new(cli.MockUi)
    51  	cmd := &NamespaceDeleteCommand{Meta: Meta{Ui: ui}}
    52  
    53  	// Create a namespace to delete
    54  	ns := &api.Namespace{
    55  		Name: "foo",
    56  	}
    57  	_, err := client.Namespaces().Register(ns, nil)
    58  	assert.Nil(t, err)
    59  
    60  	// Delete a namespace
    61  	if code := cmd.Run([]string{"-address=" + url, ns.Name}); code != 0 {
    62  		t.Fatalf("expected exit 0, got: %d; %v", code, ui.ErrorWriter.String())
    63  	}
    64  
    65  	namespaces, _, err := client.Namespaces().List(nil)
    66  	assert.Nil(t, err)
    67  	assert.Len(t, namespaces, 1)
    68  }
    69  
    70  func TestNamespaceDeleteCommand_AutocompleteArgs(t *testing.T) {
    71  	assert := assert.New(t)
    72  	t.Parallel()
    73  
    74  	srv, client, url := testServer(t, true, nil)
    75  	defer srv.Shutdown()
    76  
    77  	ui := new(cli.MockUi)
    78  	cmd := &NamespaceDeleteCommand{Meta: Meta{Ui: ui, flagAddress: url}}
    79  
    80  	// Create a namespace other than default
    81  	ns := &api.Namespace{
    82  		Name: "diddo",
    83  	}
    84  	_, err := client.Namespaces().Register(ns, nil)
    85  	assert.Nil(err)
    86  
    87  	args := complete.Args{Last: "d"}
    88  	predictor := cmd.AutocompleteArgs()
    89  
    90  	res := predictor.Predict(args)
    91  	assert.Equal(1, len(res))
    92  	assert.Equal(ns.Name, res[0])
    93  }