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